#include "Game.h" #include "Initialisierung.h" #include "Globals.h" #include #include Game::Game( Bildschirm* zScreen ) : Menu( zScreen ) { logout = initKnopf( 10, 10, 200, 20, Knopf::Style::Normal, "Verlassen" ); logout->setMausEreignis( [this, zScreen]( void* p, void* o, MausEreignis me ) { if( me.id == ME_RLinks ) { logout->removeStyle( Knopf::Style::Erlaubt ); new AsynchronCall( [this, zScreen]() { if( network->leaveGame() ) { currentGame->release(); currentGame = 0; zScreen->lock(); hide(); menuRegister->get( "directConnect" )->show(); zScreen->unlock(); } logout->addStyle( Knopf::Style::Erlaubt ); } ); } return 1; } ); elements.add( logout ); debug = initTextFeld( 10, 40, 500, 40, TextFeld::Style::Text | TextFeld::Style::Mehrzeilig, "" ); elements.add( debug ); invB = new Bild(); invB->neuBild( zScreen->getBackBufferSize().x - 20, 50, 0 ); invB->setAlpha3D( 1 ); inventory = initBildZ( 10, zScreen->getBackBufferSize().y - 60, zScreen->getBackBufferSize().x - 20, 50, BildZ::Style::Sichtbar | BildZ::Style::Alpha, invB ); elements.add( inventory ); } void Game::updatePosition( Vec3 position, bool target, Vec3 targetPos ) { Text txt = "Position: ("; txt.setPrecision( 2 ); txt += position.x; txt += ", "; txt += position.y; txt += ", "; txt += position.z; txt += ")"; if( target ) { txt += "\nTarget: ("; txt += targetPos.x; txt += ", "; txt += targetPos.y; txt += ", "; txt += targetPos.z; txt += ")"; } debug->setText( txt ); } void Game::updateInventory( Framework::Array& itemBar, int pos ) { invB->fillRegion( 0, 0, invB->getBreite(), invB->getHeight(), 0 ); TextRenderer tr; tr.setSchriftZ( dynamic_cast(uiFactory.initParam.schrift->getThis()) ); tr.setSchriftSize( 12 ); int index = 0; for( auto slot : itemBar ) { if( pos == index ) { invB->fillRegion( 50 * index, 0, 50, 50, 0x7F202020 ); } if( slot && slot->zStack() && slot->zStack()->zItem() ) { Bild* icon = itemIcons->z( slot->zStack()->zItem()->zItemType()->getId() ); invB->alphaBild( 50 * index, 0, 50, 50, *icon ); tr.renderText( 5 + index * 50, 5, slot->zStack()->zItem()->getName(), *invB, 0xFFFFFFFF ); int size = slot->zStack()->getSize(); const char* units[] = { "", "K", "M", "G", "T", "P" }; int i = 0; for( ; i < 6 && size > 1024; i++ ) size = size / 1024; Text count = size; count += units[ i ]; tr.renderText( 45 - tr.getTextBreite( count ) + index * 50, 45 - tr.getTextHeight( count ), count, *invB, 0xFFFFFFFF ); } index++; } inventory->setRender(); }