// CMT.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include #include #include #include #include "SDL_ttf.h" #include "SDL_mixer.h" #include "SDL_Extensions.h" #include "SDL_framerate.h" #include "CGameInfo.h" #include "mapHandler.h" #include "global.h" #include "CPreGame.h" #include "CConsoleHandler.h" #include "CCursorHandler.h" #include "CPathfinder.h" #include "CGameState.h" #include "CCallback.h" #include "CPlayerInterface.h" #include "CLuaHandler.h" #include "CLua.h" #include "CAdvmapInterface.h" #include "hch/CBuildingHandler.h" #include "hch/CVideoHandler.h" #include "hch/CAbilityHandler.h" #include "hch/CHeroHandler.h" #include "hch/CCreatureHandler.h" #include "hch/CSpellHandler.h" #include "hch/CMusicHandler.h" #include "hch/CLodHandler.h" #include "hch/CDefHandler.h" #include "hch/CAmbarCendamo.h" #include "hch/CGeneralTextHandler.h" #include "client/Graphics.h" #include "client/Client.h" #include "lib/Connection.h" #include "lib/VCMI_Lib.h" std::string NAME = NAME_VER + std::string(" (client)"); DLL_EXPORT void initDLL(CLodHandler *b); SDL_Surface * screen, * screen2; extern SDL_Surface * CSDL_Ext::std32bppSurface; std::queue events; boost::mutex eventsM; TTF_Font * TNRB16, *TNR, *GEOR13, *GEORXX, *GEORM, *GEOR16; #ifndef __GNUC__ int _tmain(int argc, _TCHAR* argv[]) #else int main(int argc, _TCHAR* argv[]) #endif { std::cout.flags(ios::unitbuf); std::cout << NAME << std::endl; srand ( time(NULL) ); CPG=NULL; atexit(SDL_Quit); CGameInfo * cgi = CGI = new CGameInfo; //contains all global informations about game (texts, lodHandlers, map handler itp.) //CLuaHandler luatest; //luatest.test(); //CBIKHandler cb; //cb.open("CSECRET.BIK"); std::cout << "Starting... " << std::endl; THC timeHandler tmh, total, pomtime; if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_AUDIO/*|SDL_INIT_EVENTTHREAD*/)==0) { screen = SDL_SetVideoMode(800,600,24,SDL_SWSURFACE|SDL_DOUBLEBUF/*|SDL_FULLSCREEN*/); //initializing important global surface THC std::cout<<"\tInitializing screen: "<initMusics(); //audio initialized cgi->consoleh = new CConsoleHandler; cgi->mush = mush; THC std::cout<<"\tInitializing sound: "<spriteh = new CLodHandler(); cgi->spriteh->init("Data\\H3sprite.lod","Sprites"); BitmapHandler::bitmaph = cgi->bitmaph = new CLodHandler; cgi->bitmaph->init("Data\\H3bitmap.lod","Data"); THC std::cout<<"Loading .lod files: "<bitmaph); CGI->arth = VLC->arth; CGI->creh = VLC->creh; CGI->townh = VLC->townh; CGI->heroh = VLC->heroh; CGI->objh = VLC->objh; CGI->dobjinfo = VLC->dobjinfo; CGI->buildh = VLC->buildh; THC std::cout<<"Initializing VCMI_Lib: "<curh->initCursor(); //cgi->curh->showGraphicCursor(); pomtime.getDif(); cgi->curh = new CCursorHandler; cgi->curh->initCursor(); //cgi->screenh = new CScreenHandler; //cgi->screenh->initScreen(); THC std::cout<<"\tScreen handler: "<loadAbilities(); cgi->abilh = abilh; THC std::cout<<"\tAbility handler: "< animacje; for(std::vector::iterator i = cgi->heroh->heroClasses.begin();i!=cgi->heroh->heroClasses.end();i++) animacje.push_back(&((*i)->*(&CHeroClass::moveAnim))); graphics->loadHeroAnim(animacje); THC std::cout<<"\tHero animations: "<generaltexth = new CGeneralTextHandler; cgi->generaltexth->load(); THC std::cout<<"Preparing more handlers: "<mush = mush; StartInfo *options = new StartInfo(cpg->runLoop()); /////////////////////////////////////////////////////////////////////////////////////// boost::thread servthr(boost::bind(system,"VCMI_server.exe > server_log.txt")); //runs server executable; //TODO: will it work on non-windows platforms? THC tmh.getDif();pomtime.getDif();//reset timers CSpellHandler * spellh = new CSpellHandler; spellh->loadSpells(); cgi->spellh = spellh; THC std::cout<<"\tSpell handler: "<pathf = new CPathfinder(); THC std::cout<<"\tPathfinder: "<consoleh->runConsole(); THC std::cout<<"\tCallback and console: "<playerint.size(); ++g) //{ // if(!cgi->playerint[g]->human) // continue; // CMinimap & mm = ((CPlayerInterface*)cgi->playerint[g])->adventureInt->minimap; // int mw = mm.map[0]->w, mh = mm.map[0]->h, // wo = mw/CGI->mh->sizes.x, ho = mh/CGI->mh->sizes.y; // for(int d=0; dmh->map->twoLevel+1; ++d) // { // SDL_Surface * pt = CSDL_Ext::newSurface(mm.pos.w, mm.pos.h, CSDL_Ext::std32bppSurface); // for (int i=0; imh->sizes.x)/mw), ((j*CGI->mh->sizes.y)/mh), d ); // if ( !((CPlayerInterface*)cgi->playerint[g])->cb->isVisible(pp) ) // { // CSDL_Ext::SDL_PutPixelWithoutRefresh(pt,i,j,0,0,0); // } // } // } // CSDL_Ext::update(pt); // mm.FoW.push_back(pt); // } //} } else { printf("Something was wrong: %s/n", SDL_GetError()); return -1; } }