#include "..\Global\Variablen.h" #include #include #include #include #include #include "..\Global\Render.h" #include #include #include #include #include "..\Global\Initialisierung.h" #include #include #include #include void fensterVS( void *p, void *f ) { PostQuitMessage( 0 ); } bool fensterME( void *p, void *f, MausEreignis me ) { return 1; } bool fensterTE( void *p, void *f, TastaturEreignis te ) { #ifdef _DEBUG std::cout.flush(); #endif return 1; } #ifdef _DEBUG template class OutputDebugStringBuf : public std::basic_stringbuf { public: explicit OutputDebugStringBuf() : _buffer( 256 ) { setg( nullptr, nullptr, nullptr ); setp( _buffer.data(), _buffer.data(), _buffer.data() + _buffer.size() ); } ~OutputDebugStringBuf() { } static_assert( std::is_same::value || std::is_same::value, "OutputDebugStringBuf only supports char and wchar_t types" ); int sync() try { MessageOutputer()( pbase(), pptr() ); setp( _buffer.data(), _buffer.data(), _buffer.data() + _buffer.size() ); return 0; } catch( ... ) { return -1; } int overflow( int c = TTraits::eof() ) { auto syncRet = sync(); if( c != TTraits::eof() ) { _buffer[ 0 ] = c; setp( _buffer.data(), _buffer.data() + 1, _buffer.data() + _buffer.size() ); } return syncRet == -1 ? TTraits::eof() : 0; } private: std::vector _buffer; template struct MessageOutputer; template<> struct MessageOutputer> { template void operator()( TIterator begin, TIterator end ) const { std::string s( begin, end ); OutputDebugStringA( s.c_str() ); } }; template<> struct MessageOutputer> { template void operator()( TIterator begin, TIterator end ) const { std::wstring s( begin, end ); OutputDebugStringW( s.c_str() ); } }; }; #endif int KSGStart Framework::Start( Startparam p ) { #ifdef _DEBUG static OutputDebugStringBuf> charDebugOutput; std::cout.rdbuf( &charDebugOutput ); #endif Network::Start( 50 ); Punkt bildschirmGröße = BildschirmGröße(); bildschirmGröße.x++; bildschirmGröße.y++; WNDCLASS wc = F_Normal( p.hinst ); wc.lpszClassName = "Game Client"; /*WFenster *fenster = new WFenster(); fenster->erstellen( WS_OVERLAPPEDWINDOW, wc ); fenster->setSize( 700, 770 ); fenster->setPosition( Bildschirmmitte( fenster->getThis() ) ); fenster->setAnzeigeModus( 1 ); fenster->setVSchließAktion( fensterVS ); fenster->setMausAktion( fensterME ); fenster->setTastaturAktion( fensterTE ); Bildschirm *bildschirm = new Bildschirm3D( fenster->getThis() ); fenster->setBildschirm( bildschirm->getThis() );*/ WFenster *fenster = new WFenster(); fenster->erstellen( WS_POPUP, wc ); fenster->setPosition( Punkt( 0, 0 ) ); fenster->setSize( bildschirmGröße ); fenster->setMausAktion( fensterME ); fenster->setTastaturAktion( fensterTE ); fenster->setVSchließAktion( fensterVS ); Bildschirm *bildschirm = new Bildschirm3D( fenster->getThis() ); fenster->setBildschirm( bildschirm->getThis() ); fenster->setAnzeigeModus( 1 ); fenster->setFokus(); bildschirm->update(); bildschirm->render(); LTDSDatei *schriftDatei = new LTDSDatei(); schriftDatei->setPfad( new Text( "data/schriften/normal.ltds" ) ); schriftDatei->leseDaten(); Schrift *schrift = schriftDatei->ladeSchrift(); schriftDatei = schriftDatei->release(); Render *render = new Render( schrift->getThis() ); render->setBildschirm( bildschirm->getThis() ); initVariables( schrift, bildschirm ); render->start(); StartNachrichtenSchleife(); render->beenden(); render = render->release(); bildschirm->removeMember( vorLogin->zFenster() ); bildschirm->removeMember( nachLogin ); releaseVariables(); schrift = schrift->release(); bildschirm = bildschirm->release(); fenster->setBildschirm( 0 ); fenster->zerstören(); fenster = fenster->release(); Network::Exit(); DateiPfadErstellen( new Text( "data/tmp/keinabsturz" ) ); return 0; }