Conquer Space 0.0.0
A space themed grand strategy game set in the near future, with realistic orbital mechanics, and an emphasis on economics and politics.
Public Member Functions | Public Attributes | Static Public Attributes | Private Member Functions | Friends | List of all members
cqsp::core::components::ModifiableValue< Op > Struct Template Reference

#include <modifier.h>

Public Member Functions

void recalculate ()
 
 operator double () const
 
 ModifiableValue ()=default
 
 ModifiableValue (double v)
 
template<typename T >
requires std::is_arithmetic_v<T>
ModifiableValue & operator= (T v)
 
template<typename T >
requires std::is_arithmetic_v<T>
ModifiableValue & operator+= (T v)
 
template<typename T >
requires std::is_arithmetic_v<T>
ModifiableValue & operator-= (T v)
 
template<typename T >
requires std::is_arithmetic_v<T>
ModifiableValue & operator*= (T v)
 
template<typename T >
requires std::is_arithmetic_v<T>
ModifiableValue & operator/= (T v)
 
template<typename T >
requires std::is_arithmetic_v<T>
bool operator== (T v) const
 
template<typename T >
requires std::is_arithmetic_v<T>
bool operator!= (T v) const
 
template<typename T >
requires std::is_arithmetic_v<T>
bool operator< (T v) const
 
template<typename T >
requires std::is_arithmetic_v<T>
bool operator> (T v) const
 
template<typename T >
requires std::is_arithmetic_v<T>
bool operator<= (T v) const
 
template<typename T >
requires std::is_arithmetic_v<T>
bool operator>= (T v) const
 

Public Attributes

double base = 0.0
 
double sum = identity
 
double value = 0.0
 
std::vector< std::pair< entt::entity, double > > modifiers
 

Static Public Attributes

static constexpr double identity = (Op == ModifierOp::Additive) ? 0.0 : 1.0
 

Private Member Functions

constexpr double _combine () const
 

Friends

template<typename T >
requires std::is_arithmetic_v<T>
double operator+ (ModifiableValue lhs, T rhs)
 
template<typename T >
requires std::is_arithmetic_v<T>
double operator+ (T lhs, ModifiableValue rhs)
 
template<typename T >
requires std::is_arithmetic_v<T>
double operator- (ModifiableValue lhs, T rhs)
 
template<typename T >
requires std::is_arithmetic_v<T>
double operator- (T lhs, ModifiableValue rhs)
 
template<typename T >
requires std::is_arithmetic_v<T>
double operator* (ModifiableValue lhs, T rhs)
 
template<typename T >
requires std::is_arithmetic_v<T>
double operator* (T lhs, ModifiableValue rhs)
 
template<typename T >
requires std::is_arithmetic_v<T>
double operator/ (ModifiableValue lhs, T rhs)
 
template<typename T >
requires std::is_arithmetic_v<T>
double operator/ (T lhs, ModifiableValue rhs)
 

Detailed Description

template<ModifierOp Op = ModifierOp::Multiplicative>
struct cqsp::core::components::ModifiableValue< Op >

Modifier value for additive or multiplicative values Call recalculate() after adding a modifier

Constructor & Destructor Documentation

◆ ModifiableValue() [1/2]

template<ModifierOp Op = ModifierOp::Multiplicative>
cqsp::core::components::ModifiableValue< Op >::ModifiableValue ( )
default

◆ ModifiableValue() [2/2]

template<ModifierOp Op = ModifierOp::Multiplicative>
cqsp::core::components::ModifiableValue< Op >::ModifiableValue ( double  v)
inline

Member Function Documentation

◆ _combine()

template<ModifierOp Op = ModifierOp::Multiplicative>
constexpr double cqsp::core::components::ModifiableValue< Op >::_combine ( ) const
inlineconstexprprivate

◆ operator double()

template<ModifierOp Op = ModifierOp::Multiplicative>
cqsp::core::components::ModifiableValue< Op >::operator double ( ) const
inline

◆ operator!=()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
bool cqsp::core::components::ModifiableValue< Op >::operator!= ( T  v) const
inline

◆ operator*=()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
ModifiableValue & cqsp::core::components::ModifiableValue< Op >::operator*= ( T  v)
inline

◆ operator+=()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
ModifiableValue & cqsp::core::components::ModifiableValue< Op >::operator+= ( T  v)
inline

◆ operator-=()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
ModifiableValue & cqsp::core::components::ModifiableValue< Op >::operator-= ( T  v)
inline

◆ operator/=()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
ModifiableValue & cqsp::core::components::ModifiableValue< Op >::operator/= ( T  v)
inline

◆ operator<()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
bool cqsp::core::components::ModifiableValue< Op >::operator< ( T  v) const
inline

◆ operator<=()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
bool cqsp::core::components::ModifiableValue< Op >::operator<= ( T  v) const
inline

◆ operator=()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
ModifiableValue & cqsp::core::components::ModifiableValue< Op >::operator= ( T  v)
inline

◆ operator==()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
bool cqsp::core::components::ModifiableValue< Op >::operator== ( T  v) const
inline

◆ operator>()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
bool cqsp::core::components::ModifiableValue< Op >::operator> ( T  v) const
inline

◆ operator>=()

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
bool cqsp::core::components::ModifiableValue< Op >::operator>= ( T  v) const
inline

◆ recalculate()

template<ModifierOp Op = ModifierOp::Multiplicative>
void cqsp::core::components::ModifiableValue< Op >::recalculate ( )
inline

Friends And Related Function Documentation

◆ operator* [1/2]

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
double operator* ( ModifiableValue< Op >  lhs,
T  rhs 
)
friend

◆ operator* [2/2]

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
double operator* ( T  lhs,
ModifiableValue< Op >  rhs 
)
friend

◆ operator+ [1/2]

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
double operator+ ( ModifiableValue< Op >  lhs,
T  rhs 
)
friend

◆ operator+ [2/2]

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
double operator+ ( T  lhs,
ModifiableValue< Op >  rhs 
)
friend

◆ operator- [1/2]

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
double operator- ( ModifiableValue< Op >  lhs,
T  rhs 
)
friend

◆ operator- [2/2]

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
double operator- ( T  lhs,
ModifiableValue< Op >  rhs 
)
friend

◆ operator/ [1/2]

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
double operator/ ( ModifiableValue< Op >  lhs,
T  rhs 
)
friend

◆ operator/ [2/2]

template<ModifierOp Op = ModifierOp::Multiplicative>
template<typename T >
requires std::is_arithmetic_v<T>
double operator/ ( T  lhs,
ModifiableValue< Op >  rhs 
)
friend

Member Data Documentation

◆ base

template<ModifierOp Op = ModifierOp::Multiplicative>
double cqsp::core::components::ModifiableValue< Op >::base = 0.0

◆ identity

template<ModifierOp Op = ModifierOp::Multiplicative>
constexpr double cqsp::core::components::ModifiableValue< Op >::identity = (Op == ModifierOp::Additive) ? 0.0 : 1.0
staticconstexpr

◆ modifiers

template<ModifierOp Op = ModifierOp::Multiplicative>
std::vector<std::pair<entt::entity, double> > cqsp::core::components::ModifiableValue< Op >::modifiers

◆ sum

template<ModifierOp Op = ModifierOp::Multiplicative>
double cqsp::core::components::ModifiableValue< Op >::sum = identity

◆ value

template<ModifierOp Op = ModifierOp::Multiplicative>
double cqsp::core::components::ModifiableValue< Op >::value = 0.0

The documentation for this struct was generated from the following file: