Player.cpp 2.8 KB

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