OSDN Git Service

GameEngine::ProcessDeadCreatures()を実装。 / Implement GameEngine::ProcessDeadCreatures().
authorDeskull <desull@users.sourceforge.jp>
Fri, 2 Jan 2015 08:08:54 +0000 (17:08 +0900)
committerDeskull <desull@users.sourceforge.jp>
Fri, 2 Jan 2015 08:08:54 +0000 (17:08 +0900)
Deeangband/Creature.cpp
Deeangband/Creature.h
Deeangband/GameEngine.cpp
Deeangband/GameEngine.h

index f30f42c..4cb4174 100644 (file)
@@ -166,7 +166,7 @@ namespace Deeangband
 
        bool Creature::TakeEffect(Effect *effectPtr, POWER amount)
        {
-               if(effectPtr) this->CalcHP(-amount);
+               if(!effectPtr) this->CalcHP(-amount);
                return false;
        }
 
index d71c303..2a63b43 100644 (file)
@@ -226,10 +226,10 @@ namespace Deeangband
                bool Creature::IsAlive(void);
 
                /*!
-               * @brief \8eó\82¯\82½\91®\90«\8cø\89Ê\82ð\8f\88\97\9d\82·\82é
-               * @param effectPtr
-               * @param amount
-               */
+                * @brief \8eó\82¯\82½\91®\90«\8cø\89Ê\82ð\8f\88\97\9d\82·\82é
+                * @param effectPtr
+                * @param amount
+                */
                bool Creature::TakeEffect(Effect* effectPtr, POWER amount);
 
                /*! 
index f41e6c1..5ccc7b3 100644 (file)
@@ -36,6 +36,7 @@ namespace Deeangband
                {
                        commandID = gameSurface->GetCommand();
                        code = DoGameCommand(commandID);
+                       ProcessDeadCreatures();
                }
 
                return PLAY_EXIT_QUIT;
@@ -121,10 +122,32 @@ namespace Deeangband
 
        bool GameEngine::CombatCreatures(Creature *attackerPtr, Creature *targetPtr)
        {
-               attackerPtr->CalcHP(-Dice::Cast(1, 6));
-               targetPtr->CalcHP(-Dice::Cast(1, 6));
+               attackerPtr->TakeEffect(NULL, Dice::Cast(1, 6));
+               targetPtr->TakeEffect(NULL, Dice::Cast(1, 6));
                this->gameSurface->UpdateSideCreatureStatus(gameWorld->GetPlayerCreature());
+
                return true;
        }
 
+       int GameEngine::ProcessDeadCreatures()
+       {
+               int deadNum = 0;
+               std::map<ID, boost::shared_ptr<Creature>>::iterator creatureIt, creatureItCurrent;
+               std::map<ID, boost::shared_ptr<Creature>> *creatureList = gameWorld->GetCreatureList();
+
+               creatureIt = creatureList->begin();
+
+               while(creatureIt != creatureList->end())
+               {
+                       creatureItCurrent = creatureIt;
+                       creatureIt++;
+                       if(!creatureItCurrent->second->IsAlive())
+                       {
+                               creatureList->erase(creatureItCurrent);
+                       }
+               }
+
+               return deadNum;
+       }
+
 }
index 5b73dae..4e1766b 100644 (file)
@@ -61,6 +61,11 @@ namespace Deeangband
                 */
                bool GameEngine::CombatCreatures(Creature *attackerPtr, Creature *targetPtr);
 
+               /*!
+                * @brief \83N\83\8a\81[\83`\83\83\81[\82Ì\8e\80\96S\8fó\91Ô\82ð\91\96\8d¸\81A\8f\88\97\9d\82·\82é
+                * @return \8e\80\96S\8f\88\97\9d\82ð\8ds\82Á\82½\83N\83\8a\81[\83`\83\83\81[\82Ì\91\8d\90\94
+                */
+               int GameEngine::ProcessDeadCreatures();
 
        };
 }