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 |