X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcreature%2FComposition.hpp;h=969407f89b1ff7d42e6cf7c3a6dfef43699a9d9a;hb=00f55d5b55ff993d2516f00f8d635887562983c7;hp=06b1c744b51b2a94e2b961feb8222c72563c813d;hpb=475f28f06c9e14912bab8119264e247ef466513d;p=blobs.git diff --git a/src/creature/Composition.hpp b/src/creature/Composition.hpp index 06b1c74..969407f 100644 --- a/src/creature/Composition.hpp +++ b/src/creature/Composition.hpp @@ -1,10 +1,16 @@ #ifndef BLOBLS_CREATURE_COMPOSITION_HPP_ #define BLOBLS_CREATURE_COMPOSITION_HPP_ +#include "../world/Set.hpp" +#include "../world/Resource.hpp" + #include namespace blobs { +namespace world { + class Resource; +} namespace creature { class Composition { @@ -18,21 +24,27 @@ public: }; public: - Composition(); + explicit Composition(const world::Set &); ~Composition(); - Composition(const Composition &) = delete; - Composition &operator =(const Composition &) = delete; + Composition(const Composition &) = default; + Composition &operator =(const Composition &) = default; - Composition(Composition &&) = delete; - Composition &operator =(Composition &&) = delete; + Composition(Composition &&) = default; + Composition &operator =(Composition &&) = default; public: void Add(int res, double amount); bool Has(int res) const noexcept; double Get(int res) const noexcept; + double Proportion(int res) const noexcept; + double StateProportion(int res) const noexcept; + double Compatibility(int res) const noexcept; + double TotalMass() const noexcept { return total_mass; } + double StateMass(world::Resource::State s) const noexcept { return state_mass[s]; } public: + std::vector::size_type size() const noexcept { return components.size(); } std::vector::iterator begin() noexcept { return components.begin(); } std::vector::iterator end() noexcept { return components.end(); } std::vector::const_iterator begin() const noexcept { return components.begin(); } @@ -41,7 +53,10 @@ public: std::vector::const_iterator cend() noexcept { return components.cend(); } private: + const world::Set &resources; std::vector components; + double total_mass; + double state_mass[4]; };