12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #pragma once
- #include <Array.h>
- #include <Either.h>
- #include <Vec3.h>
- #include <Writer.h>
- #include "ModelInfo.h"
- class Item;
- class Block;
- class Game;
- class ItemType;
- class BlockTypeEnum
- {
- public:
- static const int NO_BLOCK = 0;
- static const int AIR = 1;
- };
- class BlockType : public virtual Framework::ReferenceCounter
- {
- private:
- int id;
- ModelInfo* model;
- int initialMaxHP;
- const bool needsClientInstance;
- bool lightSource;
- Framework::Text name;
- const bool needModelSubscription;
- int initialMapColor;
- Block* defaultBlock;
- Framework::RCArray<Framework::Text> groupNames;
- float hardness;
- protected:
- BlockType(Block* defaultBlock,
- ModelInfo* model,
- bool needsClientInstance,
- int initialMaxHP,
- bool lightSource,
- Framework::Text name,
- bool needModelSubscription,
- int initialMapColor,
- Framework::RCArray<Framework::Text> groupNames,
- float hardness);
- virtual ~BlockType();
- virtual void loadSuperBlock(
- Block* zBlock, Framework::StreamReader* zReader, int dimensionId) const;
- virtual void saveSuperBlock(
- Block* zBlock, Framework::StreamWriter* zWriter) const;
- virtual void createSuperBlock(Block* zBlock, Item* zItem) const;
- virtual void createSuperItem(Block* zBlock, Item* zItem) const;
- virtual Block* createBlock(
- Framework::Vec3<int> position, int dimensionId) const
- = 0;
- virtual Item* createItem() const = 0;
- public:
- virtual bool initialize(Game* zGame);
- virtual Framework::Text getTargetUIML() const;
- virtual Block* loadBlock(Framework::Vec3<int> position,
- Framework::StreamReader* zReader,
- int dimensionId) const;
- virtual void saveBlock(
- Block* zBlock, Framework::StreamWriter* zWriter) const;
- virtual Item* getItemFromBlock(Block* zBlock) const;
- virtual Block* createBlockAt(
- Framework::Vec3<int> position, int dimensionId, Item* zUsedItem) const;
- virtual const Block* zDefault() const;
- bool doesNeedClientInstance() const;
- int getId() const;
- int getInitialMaxHP() const;
- bool isLightSource() const;
- BlockType* initializeDefault();
- const char* getName() const;
- const bool doesNeedModelSubscription() const;
- void writeTypeInfo(Framework::StreamWriter* zWriter) const;
- virtual bool isFluid() const;
- virtual unsigned char getFlowDistance() const;
- void setTypeId(int id);
- ModelInfo* zModel() const;
- int getMapColor() const;
- virtual ItemType* createItemType() const = 0;
- const Framework::RCArray<Framework::Text>& getGroupNames() const;
- float getHardness() const;
- static int getTypeId(const char* name);
- static Framework::Text getTypeName(int id);
- };
- const Block* getDefaultBlock(Framework::Either<Block*, int> b);
|