#include "Player.h" #include "Area.h" #include "Globals.h" #include "Menu.h" #include "Game.h" #include Player::Player() : Entity( PlayerEntityType::INSTANCE, 1 ), leftHandPosition( 0 ) { setModelDaten( uiFactory.initParam.bildschirm->zGraphicsApi()->getModel( "player" ) ); Bild* b = new Bild(); b->neuBild( 10, 10, 0xFFFFFFFF ); Textur* tex = uiFactory.initParam.bildschirm->zGraphicsApi()->createOrGetTextur( "player", 0 ); if( !tex->zBild() ) tex->setBildZ( b ); else b->release(); Model3DTextur* textur = new Model3DTextur(); textur->setPolygonTextur( 0, dynamic_cast(tex->getThis()) ); textur->setPolygonTextur( 1, dynamic_cast(tex->getThis()) ); textur->setPolygonTextur( 2, dynamic_cast(tex->getThis()) ); textur->setPolygonTextur( 3, dynamic_cast(tex->getThis()) ); textur->setPolygonTextur( 4, dynamic_cast(tex->getThis()) ); textur->setPolygonTextur( 5, tex ); setModelTextur( textur ); for( int i = 0; i < 9; i++ ) { ItemSlot* slot = new ItemSlot( 50, 0, i, 0, ANY_DIRECTION, 0 ); itemBar.add( slot ); addSlot( slot ); } currentGame->setVisibility( this, 1 ); } Player::~Player() {} bool Player::tick( double time ) { cs.lock(); if( currentGame->getCurrentPlayerId() == id ) { currentGame->zKamera()->setPosition( pos + Vec3( 0.f, 0.f, 1.5f ) ); if( target ) { auto t = target->getTarget( currentDimensionId ); if( t.isA() && t.getA() ) currentGame->setTarget( t.getA() ); if( t.isB() && t.getB() ) currentGame->setTarget( t.getB() ); if( (t.isA() && t.getA()) || (t.isB() && t.getB()) ) ((Game*)(Menu*)menuRegister->get( "game" ))->updatePosition( pos, 1, t.isA() ? t.getA()->getPos() : t.getB()->getPos() ); else ((Game*)(Menu*)menuRegister->get( "game" ))->updatePosition( pos, 0, { 0, 0, 0 } ); if( t.isA() && t.getA() ) t.getA()->release(); if( t.isB() && t.getB() ) t.getB()->release(); } else { currentGame->setTarget( 0 ); ((Game*)(Menu*)menuRegister->get( "game" ))->updatePosition( pos, 0, { 0, 0, 0 } ); } ((Game*)(Menu*)menuRegister->get( "game" ))->updateInventory( itemBar, leftHandPosition ); } cs.unlock(); return Entity::tick( time ); } PlayerEntityType::PlayerEntityType() : EntityType( ID ) {} void PlayerEntityType::loadSuperEntity( Entity* zEntity, Framework::StreamReader* zReader ) const { Player* zPlayer = dynamic_cast(zEntity); if( !zPlayer ) throw "PlayerEntityType::loadSuperEntity was called with an entity witch is not an instance of Player"; zReader->lese( (char*)&zPlayer->leftHandPosition, 4 ); EntityType::loadSuperEntity( zEntity, zReader ); } Entity* PlayerEntityType::createEntity() const { return new Player(); }