Player.cpp 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "Player.h"
  2. #include "Area.h"
  3. #include "Globals.h"
  4. #include "Menu.h"
  5. #include "Game.h"
  6. #include <Bild.h>
  7. Player::Player()
  8. : Entity( PlayerEntityType::INSTANCE, 1 ),
  9. leftHandPosition( 0 )
  10. {
  11. setModelDaten( window->zBildschirm()->zGraphicsApi()->getModel( "player" ) );
  12. Bild* b = new Bild();
  13. b->neuBild( 10, 10, 0xFFFFFFFF );
  14. Textur* tex = currentGame->zScreen()->zGraphicsApi()->createOrGetTextur( "player", 0 );
  15. if( !tex->zBild() )
  16. tex->setBildZ( b );
  17. else
  18. b->release();
  19. Model3DTextur* textur = new Model3DTextur();
  20. textur->setPolygonTextur( 0, dynamic_cast<Textur*>(tex->getThis()) );
  21. textur->setPolygonTextur( 1, dynamic_cast<Textur*>(tex->getThis()) );
  22. textur->setPolygonTextur( 2, dynamic_cast<Textur*>(tex->getThis()) );
  23. textur->setPolygonTextur( 3, dynamic_cast<Textur*>(tex->getThis()) );
  24. textur->setPolygonTextur( 4, dynamic_cast<Textur*>(tex->getThis()) );
  25. textur->setPolygonTextur( 5, tex );
  26. setModelTextur( textur );
  27. for( int i = 0; i < 9; i++ )
  28. {
  29. ItemSlot* slot = new ItemSlot( 50, 0, i, 0, ANY_DIRECTION, 0 );
  30. itemBar.add( slot );
  31. addSlot( slot );
  32. }
  33. currentGame->setVisibility( this, 1 );
  34. }
  35. Player::~Player()
  36. {}
  37. bool Player::tick( double time )
  38. {
  39. cs.lock();
  40. if( currentGame->getCurrentPlayerId() == id )
  41. {
  42. currentGame->zKamera()->setPosition( pos + Vec3<float>( 0.f, 0.f, 1.5f ) );
  43. if( target )
  44. {
  45. auto t = target->getTarget( currentDimensionId );
  46. if( t.isA() && t.getA() )
  47. currentGame->setTarget( t.getA() );
  48. if( t.isB() && t.getB() )
  49. currentGame->setTarget( t.getB() );
  50. if( (t.isA() && t.getA()) || (t.isB() && t.getB()) )
  51. ((Game*)(Menu*)menuRegister->get( "game" ))->updatePosition( pos, 1, t.isA() ? t.getA()->getPos() : t.getB()->getPos() );
  52. else
  53. ((Game*)(Menu*)menuRegister->get( "game" ))->updatePosition( pos, 0, { 0, 0, 0 } );
  54. if( t.isA() && t.getA() )
  55. t.getA()->release();
  56. if( t.isB() && t.getB() )
  57. t.getB()->release();
  58. }
  59. else
  60. {
  61. currentGame->setTarget( 0 );
  62. ((Game*)(Menu*)menuRegister->get( "game" ))->updatePosition( pos, 0, { 0, 0, 0 } );
  63. }
  64. ((Game*)(Menu*)menuRegister->get( "game" ))->updateInventory( itemBar, leftHandPosition );
  65. }
  66. cs.unlock();
  67. return Entity::tick( time );
  68. }
  69. PlayerEntityType::PlayerEntityType()
  70. : EntityType( ID )
  71. {}
  72. void PlayerEntityType::loadSuperEntity( Entity* zEntity, Framework::StreamReader* zReader ) const
  73. {
  74. Player* zPlayer = dynamic_cast<Player*>(zEntity);
  75. if( !zPlayer )
  76. throw "PlayerEntityType::loadSuperEntity was called with an entity witch is not an instance of Player";
  77. zReader->lese( (char*)&zPlayer->leftHandPosition, 4 );
  78. EntityType::loadSuperEntity( zEntity, zReader );
  79. }
  80. Entity* PlayerEntityType::createEntity() const
  81. {
  82. return new Player();
  83. }