Argentum Online - Cliente
game_state_monitor.h
1 #ifndef __GAME_STATE_MONITOR_H
2 #define __GAME_STATE_MONITOR_H
3 
4 #include <condition_variable>
5 #include <mutex>
6 
11 typedef enum {
12  LOGGING,
13  WAITING_FOR_INITIALIZATION,
14  READY_TO_RUN,
15  RUNNING,
16  SWITCHING_MAPS,
17  EXITING,
18  CREATING_CHARACTER
19 } game_state_t;
20 
21 typedef enum { FIRST_LOGIN, NAME_NOT_FOUND, NAME_ALREADY_CONECTED } login_state_t;
22 
23 typedef enum { FIRST_TRY, NAME_TAKEN } char_creation_state_t;
24 
30  private:
31  std::mutex m;
32  bool connected;
33  game_state_t game_state;
34  login_state_t login_state;
35  char_creation_state_t char_creation_state;
36  std::condition_variable cv;
37 
38  public:
41 
48  bool is_connected();
49 
55  void set_connected_status(bool new_connection_status);
56 
62  void set_game_state(game_state_t new_game_state);
63 
69  game_state_t get_game_state();
70 
76  void set_login_state(login_state_t new_login_state);
77 
83  login_state_t get_login_state();
84 
90  void set_char_creation_state(char_creation_state_t new_char_creation_state);
91 
97  char_creation_state_t get_char_creation_state();
98 
99  /* Duerme el thread llamante hasta que el estado del juego
100  sea el esperado. */
101 
108  void wait_for_game_state(game_state_t expected_game_state);
109 
110  /* Duerme el thread llamante hasta que haya algun
111  cambio de estado. */
117 
123  void quit();
124 };
125 
126 #endif
GameStateMonitor::wait_for_game_state
void wait_for_game_state(game_state_t expected_game_state)
Duerme el thread llamante hasta que el estado del juego sea el esperado.
Definition: game_state_monitor.cpp:55
GameStateMonitor::get_login_state
login_state_t get_login_state()
Devuelve el estado de login.
Definition: game_state_monitor.cpp:38
GameStateMonitor::quit
void quit()
Setea el estado como desconectado, y el estado de juego como EXITING.
Definition: game_state_monitor.cpp:48
GameStateMonitor::set_char_creation_state
void set_char_creation_state(char_creation_state_t new_char_creation_state)
Setea el nuevo estado de creacion de personaje.
Definition: game_state_monitor.cpp:32
GameStateMonitor
Monitor mediante el cual se sincroniza el flujo entre vistas.
Definition: game_state_monitor.h:29
GameStateMonitor::set_game_state
void set_game_state(game_state_t new_game_state)
Setea el nuevo estado del juego.
Definition: game_state_monitor.cpp:21
GameStateMonitor::is_connected
bool is_connected()
Indica si el cliente esta conectado.
Definition: game_state_monitor.cpp:10
GameStateMonitor::set_connected_status
void set_connected_status(bool new_connection_status)
Setea el nuevo estado de conexion.
Definition: game_state_monitor.cpp:15
GameStateMonitor::get_game_state
game_state_t get_game_state()
Devuelve el estado del juego.
Definition: game_state_monitor.cpp:70
GameStateMonitor::set_login_state
void set_login_state(login_state_t new_login_state)
Setea el nuevo estado del login.
Definition: game_state_monitor.cpp:27
GameStateMonitor::get_char_creation_state
char_creation_state_t get_char_creation_state()
Devuelve el estado de creacion de personaje.
Definition: game_state_monitor.cpp:43
GameStateMonitor::wait_for_next_game_state
void wait_for_next_game_state()
Duerme el thread llamante hasta que haya un cambio de estado.
Definition: game_state_monitor.cpp:65