Id: | To index | |
Original: | Legend | |
Status: | ||
Mutant: | Show |
Testcases to display
Filter by kind
Filter by status
1: // |
2: // mob.h |
3: // minirl |
4: // |
5: // Created by Benjamin Porter on 1/1/18. |
6: // Copyright © 2018 Benjamin Porter. All rights reserved. |
7: // |
8: |
9: # ifndef mob_h |
10: # define mob_h |
11: |
12: # include "entity.h" |
13: # include "util.h" |
14: |
15: # include < cstdint > |
16: # include < string > |
17: |
18: enum class MobCategory { Unknown , Rabbit , Snake , Orc , Player } ; |
19: |
20: enum class MobType { Unknown , Rabbit , RabbitWere , Snake , OrcWeak , OrcStrong , Player } ; |
21: |
22: inline std : : string to_string ( MobType type ) { |
23: using namespace std : : string_literals ; |
24: |
25: switch ( type ) { |
26: default : |
27: case MobType : : Unknown : |
28: return "MobType::Unknown" s ; |
29: case MobType : : Rabbit : |
30: return "MobType::Rabbit" s ; |
31: case MobType : : RabbitWere : |
32: return "MobType::RabbitWere" s ; |
33: case MobType : : Snake : |
34: return "MobType::Snake" s ; |
35: case MobType : : OrcWeak : |
36: return "MobType::OrcWeak" s ; |
37: case MobType : : OrcStrong : |
38: return "MobType::OrcStrong" s ; |
39: case MobType : : Player : |
40: return "MobType::Player" s ; |
41: } |
42: } |
43: |
44: struct MobInfo { |
45: MobCategory category { MobCategory : : Unknown } ; |
46: std : : string name { } ; |
47: int32_t health = 0 ; |
48: bool attacks = false ; |
49: int32_t strength = 0 ; |
50: int32_t speed = 4 ; // 1 = slowest, 10 = fastest |
51: } ; |
52: |
53: class Mob : public Component { |
54: public : |
55: static const int TicksPerAction = 15 ; |
56: |
57: Mob ( ) = default ; |
58: Mob ( const MobInfo * info ) : info { info } { } |
59: const MobInfo * info { & sMobInfo } ; |
60: |
61: vec2i position { 0 , 0 } ; |
62: int32_t health { 0 } ; |
63: int32_t tick { 0 } ; |
64: |
65: // type-specific data |
66: vec2i dir { 0 , 1 } ; |
67: |
68: // additional components (references to children) |
69: ident extraSprite { invalid_id } ; |
70: ident extraSprite2 { invalid_id } ; |
71: |
72: private : |
73: static MobInfo sMobInfo ; |
74: } ; |
75: |
76: # endif /* mob_h */ |