Wrath of Zeus
Made by Torchlight Games for CSE 125 SP24
Loading...
Searching...
No Matches
stat.hpp
Go to the documentation of this file.
1#pragma once
2
4#include <iostream>
5
6template <typename T>
7class Stat {
8public:
10 _min(min), _max(max), _base(base), _mod(0), _mult(1)
11 {
12 if (_base < _min) {
13 _base = _min;
14 } else if (_base > _max) {
15 _base = _max;
16 }
17 }
18
19 T increase(T delta) {
20 return _adjust(_base, delta);
21 }
22
23 T decrease(T delta) {
24 return _adjust(_base, -delta);
25 }
26
27 void increaseMax(T delta) {
28 _max += delta;
29 }
30
31 void decreaseMax(T delta) {
32 _max -= delta;
33 }
34
35 void addMod(T delta) {
36 _mod += delta;
37 }
38
39 void subMod(T delta) {
40 _mod -= delta;
41 }
42
43 void addMult(T delta) {
44 _mult += delta;
45 }
46
47 void subMult(T delta) {
48 _mult -= delta;
49 }
50
51 T current() const {
52 return std::max(_min, std::min(_max ,(_base + _mod) * _mult));
53 }
54
55 T min() const { return _min; }
56 T max() const { return _max; }
57 T base() const { return _base; }
58 T mod() const { return _mod; }
59 T mult() const { return _mult; }
60
61 DEF_SERIALIZE(Archive& ar, const unsigned int version) {
62 ar & _min & _max & _base & _mod & _mult;
63 }
64
65private:
66 T _min;
67 T _max;
68
69 T _base;
70 T _mod;
71 T _mult;
72
73 T _adjust(T& val, T delta) {
74 val += delta;
75 T overflow = 0;
76 if (val > _max) {
77 overflow = val - _max;
78 val = _max;
79 } else if (val < _min) {
80 overflow = _min - val;
81 val = _min;
82 }
83
84 return overflow;
85 }
86};
Definition: stat.hpp:7
void addMod(T delta)
Definition: stat.hpp:35
void addMult(T delta)
Definition: stat.hpp:43
T mult() const
Definition: stat.hpp:59
T max() const
Definition: stat.hpp:56
Stat(T min, T max, T base)
Definition: stat.hpp:9
T increase(T delta)
Definition: stat.hpp:19
void increaseMax(T delta)
Definition: stat.hpp:27
T mod() const
Definition: stat.hpp:58
T base() const
Definition: stat.hpp:57
T min() const
Definition: stat.hpp:55
void decreaseMax(T delta)
Definition: stat.hpp:31
T current() const
Definition: stat.hpp:51
DEF_SERIALIZE(Archive &ar, const unsigned int version)
Definition: stat.hpp:61
void subMod(T delta)
Definition: stat.hpp:39
void subMult(T delta)
Definition: stat.hpp:47
T decrease(T delta)
Definition: stat.hpp:23
GLuint GLfloat * val
Definition: glad.h:2480
@ T
Definition: mazegenerator.hpp:44