Tramway SDK
attributes.h
Go to the documentation of this file.
1// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime
2
3#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_ATTRIBUTES_H
4#define TRAM_SDK_EXTENSIONS_KITCHENSINK_ATTRIBUTES_H
5
6#include <vector>
7
8#include <framework/core.h>
9#include <framework/uid.h>
10
11namespace tram {
12 class Entity;
13}
14
15namespace tram::Ext::Kitchensink {
16
17enum : int {
21};
22
23struct Attribute {
28};
29
30struct Effect {
34 float value;
35 int type;
36 int flags;
37 float time;
38};
39
41
43public:
44 virtual void Recalculate(Attribute&, const AttributeContainer&);
45
46 name_t GetName() { return name; }
47 static void Register(AttributeInfo*);
48 static AttributeInfo* Find(name_t);
49protected:
51};
52
54 float GetAttribute(name_t attribute);
55 float GetAttributeBase(name_t attribute);
56
57 void SetAttribute(name_t attribute, float base_value);
58
59 void ApplyEffect(Effect effect);
60 void RemoveEffect(name_t tag);
61
62 bool HasAttribute(name_t type);
63
64 void Tick();
65
68 static void LoadFromDisk(const char*);
69
70 // maybe instead use global clock???
71 float last_tick = 0.0f;
72
73 std::vector<Attribute> attributes;
74 std::vector<Effect> effects;
75};
76
77}
78
79#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_ATTRIBUTES_H
Entity base class.
Definition: entity.h:23
Definition: attributes.h:42
static void Register(AttributeInfo *)
Definition: attributes.cpp:32
static AttributeInfo * Find(name_t)
Definition: attributes.cpp:36
name_t GetName()
Definition: attributes.h:46
name_t name
Definition: attributes.h:50
virtual void Recalculate(Attribute &, const AttributeContainer &)
Definition: attributes.cpp:26
Extension containing random stuff that doesn't fit in anywhere else.
Definition: ai.cpp:15
@ EFFECT_NEGATE_CHANGE
Definition: attributes.h:20
@ EFFECT_RAISE_CONSTANT
Definition: attributes.h:19
@ EFFECT_RAISE_BASE
Definition: attributes.h:18
Serialization, i.e.
uint32_t id_t
Definition: core.h:10
static AttributeContainer * Find(Entity *)
Definition: attributes.cpp:116
float last_tick
Definition: attributes.h:71
float GetAttribute(name_t attribute)
Definition: attributes.cpp:48
void RemoveEffect(name_t tag)
Definition: attributes.cpp:80
void Tick()
Definition: attributes.cpp:88
float GetAttributeBase(name_t attribute)
Definition: attributes.cpp:55
std::vector< Attribute > attributes
Definition: attributes.h:73
bool HasAttribute(name_t type)
Definition: attributes.cpp:84
static void LoadFromDisk(const char *)
Definition: attributes.cpp:131
std::vector< Effect > effects
Definition: attributes.h:74
void SetAttribute(name_t attribute, float base_value)
Definition: attributes.cpp:62
void ApplyEffect(Effect effect)
Definition: attributes.cpp:76
Definition: attributes.h:23
name_t name
Definition: attributes.h:24
float affected_value
Definition: attributes.h:26
float effective_value
Definition: attributes.h:27
float base_value
Definition: attributes.h:25
Definition: attributes.h:30
name_t tag
Definition: attributes.h:33
int type
Definition: attributes.h:35
name_t attribute
Definition: attributes.h:31
float value
Definition: attributes.h:34
int flags
Definition: attributes.h:36
name_t name
Definition: attributes.h:32
float time
Definition: attributes.h:37
Interned string type.
Definition: uid.h:10