Player.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #include "Player.h"
  2. #include "Game.h"
  3. Player::Player( Framework::Vec3<float> location, int dimensionId, int entityId )
  4. : Entity( PlayerEntityType::INSTANCE, location, dimensionId, entityId )
  5. {
  6. maxHP = 10;
  7. currentHP = 10;
  8. stamina = 10;
  9. maxStamina = 10;
  10. hunger = 10;
  11. maxHunger = 10;
  12. thirst = 10;
  13. maxThirst = 10;
  14. keyState = 0;
  15. }
  16. void Player::setName( Framework::Text name )
  17. {
  18. this->name = name;
  19. }
  20. const char* Player::getName() const
  21. {
  22. return name;
  23. }
  24. void Player::tick( const Dimension* zDimension, Game* zGame )
  25. {
  26. if( (keyState | Key::MOVE_FRONT) == keyState )
  27. location += {faceDir.x * 0.05f, faceDir.y * 0.05f, 0};
  28. if( (keyState | Key::MOVE_BACK) == keyState )
  29. location += {-faceDir.x * 0.05f, -faceDir.y * 0.05f, 0};
  30. if( (keyState | Key::MOVE_RIGHT) == keyState )
  31. {
  32. Vec2<float> right = Vec2<float>( faceDir ).CW90();
  33. location += {right.x * 0.05f, right.y * 0.05f, 0};
  34. }
  35. if( (keyState | Key::MOVE_LEFT) == keyState )
  36. {
  37. Vec2<float> left = Vec2<float>( faceDir ).CCW90();
  38. location += {left.x * 0.05f, left.y * 0.05f, 0};
  39. }
  40. if( (keyState | Key::MOVE_UP) == keyState )
  41. location += {0, 0, 0.05f};
  42. if( (keyState | Key::MOVE_DOWN) == keyState )
  43. location += {0, 0, -0.05f};
  44. if( (keyState | Key::ROTATE_LEFT) == keyState )
  45. faceDir = faceDir.rotation( -0.05f );
  46. if( (keyState | Key::ROTATE_RIGHT) == keyState )
  47. faceDir = faceDir.rotation( 0.05f );
  48. }
  49. void Player::api( Framework::StreamReader* zRequest, NetworkResponse* zResponse )
  50. {
  51. char byte;
  52. zRequest->lese( &byte, 1 );
  53. switch( byte )
  54. {
  55. case 0:
  56. zRequest->lese( &byte, 1 );
  57. switch( byte )
  58. {
  59. case 0:
  60. keyState = keyState & ~Key::MOVE_FRONT;
  61. break;
  62. case 1:
  63. keyState = keyState & ~Key::MOVE_LEFT;
  64. break;
  65. case 2:
  66. keyState = keyState & ~Key::MOVE_BACK;
  67. break;
  68. case 3:
  69. keyState = keyState & ~Key::MOVE_RIGHT;
  70. break;
  71. case 4:
  72. keyState = keyState & ~Key::MOVE_UP;
  73. break;
  74. case 5:
  75. keyState = keyState & ~Key::ROTATE_LEFT;
  76. break;
  77. case 6:
  78. keyState = keyState & ~Key::ROTATE_RIGHT;
  79. break;
  80. case 7:
  81. keyState = keyState & ~Key::MOVE_DOWN;
  82. break;
  83. }
  84. break;
  85. case 1:
  86. zRequest->lese( &byte, 1 );
  87. switch( byte )
  88. {
  89. case 0:
  90. keyState = keyState | Key::MOVE_FRONT;
  91. break;
  92. case 1:
  93. keyState = keyState | Key::MOVE_LEFT;
  94. break;
  95. case 2:
  96. keyState = keyState | Key::MOVE_BACK;
  97. break;
  98. case 3:
  99. keyState = keyState | Key::MOVE_RIGHT;
  100. break;
  101. case 4:
  102. keyState = keyState | Key::MOVE_UP;
  103. break;
  104. case 5:
  105. keyState = keyState | Key::ROTATE_LEFT;
  106. break;
  107. case 6:
  108. keyState = keyState | Key::ROTATE_RIGHT;
  109. break;
  110. case 7:
  111. keyState = keyState | Key::MOVE_DOWN;
  112. break;
  113. }
  114. break;
  115. }
  116. }
  117. PlayerEntityType::PlayerEntityType()
  118. : EntityType( ID )
  119. {}
  120. void PlayerEntityType::loadSuperEntity( Entity* zEntity, Framework::StreamReader* zReader ) const
  121. {}
  122. void PlayerEntityType::saveSuperEntity( Entity* zEntity, Framework::StreamWriter* zWriter ) const
  123. {}
  124. Entity* PlayerEntityType::createEntity( Framework::Vec3<float> position, int dimensionId, Game* zTarget, int entityId ) const
  125. {
  126. return new Player( position, dimensionId, entityId );
  127. }