int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) { #ifdef DEBUG _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //_CrtSetBreakAlloc(157); AllocConsole(); FILE* console; freopen_s(&console, "CONOUT$", "wt", stdout); #endif CGameManager *GameManager = CGameManager::GetInstance(); GameManager->initialize(600, 600); GameManager->changeScene(new CStartScene()); GameManager->run(); #ifdef DEBUG FreeConsole(); #endif return 0; }
bool CPetControl::checkNode(const CString &name) { CGameManager *gameManager = getGameManager(); if (!gameManager) return true; if (name == "NULL") return false; CViewItem *view = gameManager->getView(); if (!view) return true; CNodeItem *node = view->findNode(); if (!node) return true; CString viewName = view->getName(); CString nodeName = node->getName(); CRoomItem *room = getGameManager()->getRoom(); if (room) { CString roomName = room->getName(); CString newNode; if (roomName == "1stClassRestaurant") { } else if (nodeName == "Lobby Node") { nodeName = "Node 1"; } else if (nodeName == "Entrance Node") { nodeName = "Node 2"; } else if (nodeName == "MaitreD Node") { nodeName = "Node 3"; } else if (nodeName == "Scraliontis Table Standing Node") { nodeName = "Node 4"; } else if (nodeName == "Pellerator Node") { nodeName = "Node 5"; } else if (nodeName == "SUB Node") { nodeName = "Node 6"; } else if (nodeName == "Phonograph Node") { nodeName = "Node 7"; } else if (nodeName == "Scraliontis Table Seated Node") { nodeName = "Node 8"; } if (roomName == "MusicRoom") { if (nodeName == "Musical Instruments") nodeName = "Node 1"; if (nodeName == "Phonograph Node") nodeName = "Node 2"; } } CString str = CString::format("%s.%s", nodeName.c_str(), viewName.c_str()); str = str.right(5); str.toLowercase(); CString nameLower = name; nameLower.toLowercase(); return nameLower.contains(str); }
CRoomItem *CPetRemote::getRoom() const { if (_petControl) { CGameManager *gameManager = _petControl->getGameManager(); if (gameManager) return gameManager->getRoom(); } return nullptr; }
void CProjectItem::postLoad() { CGameManager *gameManager = getGameManager(); if (gameManager) gameManager->postLoad(this); CPetControl *petControl = getPetControl(); if (petControl) petControl->postLoad(); }
void CPetControl::summonBot(const CString &name, int val) { CGameManager *gameManager = getGameManager(); if (gameManager) { CRoomItem *room = gameManager->getRoom(); if (room) { CSummonBotMsg summonMsg(name, val); summonMsg.execute(room); } } }
int _tmain(int argc, _TCHAR* argv[]) { CGameManager gameManager; gameManager.Init(); gameManager.Run(); gameManager.Release(); getchar(); return 0; }
TTnpcScript *CPetConversations::getNPCScript(const CString &name) const { if (name.empty() || !_petControl) return nullptr; CGameManager *gameManager = _petControl->getGameManager(); if (!gameManager) return nullptr; CTrueTalkManager *trueTalk = gameManager->getTalkManager(); if (!trueTalk) return nullptr; return trueTalk->getTalker(name); }
int _tmain(int argc, _TCHAR* argv[]) { argc; argv; CGameManager gameManeger; gameManeger.Init(); gameManeger.Run(); gameManeger.Release(); system("pause"); return 0; }
void CMainGameWindow::onIdle() { if (!_inputAllowed) return; CGameManager *gameManager = _gameManager; if (!gameManager) return; // Let the game manager perform any game updates gameManager->update(); if (gameManager->_gameState._quitGame) { // Game needs to shut down _vm->quitGame(); } }
int CPetControl::canSummonBot(const CString &name) { // If player is the very same view as the NPC, then it's already present if (isBotInView(name)) return SUMMON_CAN; // Get the room CGameManager *gameManager = getGameManager(); if (!gameManager) return SUMMON_CANT; CRoomItem *room = gameManager->getRoom(); if (!room) return SUMMON_CANT; // Query current room to see whether the bot can be summoned to it CSummonBotQueryMsg queryMsg(name); return queryMsg.execute(room) ? SUMMON_CAN : SUMMON_CANT; }
bool CPetControl::isDoorOrBellbotPresent() const { CGameManager *gameManager = getGameManager(); if (!gameManager) return false; CViewItem *view = gameManager->getView(); if (!view) return false; for (CTreeItem *treeItem = view->getFirstChild(); treeItem; treeItem = treeItem->scan(view)) { CString name = treeItem->getName(); if (dynamic_cast<CGameObject *>(treeItem) && (name.contains("Doorbot") || name.contains("BellBot"))) return true; } return false; }
bool CPetControl::isBotInView(const CString &name) const { CGameManager *gameManager = getGameManager(); if (!gameManager) return false; CViewItem *view = gameManager->getView(); if (!view) return false; // Iterate to find NPC for (CTreeItem *child = view->getFirstChild(); child; child = child->scan(view)) { CGameObject *gameObject = dynamic_cast<CGameObject *>(child); if (gameObject) { if (!gameObject->getName().compareToIgnoreCase(name)) return true; } } return false; }
bool CRemoteGotoGlyph::MouseButtonUpMsg(const Point &pt) { if (!_gfxElement || !_gfxElement->MouseButtonUpMsg(pt)) return false; CPetControl *petControl = getPetControl(); if (petControl) { CGameManager *gameManager = petControl->getGameManager(); if (gameManager) { CRoomItem *room = gameManager->getRoom(); if (room) { CTransportMsg msg(g_vm->_roomNames[_roomIndex], 1, 0); msg.execute(room); } } } return true; }
bool CPetControl::dismissBot(const CString &name) { CGameManager *gameManager = getGameManager(); if (!gameManager) return false; CViewItem *view = gameManager->getView(); if (!view) return false; bool result = false; CDismissBotMsg dismissMsg; for (CTreeItem *treeItem = view->getFirstChild(); treeItem; treeItem = treeItem->scan(view)) { if (!treeItem->getName().compareToIgnoreCase(name)) dismissMsg.execute(treeItem); else result = true; } return result; }
int main() { srand((unsigned int)time(NULL)); CGameManager *GameMng = new CGameManager(); sf::RenderWindow App(sf::VideoMode(800,600,32), "PycMan", sf::Style::Close); App.setVerticalSyncEnabled(true); GameMng->Run(App); App.clear(); App.close(); delete GameMng; return 0; }
void CBuddyManager::OnBuddySelected() { BUDDY_INFO *pBI = NULL; BUDDY_INFO BI; dbg_print("OnBuddySelected"); int i = ListView_GetSelectionMark(g_hwndListBuddy); g_bRunningQuery = true; if(i!=-1) { SetCursor(LoadCursor(NULL, IDC_APPSTARTING)); LVITEM lvItem; memset(&lvItem,0,sizeof(LVITEM)); lvItem.mask = LVIF_PARAM ; lvItem.iItem = i; lvItem.iSubItem = 0; if(ListView_GetItem( g_hwndListBuddy, &lvItem)) { ListView_DeleteAllItems(g_hwndListViewVars); ListView_DeleteAllItems(g_hwndListViewPlayers); vecBI::iterator vecBI_it = find(BuddyList.begin(),BuddyList.end(),(DWORD)lvItem.lParam); if( vecBI_it != BuddyList.end()) { BI = (BUDDY_INFO)*vecBI_it; if(BI.sIndex!=-1) { try { if(BI.sIndex<gm.GamesInfo[BI.cGAMEINDEX].vSI.size()) { SERVER_INFO *pSI = gm.GamesInfo[BI.cGAMEINDEX].vSI.at((int)BI.sIndex); gm.GetServerInfo(BI.cGAMEINDEX,pSI); } } catch(const exception& e) { m_log.AddLogInfo(0,"Access Violation!!! %s (OnBuddySelected)\n",e.what()); } UpdateCurrentServerUI(); } }//if pSrv } } g_bRunningQuery = false; }
int _tmain(int argc, _TCHAR* argv[]) { _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); argc; argv; std::string helloWorld = "Hello World"; std::cout<<helloWorld << std::endl; CGameManager gameManager; gameManager.Init(); gameManager.Run(); gameManager.Release(); //getchar(); return 0; }
int main ( int argc, char** argv ) { if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { printf( "Unable to init SDL: %s\n", SDL_GetError() ); return 1; } atexit(SDL_Quit); screen = SDL_SetVideoMode(SCREENW, SCREENH, 32, SDL_HWSURFACE|SDL_DOUBLEBUF); if ( !screen ) { printf("Unable to set 800x600 video: %s\n", SDL_GetError()); return 1; } SDL_WM_SetCaption("Szit the Game", NULL); if( TTF_Init() == -1 ) { printf("Unable to initialize font"); return 1; } font=TTF_OpenFont("tahoma.ttf", 28); if(font){printf("Success");} // centre the bitmap on screen CGameManager manager; bool done = false; CBlock blockT(0, -1, 0, 0, 0, 1, 0, 0, -1, 100, 100, 100); //t blockT.TryTurn(); blockT.Turn(); blockT.TryTurn(); blockT.Turn(); CBlock blockZ(0, -1,-1,0,-1,0,0,1,0, 198,255,126); //z CBlock blockS(0, -1,0,0,0,0,-1,1,-1, 126,196,255); //s CBlock blockO(1, 0,0,1,0,0,1,1,1, 100, 100, 0); //o CBlock blockI(0, 0,-1,0,0,0,1,0,2, 255,159,126); //i CBlock blockJ(0, -1,1,0,1,0,0,0,-1, 139,77,156); //j CBlock blockL(0, 0,-1,0,0,0,1,1,1, 255,229,126); //l CBlock GameBlock(0, -1, 0, 0, 0, 1, 0, 0, -1, 179,206,221); //creating t CBlock NextBlock(0, -1, 0, 0, 0, 1, 0, 0, -1, 179,206,221); //t //CBlock GameBlock(0, -1,0,0,0,0,-1,1,-1); //s //CBlock GameBlock(0, 0,-1,0,0,0,1,0,2); //i CButton start(300, 350, 200, 50, 100, 100, 100, 150, 150, 150, 1, "Start"); CButton help(300, 425, 200, 50, 100, 100, 100, 150, 150, 150, 0, "Help"); CButton exit(300, 500, 200, 50, 100, 100, 100, 150, 150, 150, 0, "Exit"); CButton easy(100, 350, 200, 50, 200, 200, 200, 255, 255, 255, 0, "Easy"); CButton medium(300, 350, 200, 50, 200, 200, 200, 255, 255, 255, 1, "Medium"); CButton hard(500, 350, 200, 50, 200, 200, 200, 255, 255, 255, 0, "Hard"); manager.Refresh(&GameBlock, &NextBlock); manager.Refresh(&GameBlock, &NextBlock); srand(time(NULL)); switch(rand()%7){ case 0: GameBlock.Set(0, -1, 0, 0, 0, 1, 0, 0, -1,179,206,221);break; //t case 1: GameBlock.Set(0, -1,-1,0,-1,0,0,1,0, 198,255,126);break; //z case 2: GameBlock.Set(0, -1,0,0,0,0,-1,1,-1, 126,196,255);break; //s case 3: GameBlock.Set(1, 0,0,1,0,0,1,1,1, 100, 100, 0);break; //o case 4: GameBlock.Set(0, 0,-1,0,0,0,1,0,2, 255,159,126);break; //i case 5: GameBlock.Set(0, -1,1,0,1,0,0,0,-1, 139,77,156);break; //j case 6: GameBlock.Set(0, 0,-1,0,0,0,1,1,1, 255,229,126);break; //l } srand(time(NULL)+SDL_GetTicks()); switch(rand()%7){ case 0: NextBlock.Set(0, -1, 0, 0, 0, 1, 0, 0, -1,179,206,221);break; //t case 1: NextBlock.Set(0, -1,-1,0,-1,0,0,1,0, 198,255,126);break; //z case 2: NextBlock.Set(0, -1,0,0,0,0,-1,1,-1, 126,196,255);break; //s case 3: NextBlock.Set(1, 0,0,1,0,0,1,1,1, 100, 100, 0);break; //o case 4: NextBlock.Set(0, 0,-1,0,0,0,1,0,2, 255,159,126);break; //i case 5: NextBlock.Set(0, -1,1,0,1,0,0,0,-1, 139,77,156);break; //j case 6: NextBlock.Set(0, 0,-1,0,0,0,1,1,1, 255,229,126);break; //l } // program main loop while (!done) { // message processing loop SDL_Event event; ++frame; SetFPS(); LastFrame=SDL_GetTicks(); if(gamestatus==1){manager.Refresh(&GameBlock, &NextBlock); } while (SDL_PollEvent(&event)) { // check for messages switch (event.type) { // exit if the window is closed case SDL_QUIT: done = true; break; // check for keypresses case SDL_KEYDOWN: { // exit if ESCAPE is pressed if (event.key.keysym.sym == SDLK_ESCAPE) {done = true;} if(!gamestatus) { if(event.key.keysym.sym == SDLK_DOWN){ if(start.Active()){start.ChangeActivity(); help.ChangeActivity();}else if(help.Active()){help.ChangeActivity(); exit.ChangeActivity();}else if(exit.Active()){exit.ChangeActivity(); start.ChangeActivity();} } else if(event.key.keysym.sym == SDLK_UP){ if(start.Active()){start.ChangeActivity(); exit.ChangeActivity();}else if(help.Active()){help.ChangeActivity(); start.ChangeActivity();}else if(exit.Active()){exit.ChangeActivity(); help.ChangeActivity();} } if(event.key.keysym.sym == SDLK_RETURN){ if(start.Active()){gamestatus=3;} else if(help.Active()){gamestatus=5;} else if(exit.Active()){done=1;} } }else if(gamestatus==1){ if(event.key.keysym.sym == SDLK_DOWN){ manager.MoveBlockDown(&GameBlock, 1); } if(event.key.keysym.sym == SDLK_SPACE){ manager.TurnGameBlock(&GameBlock); } if(event.key.keysym.sym == SDLK_LEFT){ manager.MoveBlockLeft(&GameBlock); } if(event.key.keysym.sym == SDLK_RIGHT){ manager.MoveBlockRight(&GameBlock); } if(event.key.keysym.sym == SDLK_w){ manager.SpeedUp(); } if(event.key.keysym.sym ==SDLK_p){ gamestatus=2; } }else if(gamestatus==2){ if(event.key.keysym.sym ==SDLK_p){ gamestatus=1; } }else if(gamestatus==3){ if(event.key.keysym.sym == SDLK_RETURN){ if(easy.Active()){manager.SetLevel(1);}else if(medium.Active()){manager.SetLevel(2);}else if(hard.Active()){manager.SetLevel(3);} gamestatus=1; }else if(event.key.keysym.sym == SDLK_RIGHT){ if(easy.Active()){easy.ChangeActivity(); medium.ChangeActivity();}else if(medium.Active()){medium.ChangeActivity(); hard.ChangeActivity();}else if(hard.Active()){hard.ChangeActivity(); easy.ChangeActivity();} }else if(event.key.keysym.sym == SDLK_LEFT){ if(easy.Active()){easy.ChangeActivity(); hard.ChangeActivity();}else if(medium.Active()){medium.ChangeActivity(); easy.ChangeActivity();}else if(hard.Active()){hard.ChangeActivity(); medium.ChangeActivity();} } }else if(gamestatus==4){ if(event.key.keysym.sym){ SDL_Delay(1000); gamestatus=0; manager.ClearGame(); } }else if(gamestatus==5){ if(event.key.keysym.sym){ gamestatus=0; } } break; } } // end switch }// end of message processing // DRAWING STARTS HERE // clear screen SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0)); // draw bitmap if(gamestatus==0){ int a=SDL_GetTicks(); RBC_DrawRect(0, 0, screen->w, screen->h, 0, 0, 50); RBC_DrawRect((0+frame/2)%screen->w, 0, screen->w/5, screen->h, 105,210,231); if(((0+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((0+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 105,210,231);} RBC_DrawRect((screen->w/5+frame/2)%screen->w, 0, screen->w/5, screen->h, 167,219,216); if(((screen->w/5+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 167,219,216);} RBC_DrawRect((screen->w/5*2+frame/2)%screen->w, 0, screen->w/5, screen->h, 224,228,204); if(((screen->w/5*2+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5*2+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 224,228,204);} RBC_DrawRect((screen->w/5*3+frame/2)%screen->w, 0, screen->w/5, screen->h, 243,134,48); if(((screen->w/5*3+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5*3+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 243,134,48);} RBC_DrawRect((screen->w/5*4+frame/2)%screen->w, 0, screen->w/5, screen->h, 250,105,0); if(((screen->w/5*4+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5*4+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 250,105,0);} blockS.Draw(-100, 90+sin(a/100)*50); blockZ.Draw(50, 90+sin(a/100+10)*50); blockI.Draw(200, 90+sin(a/100+20)*50); blockT.Draw(350, 90+sin(a/100+30)*50); start.Draw(); help.Draw(); exit.Draw(); }else if(gamestatus==1){ switch(manager.ReturnSpeed()){ case 2:RBC_DrawRect(0, 0, screen->w, screen->h, 105,210,231);break; case 4:RBC_DrawRect(0, 0, screen->w, screen->h, 167,219,216);break; case 6:RBC_DrawRect(0, 0, screen->w, screen->h, 224,228,204);break; case 8:RBC_DrawRect(0, 0, screen->w, screen->h, 243,134,48);break; case 10:RBC_DrawRect(0, 0, screen->w, screen->h, 250,105,0);break; case 12:RBC_DrawRect(0, 0, screen->w, screen->h, 250,70,0);break; case 14:RBC_DrawRect(0, 0, screen->w, screen->h, 250,35,0);break; case 16:RBC_DrawRect(0, 0, screen->w, screen->h, 250,10,0);break; case 18:RBC_DrawRect(0, 0, screen->w, screen->h, 250,0,0);break; } RBC_DrawRect(245, 0, 310, 600, 0,0,0); RBC_DrawRect(250, 0, 300, 600, 85,98,112); RBC_DrawRect(570, 70, 210, 210, 0,0,0); RBC_DrawRect(575, 75, 200, 200, 200, 200, 200); GameBlock.Draw(manager.GetGameBlockX()*30, manager.GetGameBlockY()*30); NextBlock.Draw(375, 150); manager.DrawTable(); RBC_Write(575, 300, "Speed:", screen); RBC_Write(675, 300, manager.ReturnSpeed(), screen); RBC_Write(575, 330, "Lines:", screen); RBC_Write(675, 330, manager.ReturnDone(), screen); RBC_Write(575, 360, "Score:", screen); RBC_Write(675, 360, manager.ReturnScore(), screen); }else if(gamestatus==2){ switch(manager.ReturnSpeed()){ case 2:RBC_DrawRect(0, 0, screen->w, screen->h, 105,210,231);break; case 4:RBC_DrawRect(0, 0, screen->w, screen->h, 167,219,216);break; case 6:RBC_DrawRect(0, 0, screen->w, screen->h, 224,228,204);break; case 8:RBC_DrawRect(0, 0, screen->w, screen->h, 243,134,48);break; case 10:RBC_DrawRect(0, 0, screen->w, screen->h, 250,105,0);break; case 12:RBC_DrawRect(0, 0, screen->w, screen->h, 250,70,0);break; case 14:RBC_DrawRect(0, 0, screen->w, screen->h, 250,35,0);break; case 16:RBC_DrawRect(0, 0, screen->w, screen->h, 250,10,0);break; case 18:RBC_DrawRect(0, 0, screen->w, screen->h, 250,0,0);break; } RBC_DrawRect(245, 0, 310, 600, 0,0,0); RBC_DrawRect(250, 0, 300, 600, 85,98,112); RBC_Write(360, 250, "Pause", screen); }else if(gamestatus==3){ RBC_DrawRect((0+frame/2)%screen->w, 0, screen->w/5, screen->h, 105,210,231); if(((0+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((0+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 105,210,231);} RBC_DrawRect((screen->w/5+frame/2)%screen->w, 0, screen->w/5, screen->h, 167,219,216); if(((screen->w/5+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 167,219,216);} RBC_DrawRect((screen->w/5*2+frame/2)%screen->w, 0, screen->w/5, screen->h, 224,228,204); if(((screen->w/5*2+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5*2+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 224,228,204);} RBC_DrawRect((screen->w/5*3+frame/2)%screen->w, 0, screen->w/5, screen->h, 243,134,48); if(((screen->w/5*3+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5*3+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 243,134,48);} RBC_DrawRect((screen->w/5*4+frame/2)%screen->w, 0, screen->w/5, screen->h, 250,105,0); if(((screen->w/5*4+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5*4+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 250,105,0);} easy.Draw(); medium.Draw(); hard.Draw(); }else if(gamestatus==4){ switch(manager.ReturnSpeed()){ case 2:RBC_DrawRect(0, 0, screen->w, screen->h, 105,210,231);break; case 4:RBC_DrawRect(0, 0, screen->w, screen->h, 167,219,216);break; case 6:RBC_DrawRect(0, 0, screen->w, screen->h, 224,228,204);break; case 8:RBC_DrawRect(0, 0, screen->w, screen->h, 243,134,48);break; case 10:RBC_DrawRect(0, 0, screen->w, screen->h, 250,105,0);break; case 12:RBC_DrawRect(0, 0, screen->w, screen->h, 250,70,0);break; case 14:RBC_DrawRect(0, 0, screen->w, screen->h, 250,35,0);break; case 16:RBC_DrawRect(0, 0, screen->w, screen->h, 250,10,0);break; case 18:RBC_DrawRect(0, 0, screen->w, screen->h, 250,0,0);break; } RBC_DrawRect(245, 0, 310, 600, 0,0,0); RBC_DrawRect(250, 0, 300, 600, 85,98,112); RBC_DrawRect(570, 70, 210, 210, 0,0,0); RBC_DrawRect(575, 75, 200, 200, 200, 200, 200); GameBlock.Draw(manager.GetGameBlockX()*30, manager.GetGameBlockY()*30); NextBlock.Draw(375, 150); manager.DrawTable(); RBC_Write(575, 300, "Speed:", screen); RBC_Write(675, 300, manager.ReturnSpeed(), screen); RBC_Write(575, 330, "Lines:", screen); RBC_Write(675, 330, manager.ReturnDone(), screen); RBC_Write(575, 360, "Score:", screen); RBC_Write(675, 360, manager.ReturnScore(), screen); for(int i=0; i<screen->w/2; i++){ for(int j=0; j<screen->h/2; j++){ RBC_DrawRect(i*2, j*2, 1,1, 0,0,0); } } RBC_Write(300, 300, "Game Over", screen); RBC_Write(300, 350, manager.ReturnScore(), screen); }else if(gamestatus==5){ RBC_DrawRect((0+frame/2)%screen->w, 0, screen->w/5, screen->h, 105,210,231); if(((0+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((0+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 105,210,231);} RBC_DrawRect((screen->w/5+frame/2)%screen->w, 0, screen->w/5, screen->h, 167,219,216); if(((screen->w/5+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 167,219,216);} RBC_DrawRect((screen->w/5*2+frame/2)%screen->w, 0, screen->w/5, screen->h, 224,228,204); if(((screen->w/5*2+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5*2+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 224,228,204);} RBC_DrawRect((screen->w/5*3+frame/2)%screen->w, 0, screen->w/5, screen->h, 243,134,48); if(((screen->w/5*3+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5*3+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 243,134,48);} RBC_DrawRect((screen->w/5*4+frame/2)%screen->w, 0, screen->w/5, screen->h, 250,105,0); if(((screen->w/5*4+frame/2)%screen->w+screen->w/5)>screen->w){RBC_DrawRect(0, 0, ((screen->w/5*4+frame/2)%screen->w+screen->w/5)-screen->w, screen->h, 250,105,0);} RBC_Write(20, 300, "Use left and right arrow to move block sideways", screen); RBC_Write(20, 350, "Use down arrow to move block down faster for extra points", screen); RBC_Write(20, 400, "Use space to turn falling tetramino", screen); RBC_Write(20, 450, "Hit 'P' to pause game", screen); } RBC_Write(10, 20, "FPS: ", screen);RBC_Write(70, 20, GetFPS(), screen); // DRAWING ENDS HERE // finally, update the screen :) SDL_Flip(screen); } // end main loop // free loaded bitmap TTF_CloseFont(font); TTF_Quit(); // all is well ;) printf("Exited cleanly\n"); return 0; }
void CScriptManager::Execute( CAbility* pAbility, CTile* pTile, CUnit* pCaster, CTile* TileCharged ) { // Finds the facing for the specified unit int face = pCaster->GetFacing(); std::vector< Vec2D > TilePos; std::vector< Vec2D > pat; if( pAbility->GetIfFacing() ) pat = CAbilityManager::GetInstance()->GetProperFacing(pCaster->GetFacing(), pAbility, pTile); else pat = pAbility->GetPattern(); for( unsigned int i = 0; i < pAbility->GetPattern().size(); i++ ) { pat[i].nPosX += pTile->GetPosition().nPosX; pat[i].nPosY += pTile->GetPosition().nPosY; TilePos.push_back(pat[i]); } lua_getglobal(L, "OnUse"); lua_newtable(L); CGameManager* pGM = CGameManager::GetInstance(); vector< CUnit* > affected; int nCount = 0; int z = (int)TilePos.size()-1; for( int i = 0; i <= z; i++ ) { CUnit* tmp = pGM->FindUnit(TilePos[i].nPosX, TilePos[i].nPosY); if( pAbility->GetType() == SP_CHARGE || pAbility->GetType() == SP_RUSH ) { if( TilePos[i] == TileCharged->GetPosition() ) break; } if( tmp == nullptr ) continue; affected.push_back( tmp ); lua_newtable(L); lua_pushstring(L, "posX"); lua_pushnumber(L, tmp->GetPos().nPosX); lua_settable(L, -3); lua_pushstring(L, "posY"); lua_pushnumber(L, tmp->GetPos().nPosY); lua_settable(L, -3); lua_pushstring(L, "health"); lua_pushnumber(L, tmp->GetHP()); lua_settable(L, -3); lua_pushstring(L, "speed"); lua_pushnumber(L, tmp->GetSpeed()); lua_settable(L, -3); lua_pushstring(L, "shielded"); lua_pushnumber(L, tmp->GetShielded()); lua_settable(L, -3); lua_pushstring(L, "uniqueID"); lua_pushnumber(L, tmp->GetUniqueID()); lua_settable(L, -3); lua_pushnumber(L, nCount+1); nCount++; lua_insert(L, -2); lua_settable(L, -3); } lua_setglobal(L, "tUnitData"); std::string path = "Assets/Ability/" + pAbility->GetLua(); luaL_dofile(L, path.c_str()); lua_getglobal(L, "OnUse"); lua_pcall(L, 0, 0, 0); lua_getglobal(L, "tUnitData"); lua_pushnil(L); vector<std::pair<std::string, int>> tData; // std::pair<std::string, int> tmp; tData.clear(); while(lua_next(L, -2) != 0) { if( lua_istable(L, -1) ) { lua_pushnil(L); while( lua_next(L, -2) ) { if(lua_isnumber(L, -1)) { std::pair<std::string, int> tmp; tmp.first = lua_tostring(L, -2); tmp.second = (int)lua_tonumber(L, -1); tData.push_back(tmp); } lua_pop(L, 1); } } else { if(lua_isnumber(L, -1)) { std::pair<std::string, int> tmp; tmp.first = lua_tostring(L, -2); tmp.second = (int)lua_tonumber(L, -1); tData.push_back(tmp); } } lua_pop(L, 1); } /*try { lua_close(L); } catch (int e) { int x = 9; }*/ //lua_close(L); int x = 0; int y = 0; //for( unsigned int i = 0; i < affected.size(); i++ ) //{ // x = 0; // y = 0; // for( unsigned int l = 0 + i*5; l < 5 + 5*i; l++ ) // { // if( tData[l].first == "health" ) // affected[i]->SetHP(tData[l].second); // if( tData[l].first == "posX" ) // x = tData[l].second; // if( tData[l].first == "posY" ) // y = tData[l].second; // if( tData[l].first == "speed" ) // affected[i]->SetSpeed(tData[l].second); // if( tData[l].first == "shielded" ) // { // if( tData[l].second == 1 ) // affected[i]->SetShielded(tData[l].second); // } // } // affected[i]->SetPos(x,y); //} CSoundManager* pSM = CSoundManager::GetInstance(); pSM->Play(pAbility->GetSound(), false, false); }
void CBuddyManager::NotifyBuddyIsOnline(BUDDY_INFO *pBI, SERVER_INFO *pServerInfo) { if(pBI==NULL) return; if(pServerInfo==NULL) return; vecBI::iterator it = FindBuddyInfoByID(pBI->dwID); if(it==BuddyList.end()) return; if(pServerInfo->szServerName!=NULL) strncpy_s(it->szServerName,sizeof(pBI->szServerName),pServerInfo->szServerName,_TRUNCATE); it->cGAMEINDEX = pServerInfo->cGAMEINDEX; it->sIndex = (int) pServerInfo->dwIndex; //have to change the Buddy index to a new var that can hold bigger numbers such as DWORD HWND hwndLV = g_hwndListBuddy; LV_FINDINFO lvfi; char szText[250]; memset(&lvfi,0,sizeof(LV_FINDINFO)); lvfi.flags = LVFI_PARAM; lvfi.lParam = (LPARAM)pBI->dwID; int index = ListView_FindItem(hwndLV , -1, &lvfi); if(index!=-1) { LVITEM item; item.mask = LVIF_TEXT | LVIF_IMAGE; item.iItem = index; memset(szText,0,sizeof(szText)); if(gm.GamesInfo[it->cGAMEINDEX].colorfilter!=NULL) { gm.GamesInfo[it->cGAMEINDEX].colorfilter(it->szServerName,szText,249); item.pszText = szText; item.cchTextMax = (int)strlen(szText); } else { item.pszText = it->szServerName; item.cchTextMax = (int)strlen(it->szServerName); } item.iSubItem = 1; item.iImage = gm.Get_GameIcon(it->cGAMEINDEX); ListView_SetItem(g_hwndListBuddy,&item); sprintf_s(szText,"%s:%d",pServerInfo->szIPaddress,pServerInfo->usPort); strcpy_s(it->szIPaddress,szText); ListView_SetItemText(g_hwndListBuddy,index ,2,szText); } if(gm.GamesInfo[it->cGAMEINDEX].colorfilter!=NULL) gm.GamesInfo[it->cGAMEINDEX].colorfilter(it->szServerName,szText,249); else strcpy_s(szText,it->szPlayerName); if(g_bRunningQueryServerList && g_bPlayedNotify==false) PlayNotifySound(0 ); if(AppCFG.bBuddyNotify) ShowBalloonTip("A buddy is online!",szText); }
void CBuddyManager::UpdateList() { ListView_DeleteAllItems(g_hwndListBuddy); LVITEM item; ZeroMemory(&item, sizeof(LVITEM)); item.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_PARAM ; int n=0; for(unsigned int i=0; i<BuddyList.size(); i++) { BUDDY_INFO BI = BuddyList.at(i); if(BI.bRemove == false) { char cf[MAX_NAME_LEN]; ZeroMemory(&item, sizeof(LVITEM)); item.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_PARAM ; item.iSubItem = 0; item.iImage = 3; item.iItem = n; if(gm.GamesInfo[BI.cGAMEINDEX].colorfilter!=NULL) { gm.GamesInfo[BI.cGAMEINDEX].colorfilter(BI.szPlayerName,cf,99); item.pszText = cf; item.cchTextMax = (int)strlen(cf); } else { item.pszText = BI.szPlayerName; item.cchTextMax = (int)strlen(BI.szPlayerName); } item.lParam = (LPARAM)BI.dwID; ListView_InsertItem( g_hwndListBuddy,&item); //BUG!! if(strlen(BI.szServerName)>0) { ZeroMemory(&item, sizeof(LVITEM)); item.mask = LVIF_IMAGE | LVIF_TEXT; gm.GamesInfo[BI.cGAMEINDEX].colorfilter(BI.szServerName,cf,sizeof(cf)-2); //ListView_SetItemText(g_hwndListBuddy,item.iItem ,1,cf); item.iItem = n; item.iSubItem = 1; item.pszText = cf; item.cchTextMax = (int)strlen(cf); item.iImage = gm.Get_GameIcon(BI.cGAMEINDEX); ListView_SetItem(g_hwndListBuddy,&item); ListView_SetItemText(g_hwndListBuddy,item.iItem ,2,BI.szIPaddress); } n++; } } ListView_SetColumnWidth(g_hwndListBuddy,0,LVSCW_AUTOSIZE); ListView_SetColumnWidth(g_hwndListBuddy,1,100); ListView_SetColumnWidth(g_hwndListBuddy,2,LVSCW_AUTOSIZE); }
void CTrueTalkNPC::startTalker(CViewItem *view) { CGameManager *gameManager = getGameManager(); if (gameManager) gameManager->getTalkManager()->start4(this, view); }
//Create scanning threads void Initialize_Rescan2(GAME_INFO *pGI, bool (*filterServerItem)(SERVER_INFO *lp,GAME_INFO *pGI, vFILTER_SETS *vFilterSets)) { g_log.AddLogInfo(GS_LOG_DEBUG,"Entering Initialize_Rescan2 function."); //SCAN_FilterServerItem = filterServerItem; vFILTER_SETS vFS; vFS = pGI->vFilterSets; vFS.insert(vFS.end(),gm.GetFilterSet(GLOBAL_FILTER).begin(),gm.GetFilterSet(GLOBAL_FILTER).end()); sort(vFS.begin(),vFS.end(),Sort_Filter_By_GroupName); vSRV_INF::iterator iLst; pGI->vRefScanSI.clear(); pGI->dwViewFlags |= SCAN_SERVERLIST; for ( iLst = pGI->vSI.begin( ); iLst != pGI->vSI.end( ); iLst++ ) { SERVER_INFO *pSI = *iLst; REF_SERVER_INFO refSI; refSI.pServerInfo = pSI; if(filterServerItem!=NULL) { if(filterServerItem(pSI,pGI,&vFS)) { pGI->vRefScanSI.push_back(refSI); } } else { pGI->vRefScanSI.push_back(refSI); } } if(pGI->dwViewFlags & SCAN_SERVERLIST) pGI->dwViewFlags ^= SCAN_SERVERLIST; g_log.AddLogInfo(GS_LOG_INFO,"Preparing to scan %d servers of a total %d.",pGI->vRefScanSI.size(),pGI->vSI.size()); if(pGI->dwViewFlags & FORCE_SCAN_FILTERED) pGI->dwViewFlags = 0; if(g_hwndProgressBar!=NULL) { //Initililze Progressbar SendMessage(g_hwndProgressBar, PBM_SETSTEP, (WPARAM) 1, 0); SendMessage(g_hwndProgressBar, PBM_SETRANGE, (WPARAM) 0,MAKELPARAM(0,pGI->vRefScanSI.size())); SendMessage(g_hwndProgressBar, PBM_SETPOS, (WPARAM) 0, 0); } HANDLE hThreadIndex[MAX_THREADS]; DWORD dwThreadId[MAX_THREADS]; for(DWORD i=0; i<AppCFG.dwThreads;i++) hThreadIndex[i]=NULL; SCANNER_dwThreadCounter=0; pGI->dwScanIdx = 0; //Create and setup Continue Event, this is important! Otherwise ETSV can crash. SCAN_hContinueEvent = CreateEvent(NULL,TRUE,TRUE,"ScanContinueEvent"); if (SCAN_hContinueEvent == NULL) g_log.AddLogInfo(GS_LOG_DEBUG,"CreateEvent failed (%d)\n", GetLastError()); if (! ResetEvent(SCAN_hContinueEvent) ) g_log.AddLogInfo(GS_LOG_DEBUG,"ResetEvent failed (%d)\n", GetLastError()); DWORD dwMaxThreads = (AppCFG.dwThreads>pGI->vRefScanSI.size())?pGI->vRefScanSI.size():AppCFG.dwThreads; //--------------------------------- //Multi thread scanning code //--------------------------------- //Startup the threads!!! for (DWORD i=0; i<dwMaxThreads;i++) { hThreadIndex[SCANNER_dwThreadCounter] = CreateThread( NULL, 0, &Get_ServerStatusThread2, (LPVOID) pGI ,0, &dwThreadId[SCANNER_dwThreadCounter]); if (hThreadIndex[SCANNER_dwThreadCounter] == NULL) { dbg_print("Error creating thread!\n"); } else { //g_log.AddLogInfo(GS_LOG_INFO,"Thread created! %d",i); EnterCriticalSection( &SCANNER_CSthreadcounter ); SCANNER_dwThreadCounter++; LeaveCriticalSection( &SCANNER_CSthreadcounter ); //SetThreadName(dwThreadId[SCANNER_dwThreadCounter], "Get_ServerStatusThread2"); } } //All threads created in graceful way and counter increased properly if (! SetEvent(SCAN_hContinueEvent) ) dbg_print("SetEvent failed\n"); //After this this the thread counter can decrease properly with a noncorrupted handle DWORD dwStartTick = GetTickCount(); DWORD iWaitIndex = 0; DWORD i=0; //Wait for all threads to finish... //g_log.AddLogInfo(GS_LOG_DEBUG,"AppCFG.dwThreads %d",AppCFG.dwThreads); while(iWaitIndex<dwMaxThreads) { DWORD max = ((dwMaxThreads-iWaitIndex)<MAXIMUM_WAIT_OBJECTS)?(dwMaxThreads-iWaitIndex):MAXIMUM_WAIT_OBJECTS; // g_log.AddLogInfo(GS_LOG_DEBUG,"iWaitIndex: %d, iWaitIndex+max: %d, dwMaxThreads: %d, max:%d",iWaitIndex,iWaitIndex+max,dwMaxThreads,max); DWORD dwEvent = WaitForMultipleObjects(max, &hThreadIndex[iWaitIndex], TRUE, INFINITE); //g_log.AddLogInfo(GS_LOG_DEBUG,">iWaitIndex: %d, iWaitIndex+max: %d, dwMaxThreads: %d, nThreads: %d, max:%d",iWaitIndex,iWaitIndex+max,dwMaxThreads, nThreads,max); switch (dwEvent) { case WAIT_OBJECT_0: //dbg_print("First event was signaled.\n"); break; case WAIT_TIMEOUT: g_log.AddLogInfo(GS_LOG_DEBUG,"Wait timed out. @ %s",__FUNCTION__); break; // Return value is invalid. default: { g_log.AddLogInfo(GS_LOG_DEBUG,"Error at waiting threads! %s",__FUNCTION__); } } // Close all thread handles upon completion. for(i=iWaitIndex; i<iWaitIndex+max; i++) { if(hThreadIndex[i]!=NULL) { CloseHandle(hThreadIndex[i]); hThreadIndex[i]=NULL; } } iWaitIndex+=MAXIMUM_WAIT_OBJECTS; } DWORD dwEndTick = GetTickCount(); g_log.AddLogInfo(0,"All servers is now scanned...%d sec",(dwEndTick-dwStartTick)/1000); pGI->vRefScanSI.clear(); CloseHandle(SCAN_hContinueEvent); }
// This is the MessageSystem MessageProc. Message handling is done here void CGameManager::MessageProc(IMessage* pMsg) { CGameManager* pThis = CGameManager::GetInstance(); // MESSAGE HANDLING switch (pMsg->GetMessageID()) { case MSG_SPAWNUNIT: { CSpawnUnitMessage* pSMSG = dynamic_cast<CSpawnUnitMessage*>(pMsg); CUnit* pUnit = (CUnit*)CObjectManager::GetInstance()->CreateObject(pSMSG->GetUnitType(), pSMSG->GetPlayerID() ); pUnit->SetPos(pSMSG->GetPos()); if (CTileManager::GetInstance()->GetTile(pSMSG->GetPos().nPosX, pSMSG->GetPos().nPosY)->GetIfOccupied()) { CUnit* pOccupyingUnit = CGameManager::GetInstance()->FindUnit(pSMSG->GetPos()); if (pOccupyingUnit != pUnit) { Vec2D newpos = CAIManager::GetInstance()->NearestOpen(pOccupyingUnit->GetPos(), pSMSG->GetPos()); pUnit->SetPos(pSMSG->GetPos()); pUnit->AddWaypoint(CTileManager::GetInstance()->GetTile(newpos.nPosX, newpos.nPosY)); } } if (CTileManager::GetInstance()->GetTile(pUnit->GetPos().nPosX, pUnit->GetPos().nPosY)->GetIfResourceTile()==true) { if (CTileManager::GetInstance()->GetTile(pUnit->GetPos().nPosX, pUnit->GetPos().nPosY)->GetIfCaptured()) { if (CTileManager::GetInstance()->GetTile(pUnit->GetPos().nPosX, pUnit->GetPos().nPosY)->GetPlayerID() != pUnit->GetPlayerID()) { CTileManager::GetInstance()->GetTile(pUnit->GetPos().nPosX, pUnit->GetPos().nPosY)->SetStatus(TS_CAPTURING,true); CTileManager::GetInstance()->GetTile(pUnit->GetPos().nPosX, pUnit->GetPos().nPosY)->SetPlayerID(pUnit->GetPlayerID()); } } else { CTileManager::GetInstance()->GetTile(pUnit->GetPos().nPosX, pUnit->GetPos().nPosY)->SetStatus(TS_CAPTURING,true); CTileManager::GetInstance()->GetTile(pUnit->GetPos().nPosX, pUnit->GetPos().nPosY)->SetPlayerID(pUnit->GetPlayerID()); } } pUnit->SetFacing(pSMSG->GetFacing()); pUnit->SetPlayerID(pSMSG->GetPlayerID()); CPlayer* pPlayer = CGameManager::GetInstance()->GetPlayer(pSMSG->GetPlayerID()); switch (pSMSG->GetUnitType()) { case UT_SWORDSMAN: pPlayer->GetStats()->nSwordsmanCreated++; break; case UT_ARCHER: pPlayer->GetStats()->nArcherCreated++; break; case UT_CAVALRY: pPlayer->GetStats()->nCalvaryCreated++; break; } if (pSMSG->GetLoaded()) { pUnit->SetHP(pSMSG->GetHealth()); pUnit->SetTilesMoved(pSMSG->GetTilesMoved()); pUnit->SetHasAttacked(pSMSG->GetHasAttacked()); if (pSMSG->GetSpellSize() != 0) { for (int i = 0; i < pSMSG->GetSpellSize(); ++i) { ((CHero*)pUnit)->SwapSpell(CAbilityManager::GetInstance()->GetAbility(pSMSG->GetSpells(i)), i); ((CHero*)pUnit)->SetCooldown(i, pSMSG->GetCooldown(i) ); } for (unsigned int i = 0; i < pSMSG->GetBought().size(); ++i) { ((CHero*)pUnit)->SpellBought(CAbilityManager::GetInstance()->GetAbility(pSMSG->GetBought()[i])); } } if (pSMSG->GetEffects().size() != 0) { for (unsigned int i = 0; i < pSMSG->GetEffects().size(); ++i) { pUnit->PushEffect(CAbilityManager::GetInstance()->GetAbility(pSMSG->GetEffects()[i]),1); } } } } break; case MSG_DESPAWNUNIT: { CDespawnUnitMessage* pSMSG = dynamic_cast<CDespawnUnitMessage*>(pMsg); if (CGameplayState::GetInstance()->GetSelectedUnit() == pSMSG->GetUnit()) { CGameplayState::GetInstance()->ClearSelections(); } CTile* tile = CTileManager::GetInstance()->GetTile(pSMSG->GetUnit()->GetPos().nPosX, pSMSG->GetUnit()->GetPos().nPosY); int nUnitID = pSMSG->GetUnit()->GetUniqueID(); if (tile != nullptr) { tile->SetIfOccupied(false); if (pSMSG->GetUnit()->GetType() != UT_SKELETON) tile->SetIfDeadTile(true); } if (pSMSG->GetUnit() == CGameplayState::GetInstance()->GetHighlighted()) CGameplayState::GetInstance()->ClearHighlighted(); CObjectManager::GetInstance()->RemoveObject(pSMSG->GetUnit()); if(pSMSG->GetUnit()->GetType() == UT_HERO || pSMSG->GetUnit()->GetType() == UT_CASTLE) { if(pThis->GetCurrentPlayer()->GetAI()) { CGameOverState::GetInstance()->SetAI(true); } else { CGameOverState::GetInstance()->SetAI(false); if(pSMSG->GetUnit()->GetPlayerID() == 0) CGameOverState::GetInstance()->SetPlayer(2); else if(pSMSG->GetUnit()->GetPlayerID() == 1) CGameOverState::GetInstance()->SetPlayer(1); } CStateStack::GetInstance()->Push(CGameOverState::GetInstance()); } if (pSMSG->GetUnit()->GetPlayerID() != pThis->GetCurrentPlayer()->GetPlayerID()) { pThis->GetCurrentPlayer()->SetExp(pThis->GetCurrentPlayer()->GetExp() + (pSMSG->GetUnit()->GetEXPValue()*3)); pThis->GetCurrentPlayer()->GetStats()->nPlayerEXPEarned+=pSMSG->GetUnit()->GetEXPValue(); switch (pSMSG->GetUnit()->GetType()) { case UT_SWORDSMAN: pThis->GetCurrentPlayer()->GetStats()->nSwordsmanKilled++; break; case UT_ARCHER: pThis->GetCurrentPlayer()->GetStats()->nArcherKilled++; break; case UT_CAVALRY: pThis->GetCurrentPlayer()->GetStats()->nCavalryKilled++; break; } } // remove me from the capturing resource registration for (unsigned int i = 0; i < CAIManager::GetInstance()->m_vResourceRegistrations.size(); ++i) { if (CAIManager::GetInstance()->m_vResourceRegistrations[i].first == nUnitID) { CAIManager::GetInstance()->m_vResourceRegistrations.erase( CAIManager::GetInstance()->m_vResourceRegistrations.begin() + i++); } } } break; case MSG_ADDRESOURCE: { CAddResourceMessage* pSMSG = dynamic_cast<CAddResourceMessage*>(pMsg); CPlayer* pPlayer = pThis->GetPlayer(pSMSG->GetPlayerID()); switch (pSMSG->GetTileType()) { case TT_FARM: { pPlayer->SetMaxPopCap(pPlayer->GetMaxPopCap() + POP_PER_FARM); pPlayer->SetAP(pPlayer->GetAP() + AP_PER_CAPTURE); } break; case TT_MINE: { pPlayer->SetMetal(pPlayer->GetMetal() + METAL_PER_MINE); pPlayer->SetAP(pPlayer->GetAP() + AP_PER_CAPTURE); } break; case TT_MILL: { pPlayer->SetWood(pPlayer->GetWood() + WOOD_PER_MILL); pPlayer->SetAP(pPlayer->GetAP() + AP_PER_CAPTURE); } break; default: break; } } break; default: break; } }