Changeset 45734ff in network-game


Ignore:
Timestamp:
Dec 22, 2013, 10:14:43 PM (11 years ago)
Author:
dportnoy <dmp1488@…>
Branches:
master
Children:
58ca135
Parents:
1d96513
Message:

The Game class stores a list of projectiles present in that game

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • common/Game.cpp

    r1d96513 r45734ff  
    3737}
    3838
     39bool Game::addPlayer(Player* p) {
     40   if (players.find(p->id) == players.end()) {
     41      players[p->id] = p;
     42      return true;
     43   }
     44   else
     45      return false;
     46}
     47
     48bool Game::removePlayer(unsigned int id) {
     49   if (players.erase(id) == 1)
     50      return true;
     51   else
     52      return false;
     53}
     54
    3955map<unsigned int, Projectile>& Game::getProjectiles() {
    4056   return this->projectiles;
     57}
     58
     59bool Game::addProjectile(Projectile p) {
     60   if (projectiles.find(p.id) == projectiles.end()) {
     61      projectiles[p.id] = p;
     62      return true;
     63   }
     64   else
     65      return false;
     66}
     67
     68bool Game::removeProjectile(unsigned int id) {
     69   if (projectiles.erase(id) == 1)
     70      return true;
     71   else
     72      return false;
    4173}
    4274
     
    6395void Game::setBlueScore(int score) {
    6496   this->blueScore = score;
    65 }
    66 
    67 bool Game::addPlayer(Player* p) {
    68    if (players.find(p->id) == players.end()) {
    69       players[p->id] = p;
    70       return true;
    71    }
    72    else
    73       return false;
    74 }
    75 
    76 bool Game::removePlayer(unsigned int id) {
    77    if (players.erase(id) == 1)
    78       return true;
    79    else
    80       return false;
    8197}
    8298
     
    159175}
    160176
    161 bool Game::addProjectile(Projectile p) {
    162    if (projectiles.find(p.id) == projectiles.end()) {
    163       projectiles[p.id] = p;
    164       return true;
    165    }
    166    else
    167       return false;
     177void Game::assignProjectileId(Projectile* p) {
     178   p->id = unusedProjectileId;
     179   updateUnusedProjectileId();
    168180}
    169181
    170 bool Game::removeProjectile(unsigned int id) {
    171    if (projectiles.erase(id) == 1)
    172       return true;
    173    else
    174       return false;
     182void Game::updateUnusedProjectileId() {
     183   while (projectiles.find(unusedProjectileId) != projectiles.end())
     184      unusedProjectileId++;
    175185}
  • common/Game.h

    r1d96513 r45734ff  
    2626   int blueScore;
    2727   int redScore;
     28   unsigned int unusedProjectileId;
    2829
    2930public:
     
    3536   string getName();
    3637   int getNumPlayers();
    37    map<unsigned int, Player*>& getPlayers();
    38    map<unsigned int, Projectile>& getProjectiles();
    3938   int getBlueScore();
    4039   int getRedScore();
     
    4544   void setRedScore(int score);
    4645
     46   map<unsigned int, Player*>& getPlayers();
    4747   bool addPlayer(Player* p);
    4848   bool removePlayer(unsigned int id);
     49
     50   map<unsigned int, Projectile>& getProjectiles();
     51   bool addProjectile(Projectile p);
     52   bool removeProjectile(unsigned int id);
     53
    4954   bool startPlayerMovement(unsigned int id, int x, int y);
    5055   bool processPlayerMovement(Player* p, FLOAT_POSITION oldPos);
    5156   int processFlagPickupRequest(Player* p);
    5257
    53    bool addProjectile(Projectile p);
    54    bool removeProjectile(unsigned int id);
     58   void assignProjectileId(Projectile* p);
     59   void updateUnusedProjectileId();
    5560};
    5661
  • server/server.cpp

    r1d96513 r45734ff  
    4848
    4949void updateUnusedPlayerId(unsigned int& id, map<unsigned int, Player*>& mapPlayers);
    50 void updateUnusedProjectileId(unsigned int& id, map<unsigned int, Projectile>& mapProjectiles);
    5150Player *findPlayerByName(map<unsigned int, Player*> &m, string name);
    5251Player *findPlayerByAddr(map<unsigned int, Player*> &m, const sockaddr_in &addr);
     
    476475
    477476                  Projectile proj(p->pos.x, p->pos.y, p->targetPlayer, p->damage);
    478                   proj.id = unusedProjectileId;
    479                   updateUnusedProjectileId(unusedProjectileId, mapProjectiles);
    480                   mapProjectiles[proj.id] = proj;
    481 
    482                   int x = it->second->pos.x;
    483                   int y = it->second->pos.y;
     477                  p->currentGame->assignProjectileId(&proj);
     478                 
     479                  p->currentGame->addProjectile(proj);
     480
     481                  int x = p->pos.x;
     482                  int y = p->pos.y;
    484483
    485484                  serverMsg.type = MSG_TYPE_PROJECTILE;
     
    487486                  memcpy(serverMsg.buffer+4, &x, 4);
    488487                  memcpy(serverMsg.buffer+8, &y, 4);
    489                   memcpy(serverMsg.buffer+12, &it->second->targetPlayer, 4);
     488                  memcpy(serverMsg.buffer+12, &p->targetPlayer, 4);
    490489               }
    491490               else
     
    507506         // move all projectiles
    508507         // see if this can be moved inside the game class
     508         // this method can be moved when I add a MessageProcessor to the Game class
    509509         map<unsigned int, Projectile>::iterator itProj;
    510510         for (itProj = mapProjectiles.begin(); itProj != mapProjectiles.end(); itProj++)
     
    11981198}
    11991199
    1200 void updateUnusedProjectileId(unsigned int& id, map<unsigned int, Projectile>& mapProjectiles)
    1201 {
    1202    while (mapProjectiles.find(id) != mapProjectiles.end())
    1203       id++;
    1204 }
    1205 
    12061200Player *findPlayerByName(map<unsigned int, Player*> &m, string name)
    12071201{
Note: See TracChangeset for help on using the changeset viewer.