OSDN Git Service

Reimplement DirectionVector to Direction class.
[deeangband/Deeangband-new.git] / Deeangband / GameEngine.cpp
1 /*!
2 * @file GameEngine.cpp
3 * @brief \83Q\81[\83\80\83G\83\93\83W\83\93\82Ì\8eÀ\91\95
4 * @date 2013/12/17
5 * @author Deskull
6 * 2014 Sikabane Works.
7 */
8
9 #pragma once
10
11 #include "stdafx.h"
12 #include "GameEngine.h"
13
14
15 namespace Deeangband
16 {
17         GameEngine::GameEngine()
18         {
19                 gameWorld = new GameWorld();
20                 gameSurface = new GameSurfaceSDL(gameWorld);
21                 gameSurface->SetFloor(gameWorld->GetFloor(0));
22                 gameSurface->SetSideStatusCreature(gameWorld->GetCreature(0));
23
24                 Direction::Initialize();
25         }
26
27         PLAY_EXIT_CODE GameEngine::PlayLoop(void)
28         {
29                 GAME_COMMAND commandID;
30                 PLAY_EXIT_CODE code = PLAY_EXIT_NONE;
31                 gameSurface->Redraw();
32
33                 while(code == PLAY_EXIT_NONE)
34                 {
35                         commandID = gameSurface->GetCommand();
36                         code = DoGameCommand(commandID);
37                 }
38
39                 return PLAY_EXIT_QUIT;
40         }
41
42         PLAY_EXIT_CODE GameEngine::DoGameCommand(GAME_COMMAND command)
43         {
44                 Creature *playerPtr = gameWorld->GetPlayerCreature();
45
46                 switch(command)
47                 {
48                 case GAME_COMMAND_VIEW_PLAYER_STATUS:
49                         gameSurface->ViewCreatureStatus(gameWorld->GetCreature(0));
50                         break;
51                 case GAME_COMMAND_REDRAW:
52                         gameSurface->Redraw();
53                         break;
54                 case GAME_COMMAND_DEBUG_XML_SAVE:
55                         gameWorld->XMLSave();
56                         gameSurface->Message("XML\82É\95Û\91\82µ\82Ü\82µ\82½\81B");
57                         break;
58                 case GAME_COMMAND_DEBUG_XML_LOAD:
59                         gameSurface->Redraw();
60                         gameWorld->XMLLoad();
61                         gameSurface->Message("XML\82©\82ç\8cÄ\82Ñ\8fo\82µ\82Ü\82µ\82½\81B");
62                         break;
63                 case GAME_COMMAND_EXIT:
64                         return PLAY_EXIT_QUIT;
65                         break;
66                 case GAME_COMMAND_NORTH:
67                         playerPtr->Walk(DIRECTION_NORTH);
68                         break;
69                 case GAME_COMMAND_NORTH_EAST:
70                         playerPtr->Walk(DIRECTION_NORTH_EAST);
71                         break;
72                 case GAME_COMMAND_EAST:
73                         playerPtr->Walk(DIRECTION_EAST);
74                         break;
75                 case GAME_COMMAND_SOUTH_EAST:
76                         playerPtr->Walk(DIRECTION_SOUTH_EAST);
77                         break;
78                 case GAME_COMMAND_SOUTH:
79                         playerPtr->Walk(DIRECTION_SOUTH);
80                         break;
81                 case GAME_COMMAND_SOUTH_WEST:
82                         playerPtr->Walk(DIRECTION_SOUTH_WEST);
83                         break;
84                 case GAME_COMMAND_WEST:
85                         playerPtr->Walk(DIRECTION_WEST);
86                         break;
87                 case GAME_COMMAND_NORTH_WEST:
88                         playerPtr->Walk(DIRECTION_NORTH_WEST);
89                         break;
90                 }
91                 return PLAY_EXIT_NONE;
92         }
93
94 }