#pragma once #include "Entity.h" #include "EntityType.h" class PlayerEntityType; class Player : public Entity { public: class Key { public: const static __int64 MOVE_FRONT = 0x1; const static __int64 MOVE_BACK = 0x2; const static __int64 MOVE_LEFT = 0x4; const static __int64 MOVE_RIGHT = 0x8; const static __int64 MOVE_UP = 0x10; const static __int64 MOVE_DOWN = 0x20; const static __int64 ROTATE_LEFT = 0x40; const static __int64 ROTATE_RIGHT = 0x80; }; private: Framework::Text name; __int64 keyState; public: Player( Framework::Vec3 location, int dimensionId, int entityId ); void setName( Framework::Text name ); const char* getName() const; void tick( const Dimension* zDimension, Game* zGame ) override; void api( Framework::StreamReader* zRequest, NetworkResponse* zResponse ) override; friend PlayerEntityType; }; class PlayerEntityType : public EntityType { REGISTRABLE( PlayerEntityType ) protected: virtual void loadSuperEntity( Entity* zEntity, Framework::StreamReader* zReader ) const override; virtual void saveSuperEntity( Entity* zEntity, Framework::StreamWriter* zWriter ) const override; public: PlayerEntityType(); virtual Entity* createEntity( Framework::Vec3 position, int dimensionId, Game* zTarget, int entityId ) const override; }; REGISTER( PlayerEntityType, EntityType )