#include "Player.h" #include "Game.h" Player::Player( Framework::Vec3 location, int dimensionId, int entityId ) : Entity( PlayerEntityType::INSTANCE, location, dimensionId, entityId ) { maxHP = 10; currentHP = 10; stamina = 10; maxStamina = 10; hunger = 10; maxHunger = 10; thirst = 10; maxThirst = 10; keyState = 0; } void Player::setName( Framework::Text name ) { this->name = name; } const char* Player::getName() const { return name; } void Player::tick( const Dimension* zDimension, Game* zGame ) { if( (keyState | Key::MOVE_FRONT) == keyState ) location += {faceDir.x * 0.05f, faceDir.y * 0.05f, 0}; if( (keyState | Key::MOVE_BACK) == keyState ) location += {-faceDir.x * 0.05f, -faceDir.y * 0.05f, 0}; if( (keyState | Key::MOVE_RIGHT) == keyState ) { Vec2 right = Vec2( faceDir ).CW90(); location += {right.x * 0.05f, right.y * 0.05f, 0}; } if( (keyState | Key::MOVE_LEFT) == keyState ) { Vec2 left = Vec2( faceDir ).CCW90(); location += {left.x * 0.05f, left.y * 0.05f, 0}; } if( (keyState | Key::MOVE_UP) == keyState ) location += {0, 0, 0.05f}; if( (keyState | Key::MOVE_DOWN) == keyState ) location += {0, 0, -0.05f}; if( (keyState | Key::ROTATE_LEFT) == keyState ) faceDir = faceDir.rotation( -0.05f ); if( (keyState | Key::ROTATE_RIGHT) == keyState ) faceDir = faceDir.rotation( 0.05f ); } void Player::api( Framework::StreamReader* zRequest, NetworkResponse* zResponse ) { char byte; zRequest->lese( &byte, 1 ); switch( byte ) { case 0: zRequest->lese( &byte, 1 ); switch( byte ) { case 0: keyState = keyState & ~Key::MOVE_FRONT; break; case 1: keyState = keyState & ~Key::MOVE_LEFT; break; case 2: keyState = keyState & ~Key::MOVE_BACK; break; case 3: keyState = keyState & ~Key::MOVE_RIGHT; break; case 4: keyState = keyState & ~Key::MOVE_UP; break; case 5: keyState = keyState & ~Key::ROTATE_LEFT; break; case 6: keyState = keyState & ~Key::ROTATE_RIGHT; break; case 7: keyState = keyState & ~Key::MOVE_DOWN; break; } break; case 1: zRequest->lese( &byte, 1 ); switch( byte ) { case 0: keyState = keyState | Key::MOVE_FRONT; break; case 1: keyState = keyState | Key::MOVE_LEFT; break; case 2: keyState = keyState | Key::MOVE_BACK; break; case 3: keyState = keyState | Key::MOVE_RIGHT; break; case 4: keyState = keyState | Key::MOVE_UP; break; case 5: keyState = keyState | Key::ROTATE_LEFT; break; case 6: keyState = keyState | Key::ROTATE_RIGHT; break; case 7: keyState = keyState | Key::MOVE_DOWN; break; } break; } } PlayerEntityType::PlayerEntityType() : EntityType( ID ) {} void PlayerEntityType::loadSuperEntity( Entity* zEntity, Framework::StreamReader* zReader ) const {} void PlayerEntityType::saveSuperEntity( Entity* zEntity, Framework::StreamWriter* zWriter ) const {} Entity* PlayerEntityType::createEntity( Framework::Vec3 position, int dimensionId, Game* zTarget, int entityId ) const { return new Player( position, dimensionId, entityId ); }