61 lines
2.1 KiB
C++
61 lines
2.1 KiB
C++
#ifndef CREATURELIB_STATISTICSET_HPP
|
|
#define CREATURELIB_STATISTICSET_HPP
|
|
#include <stdint.h>
|
|
#include <exception>
|
|
#include "Statistic.hpp"
|
|
#include "../GenericTemplates.cpp"
|
|
|
|
namespace CreatureLib::Core{
|
|
template <class T>
|
|
class StatisticSet {
|
|
protected:
|
|
T _health;
|
|
T _physicalAttack;
|
|
T _physicalDefense;
|
|
T _magicalAttack;
|
|
T _magicalDefense;
|
|
T _speed;
|
|
public:
|
|
StatisticSet(T health, T physicalAttack, T physicalDefense, T magicalAttack, T magicalDefense, T speed)
|
|
: _health(health), _physicalAttack(physicalAttack),
|
|
_physicalDefense(physicalDefense), _magicalAttack(magicalAttack),
|
|
_magicalDefense(magicalDefense), _speed(speed){}
|
|
StatisticSet();
|
|
|
|
inline T GetHealth() const{ return _health; }
|
|
inline T GetPhysicalAttack() const{ return _physicalAttack; }
|
|
inline T GetPhysicalDefense() const{ return _physicalDefense; }
|
|
inline T GetMagicalAttack() const{ return _magicalAttack; }
|
|
inline T GetMagicalDefense() const{ return _magicalDefense; }
|
|
inline T GetSpeed() const{ return _speed; }
|
|
|
|
|
|
[[nodiscard]] inline T GetStat(Statistic stat) const{
|
|
switch (stat){
|
|
case Health: return _health;
|
|
case PhysicalAttack: return _physicalAttack;
|
|
case PhysicalDefense: return _physicalDefense;
|
|
case MagicalAttack: return _magicalAttack;
|
|
case MagicalDefense: return _magicalDefense;
|
|
case Speed: return _speed;
|
|
}
|
|
throw std::exception();
|
|
}
|
|
|
|
inline void SetStat(Statistic stat, T value){
|
|
switch (stat){
|
|
case Health: _health = value;
|
|
case PhysicalAttack: _physicalAttack = value;
|
|
case PhysicalDefense: _physicalDefense = value;
|
|
case MagicalAttack: _magicalAttack = value;
|
|
case MagicalDefense: _magicalDefense = value;
|
|
case Speed: _speed = value;
|
|
}
|
|
throw std::exception();
|
|
}
|
|
};
|
|
}
|
|
|
|
|
|
#endif //CREATURELIB_STATISTICSET_HPP
|