-
Notifications
You must be signed in to change notification settings - Fork 0
/
event_generator.cpp
139 lines (112 loc) · 3.11 KB
/
event_generator.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
#include "TFTP_Packet.h"
#include "hanabi_game_fsm.h"
#include "Hanabi_Network_Defines.h"
hanabi_fsm_events_t event_generator(TFTP_Packet* packet)
{
hanabi_fsm_events_t event_name;
//I use switch to look all the packets and generate the correct event
switch ((packet->get_data_pck())[0]){
//Game configuration and communication cases
case HANABI_ACK_OP:
{
event_name = RECEIVE_ACK;
break;
}
case HANABI_NAME_OP:
{
event_name = RECEIVE_NAME;
break;
}
case HANABI_NAME_IS_OP:
{
event_name = RECEIVE_NAME_IS;
break;
}
case HANABI_START_INFO_OP:
{
event_name = RECEIVE_START_INFO;
break;
}
//Game start cases
case HANABI_YOU_START_OP:
{
event_name = RECEIVE_USTART;
break;
}
case HANABI_ISTART_OP:
{
event_name = RECEIVE_ISTART;
break;
}
//GamePlay cases
case HANABI_DISCARD_OP:
{
event_name = RECEIVE_DISCARD;
break;
}
case HANABI_PLAY_OP:
{
event_name = RECEIVE_PLAY;
break;
}
case HANABI_YOU_HAVE_OP:
{
event_name = RECEIVE_YOU_HAVE;
break;
}
case HANABI_DRAW_OP:
{
if( (packet->get_data_pck())[1] != NO_CARD_TO_DRAW)
event_name = RECEIVE_DRAW;
else
event_name = RECEIVE_DRAW_LAST;
break;
}
#warning ("Warning: los siguientes paquetes no se que eventos generan. Ademas ver la diferencia entre, RECEIVE_USTART, RECEIVE_ISTART y RECEIVE_YOU_HAVE, RECEIVE_DISCARD")
//Match End cases
case HANABI_WE_WON_OP:
{
event_name = RECEIVE_WE_WON;
break;
}
case HANABI_WE_LOST_OP:
{
event_name = RECEIVE_WE_LOST;
break;
}
case HANABI_MATCH_OVER_OP:
{
event_name = RECEIVE_MATCH_IS_OVER;
break;
}
//Game finished cases
case HANABI_PLAY_AGAIN_OP:
{
event_name = RECEIVE_PLAY_AGAIN;
break;
}
case HANABI_GAME_OVER_OP:
{
event_name = RECEIVE_GAME_OVER;
break;
}
//Quit and error handling
case HANABI_QUIT_OP:
{
//event_name = ;
break;
}
case HANABI_ERROR_OP:
{
event_name = RECEIVE_ERROR;
break;
}
}
return event_name; //After searching all the packets, I return the corresponding event
#warning ("Warning: no se que poner en default ")
}