Id: To index
Original: Legend
Status:
Mutant: Show

Testcases to display

Filter by kind

Filter by status

1:
#
ifndef
 
event_hpp
2:
#
define
 
event_hpp
3:
4:
#
include
 
"entity.h"
5:
#
include
 
"mob.h"
6:
#
include
 
"util.h"
7:
#
include
 
"variant.h"
8:
9:
#
include
 
<
sstream
>
10:
#
include
 
<
string
>
11:
12:
struct
 
EvRemove
 
{
13:    
ident
 
entity
;
14:
}
;
15:
struct
 
EvKillMob
 
{
16:    
ident
 
who
;
17:
}
;
18:
struct
 
EvSpawnMob
 
{
19:    
MobType
 
type
;
20:    
vec2i
 
position
;
21:
}
;
22:
// Mob Actions
23:
struct
 
EvTryWalk
 
{
24:    
ident
 
mob
;
25:    
vec2i
 
from
;
26:    
vec2i
 
to
;
27:
}
;
28:
struct
 
EvWalked
 
{
29:    
ident
 
mob
;
30:    
vec2i
 
from
;
31:    
vec2i
 
to
;
32:
}
;
33:
struct
 
EvAttack
 
{
34:    
ident
 
mob
;
35:    
ident
 
target
;
36:
}
;
37:
38:
using
 
EvAny
 
=
 
variant
<
EvRemove
,
 
EvKillMob
,
 
EvSpawnMob
,
 
EvTryWalk
,
 
EvWalked
,
 
EvAttack
>
;
39:
40:
inline
 
std
:
:
string
 
to_string
(
const
 
EvAny
&
 
any
)
 
{
41:    
std
:
:
ostringstream
 
oss
;
42:    
if
 
(
any
.
is
<
EvRemove
>
(
)
)
 
{
43:        
auto
&
 
ev
 
=
 
any
.
get
<
EvRemove
>
(
)
;
44:        
oss
 
<<
 
"EvRemove {"
 
<<
 
to_string
(
ev
.
entity
)
 
<<
 
"}"
;
45:    
}
 
else
 
if
 
(
any
.
is
<
EvKillMob
>
(
)
)
 
{
46:        
auto
&
 
ev
 
=
 
any
.
get
<
EvKillMob
>
(
)
;
47:        
oss
 
<<
 
"EvKillMob {"
 
<<
 
to_string
(
ev
.
who
)
 
<<
 
"}"
;
48:    
}
 
else
 
if
 
(
any
.
is
<
EvSpawnMob
>
(
)
)
 
{
49:        
auto
&
 
ev
 
=
 
any
.
get
<
EvSpawnMob
>
(
)
;
50:        
oss
 
<<
 
"EvSpawnMob {"
 
<<
 
to_string
(
ev
.
type
)
 
<<
 
", "
 
<<
 
to_string
(
ev
.
position
)
 
<<
 
"}"
;
51:    
}
 
else
 
if
 
(
any
.
is
<
EvTryWalk
>
(
)
)
 
{
52:        
auto
&
 
ev
 
=
 
any
.
get
<
EvTryWalk
>
(
)
;
53:        
oss
 
<<
 
"EvTryWalk {"
 
<<
 
to_string
(
ev
.
mob
)
 
<<
 
", "
 
<<
 
to_string
(
ev
.
from
)
 
<<
 
", "
54:            
<<
 
to_string
(
ev
.
to
)
 
<<
 
"}"
;
55:    
}
 
else
 
if
 
(
any
.
is
<
EvWalked
>
(
)
)
 
{
56:        
auto
&
 
ev
 
=
 
any
.
get
<
EvWalked
>
(
)
;
57:        
oss
 
<<
 
"EvWalked {"
 
<<
 
to_string
(
ev
.
mob
)
 
<<
 
", "
 
<<
 
to_string
(
ev
.
from
)
 
<<
 
", "
58:            
<<
 
to_string
(
ev
.
to
)
 
<<
 
"}"
;
59:    
}
 
else
 
if
 
(
any
.
is
<
EvAttack
>
(
)
)
 
{
60:        
auto
&
 
ev
 
=
 
any
.
get
<
EvAttack
>
(
)
;
61:        
oss
 
<<
 
"EvAttack {"
 
<<
 
to_string
(
ev
.
mob
)
 
<<
 
", "
 
<<
 
to_string
(
ev
.
target
)
 
<<
 
"}"
;
62:    
}
63:    
return
 
oss
.
str
(
)
;
64:
}
65:
66:
#
endif