2 #include "InhaleNeed.hpp"
3 #include "IngestNeed.hpp"
5 #include "Creature.hpp"
6 #include "../world/Planet.hpp"
7 #include "../world/TileType.hpp"
16 void Need::Tick(double dt) noexcept {
20 void Need::Increase(double delta) noexcept {
21 value = std::min(1.0, value + delta);
24 void Need::Decrease(double delta) noexcept {
25 value = std::max(0.0, value - delta);
29 IngestNeed::IngestNeed(int resource, double speed, double damage)
36 IngestNeed::~IngestNeed() {
39 void IngestNeed::ApplyEffect(Creature &c, double dt) {
44 // TODO: find resource and start ingest task
45 if (c.GetSituation().OnSurface()) {
46 const world::TileType &t = c.GetSituation().GetTileType();
47 for (auto &yield : t.resources) {
48 if (yield.resource == resource) {
49 Decrease(std::min(yield.ubiquity, speed) * dt);
61 InhaleNeed::InhaleNeed(int resource, double speed, double damage)
68 InhaleNeed::~InhaleNeed() {
71 void InhaleNeed::ApplyEffect(Creature &c, double dt) {
76 if (c.GetSituation().OnPlanet() && c.GetSituation().GetPlanet().Atmosphere() == resource) {