#include "stdafx.h"
#include "Creature.h"
+#include "GameSurface.h"
+#include "GameLogger.h"
+#include "GameWorld.h"
+
#include "Field.h"
#include "Floor.h"
#include "Item.h"
return this->sightList[(ry + this->sightRange) * (this->sightRange * 2 + 1) + rx + this->sightRange];
}
+ bool Creature::Walk(DIRECTION direction)
+ {
+ Coordinates nextPoint = this->position + Direction::DirectionVector[direction];
+ //Floor *floorPtr = fieldPtr->GetSquare(nextPoint)->GetFloorPtr();
+ Creature *targetPtr;
+
+ //! @note \88Ú\93®\90æ\82É\95Ê\82Ì\83N\83\8a\81[\83`\83\83\81[\82ª\91¶\8dÝ\82·\82é\82È\82ç\82Î\94\92\95º\8f\88\97\9d\82É\88Ú\8ds\82µ\82Ä FALSE
+ //targetPtr = gameWorld->GetCreatureFromPosition(creaturePtr->GetFieldID(), &nextPoint);
+ //if(targetPtr)
+ //{
+ //this->gameLogger->CreaturesCombated(creaturePtr->GetName(), targetPtr->GetName());
+ return false; //this->CombatCreatures(creaturePtr, targetPtr);
+ //}
+
+ //if(!this->CanEnterPosition(floorPtr))
+ //{
+ //this->gameSurface->GameMessage("\8ds\82\8eè\82ð\91j\82Ü\82ê\82Ä\82¢\82é\81B");
+ // return false;
+ //}
+
+ //creaturePtr->Walk(this->gameLogger, direction);
+ //this->gameSurface->FocusField(creaturePtr->GetPosition());
+ this->UpdateFieldLore();
+ //this->gameSurface->GameMessage("");
+ return true;
+ }
+
}
\ No newline at end of file
#include "Lore.h"
#include "GameConstants.h"
#include "GameInstance.h"
-#include "GameLogger.h"
#include "GameMessage.h"
#include "SavingTable.h"
#include "Species.h"
namespace Deeangband
{
+ class GameLogger;
+ class GameSurface;
+ class GameWorld;
+
class Field;
class Floor;
class Item;
*/
bool Creature::InSight(int x, int y);
+ /*!
+ * @brief \83N\83\8a\81[\83`\83\83\81[\82ð\8ew\92è\82Ì\95û\8cü\82É\95à\8ds\82³\82¹\82é
+ * @param creaturePtr \83N\83\8a\81[\83`\83\83\81[\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @param direction \95à\8ds\82·\82é\95û\8cü
+ * @return \88Ú\93®\82ª\8eÀ\8dÛ\82É\8ds\82í\82ê\82½\82çtrue
+ */
+ bool Creature::Walk(DIRECTION direction);
+
+
};
}
return PLAY_EXIT_QUIT;
break;
case GAME_COMMAND_NORTH:
- this->WalkCreature(playerIt, DIRECTION_NORTH);
+ playerIt->second.get()->Walk(DIRECTION_NORTH);
break;
case GAME_COMMAND_NORTH_EAST:
- this->WalkCreature(playerIt, DIRECTION_NORTH_EAST);
+ playerIt->second.get()->Walk(DIRECTION_NORTH_EAST);
break;
case GAME_COMMAND_EAST:
- this->WalkCreature(playerIt, DIRECTION_EAST);
+ playerIt->second.get()->Walk(DIRECTION_EAST);
break;
case GAME_COMMAND_SOUTH_EAST:
- this->WalkCreature(playerIt, DIRECTION_SOUTH_EAST);
+ playerIt->second.get()->Walk(DIRECTION_SOUTH_EAST);
break;
case GAME_COMMAND_SOUTH:
- this->WalkCreature(playerIt, DIRECTION_SOUTH);
+ playerIt->second.get()->Walk(DIRECTION_SOUTH);
break;
case GAME_COMMAND_SOUTH_WEST:
- this->WalkCreature(playerIt, DIRECTION_SOUTH_WEST);
+ playerIt->second.get()->Walk(DIRECTION_SOUTH_WEST);
break;
case GAME_COMMAND_WEST:
- this->WalkCreature(playerIt, DIRECTION_WEST);
+ playerIt->second.get()->Walk(DIRECTION_WEST);
break;
case GAME_COMMAND_NORTH_WEST:
- this->WalkCreature(playerIt, DIRECTION_NORTH_WEST);
+ playerIt->second.get()->Walk(DIRECTION_NORTH_WEST);
break;
}
return PLAY_EXIT_NONE;
}
- bool GameEngine::WalkCreature(CREATURE_IT creatureIt, DIRECTION direction)
- {
- return this->WalkCreature(creatureIt->second.get(), direction);
- }
-
- bool GameEngine::WalkCreature(Creature *creaturePtr, DIRECTION direction)
- {
- Coordinates nextPoint = creaturePtr->GetPosition() + Direction::DirectionVector[direction];
- Floor *floorPtr = gameWorld->GetFloorFromPosition(creaturePtr->GetFieldID(), &nextPoint);
- Creature *targetPtr;
-
- //! @note \88Ú\93®\90æ\82É\95Ê\82Ì\83N\83\8a\81[\83`\83\83\81[\82ª\91¶\8dÝ\82·\82é\82È\82ç\82Î\94\92\95º\8f\88\97\9d\82É\88Ú\8ds\82µ\82Ä FALSE
- targetPtr = gameWorld->GetCreatureFromPosition(creaturePtr->GetFieldID(), &nextPoint);
- if(targetPtr)
- {
- this->gameLogger->CreaturesCombated(creaturePtr->GetName(), targetPtr->GetName());
- return this->CombatCreatures(creaturePtr, targetPtr);
- }
-
- if(!creaturePtr->CanEnterPosition(floorPtr))
- {
- this->gameSurface->GameMessage("\8ds\82\8eè\82ð\91j\82Ü\82ê\82Ä\82¢\82é\81B");
- return false;
- }
-
- creaturePtr->Walk(this->gameLogger, direction);
- this->gameSurface->FocusField(creaturePtr->GetPosition());
- creaturePtr->UpdateFieldLore();
- this->gameSurface->GameMessage("");
- return true;
- }
bool GameEngine::CombatCreatures(Creature *attackerPtr, Creature *targetPtr)
{
PLAY_EXIT_CODE GameEngine::DoGameCommand(GAME_COMMAND command);
/*!
- * @brief \83N\83\8a\81[\83`\83\83\81[\82ð\8ew\92è\82Ì\95û\8cü\82É\95à\8ds\82³\82¹\82é
- * @param creaturePtr \83N\83\8a\81[\83`\83\83\81[\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param direction \95à\8ds\82·\82é\95û\8cü
- * @return \88Ú\93®\82ª\8eÀ\8dÛ\82É\8ds\82í\82ê\82½\82çtrue
- */
- bool GameEngine::WalkCreature(Creature *creaturePtr, DIRECTION direction);
-
- bool GameEngine::WalkCreature(CREATURE_IT creaturePtr, DIRECTION direction);
-
- /*!
* @brief \83N\83\8a\81[\83`\83\83\81[\93¯\8em\82Ì\94\92\95º\90í\82ð\8f\88\92u\82·\82é
* @param creaturePtr \8dU\8c\82\91¤\83N\83\8a\81[\83`\83\83\81[\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
* @param targetPtr \96Ú\95W\91¤\83N\83\8a\81[\83`\83\83\81[\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
/*!
- * @brief \8ew\92è\82³\82ê\82½\83N\83\8a\81[\83`\83\83\81[\82Ì\83X\83e\81[\83^\83X\82ð\95\\8e¦\82·\82é
- * @param creaturePtr \95\\8e¦\82µ\82½\82¢\83N\83\8a\81[\83`\83\83\81[\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \82È\82µ
- */
+ * @brief \8ew\92è\82³\82ê\82½\83N\83\8a\81[\83`\83\83\81[\82Ì\83X\83e\81[\83^\83X\82ð\95\\8e¦\82·\82é
+ * @param creaturePtr \95\\8e¦\82µ\82½\82¢\83N\83\8a\81[\83`\83\83\81[\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \82È\82µ
+ */
void GameSurfaceSDL::ViewCreatureStatus(Creature *creaturePtr);
/*!
- * @brief \83Q\81[\83\80\89æ\96Ê\8d¶\82É\83v\83\8c\83C\83\84\81[\8aÈ\97ª\8fî\95ñ\82ð\95\\8e¦\82·\82é\81B
- * @param creaturePtr \95\\8e¦\82µ\82½\82¢\83N\83\8a\81[\83`\83\83\81[\82Ì\83C\83\93\83X\83^\83\93\83X\8eQ\8fÆ\83|\83C\83\93\83^\81BNULL\82È\82ç\82Î\94ñ\95\\8e¦\81B
- * @return \82È\82µ
- */
+ * @brief \83Q\81[\83\80\89æ\96Ê\8d¶\82É\83v\83\8c\83C\83\84\81[\8aÈ\97ª\8fî\95ñ\82ð\95\\8e¦\82·\82é\81B
+ * @param creaturePtr \95\\8e¦\82µ\82½\82¢\83N\83\8a\81[\83`\83\83\81[\82Ì\83C\83\93\83X\83^\83\93\83X\8eQ\8fÆ\83|\83C\83\93\83^\81BNULL\82È\82ç\82Î\94ñ\95\\8e¦\81B
+ * @return \82È\82µ
+ */
void GameSurfaceSDL::SetSideStatusCreature(Creature *creaturePtr);
/*!
- * @brief \95\\8e¦\82·\82é\83t\83\8d\83A\82ð\90Ø\82è\91Ö\82¦\82é
- * @param fieldPtr \95\\8e¦\82µ\82½\82¢\83t\83\8d\83A\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \82È\82µ
- */
+ * @brief \95\\8e¦\82·\82é\83t\83\8d\83A\82ð\90Ø\82è\91Ö\82¦\82é
+ * @param fieldPtr \95\\8e¦\82µ\82½\82¢\83t\83\8d\83A\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \82È\82µ
+ */
void GameSurfaceSDL::SetField(Field *fieldPtr);
/*!
- * @brief \83R\83\93\83X\83g\83\89\83N\83^
- * @param gameWorld \8f\88\97\9d\82µ\82½\82¢GameWorld\83C\83\93\83X\83^\83\93\83X
- */
+ * @brief \83R\83\93\83X\83g\83\89\83N\83^
+ * @param gameWorld \8f\88\97\9d\82µ\82½\82¢GameWorld\83C\83\93\83X\83^\83\93\83X
+ */
GameSurfaceSDL::GameSurfaceSDL(GameWorld *gameWorld);
/*!
- * @brief \83f\83X\83g\83\89\83N\83^
- */
+ * @brief \83f\83X\83g\83\89\83N\83^
+ */
GameSurfaceSDL::~GameSurfaceSDL(void);
/*!
- * @brief \83v\83\8c\83C\83\84\81[\82©\82ç\83R\83}\83\93\83h\82ð\8eæ\93¾\82·\82é
- * @return \83Q\81[\83\80\83R\83}\83\93\83hID
- */
+ * @brief \83v\83\8c\83C\83\84\81[\82©\82ç\83R\83}\83\93\83h\82ð\8eæ\93¾\82·\82é
+ * @return \83Q\81[\83\80\83R\83}\83\93\83hID
+ */
GAME_COMMAND GameSurfaceSDL::GetCommand(const CREATURE_IT& subjectCreatureIt);
/*!
- * @brief \83t\83\8d\83A\95\\8e¦\82Ì\83t\83H\81[\83J\83X\82ð\95Ï\8dX\82·\82é
- * @param x \8aî\8f\80X\8dÀ\95W
- * @param y \8aî\8f\80Y\8dÀ\95W
- * @return \82È\82µ
- */
+ * @brief \83t\83\8d\83A\95\\8e¦\82Ì\83t\83H\81[\83J\83X\82ð\95Ï\8dX\82·\82é
+ * @param x \8aî\8f\80X\8dÀ\95W
+ * @param y \8aî\8f\80Y\8dÀ\95W
+ * @return \82È\82µ
+ */
void GameSurfaceSDL::FocusField(MAP_LENGTH x, MAP_LENGTH y);
/*!
* @brief \91Î\89\9e\82·\82é\8f°\92n\8c`\82Ì\83^\83O\82ð\95Ô\82·\81B
* @return \91Î\89\9e\82·\82é\8f°\92n\8c`\83^\83O
*/
- TAG GetFloorTag(void);
+ TAG Square::GetFloorTag(void);
/*!
* @brief \91Î\89\9e\82·\82é\8f°\92n\8c`\82Ì\83^\83O\82ð\95Ô\82·\81B
* @return \91Î\89\9e\82·\82é\8f°\92n\8c`\83^\83O
*/
- TAG GetAirTag(void);
+ TAG Square::GetAirTag(void);
/*!
* @brief \91Î\89\9e\82·\82é\8bó\8aÔ\92n\8c`\82Ì\83^\83O\82ð\95Ô\82·\81B
* @return \91Î\89\9e\82·\82é\8f°\92n\8c`\83^\83O
*/
- TAG GetSpaceTag(void);
+ TAG Square::GetSpaceTag(void);
/*!
* @brief \91Î\89\9e\82·\82é\92n\8c`\82Ì\83|\83C\83\93\83^\82ð\95Ô\82·\81B
* @return \91Î\89\9e\82·\82é\92n\8c`\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
*/
- Floor* GetFloorPtr(void);
+ Floor* Square::GetFloorPtr(void);
/*!
* @brief \92n\8c`\82ª\95Ç\82Å\8eÕ\95Á\82³\82ê\82Ä\82¢\82é\82©\82ð\95Ô\82·