void Game::dispatchCard(std::vector<int> &vector) { int i, j; Deck *deck; Deck *deckuser; std::vector <int> ::iterator iter; deck = *(this->decklist.begin() + 1); for (iter = vector.begin(); iter != vector.end(); iter++) { for (i = 0; i < 4; i++) { deckuser = *(this->decklist.begin() + 2 + (*(this->playerlist.begin() + i))->getLocate()); for (j = 0; j < *iter; j++) { deckuser->Push(deck->Pop()); } } } this->nextuserid = 0; return; }
void Game::start() { int path; int deckid = 2 + this->playerlist.at(this->nextuserid)->getLocate(); Deck *deck = this->decklist.at(1); Deck *deckuser = this->decklist.at(deckid); deckuser->Push(deck->Pop()); this->eGameState = GAMESTATE_WAITACTION; return; }
void Game::schedule(Message *msg) { switch(msg->getMessageType()) { case MSGTYPE_USER_CHI : case MSGTYPE_USER_GIVEUP : case MSGTYPE_USER_PENG : { if (this->eGameState != GAMESTATE_WAITACTION) { break; } if (msg->getPlayer()->getID() != (*this->playerlist.begin())->getID()) { break; } } case MSGTYPE_USER_READY : { if (GAMESTATE_START == this->eGameState && (*this->playerlist.begin())->getID() == msg->getPlayer()->getID()) { int deckid = 2 + msg->getPlayer()->getLocate(); Deck *deck = this->decklist.at(1); Deck *deckuser = this->decklist.at(deckid); Card *card = deck.Pop(); deckuser->Push(card); } break; } case MSGTYPE_DEBUG : { vector <Deck *> ::iterator iterdeck; for (iterdeck = this->decklist.begin(); iterdeck != this->decklist.end(); iterdeck++) { (*iterdeck)->show(); } break; } default : { break; } } return; }