#include "common.hpp" namespace game { class unit_t : public world::entity_t { }; class human_t : public unit_t { public: float angle = 0.0f; bool walking = false; float stalin = 0.0f; void render_to(render::state_t *render) { render->render((walking ? &assets::human.legs_walking : &assets::human.legs_idle), bounds, angle); render->render(&assets::human.body_idle, bounds, angle); render->render(&assets::human.head_idle, bounds, angle); } }; static std::list humans; void state_t::start(void) { for (size_t i = 0; i < 5; i++) { humans.emplace(humans.end()); human_t &human = *(--humans.end()); human.bounds.v[0] = v2f_t(0.33f, 0); human.bounds.v[1] = human.bounds.v[0] + v2f_t(0.66f, 1.0f); human.render_bounds = human.bounds; human.link(&world); } } void state_t::tick(void) { for (human_t &human : humans) { human.stalin -= ((float)rand() / RAND_MAX) * 0.1f; human.walking = false; if (human.stalin < 0) { v2f_t delta; human.walking = true; human.angle += (rand() & 2 ? 0.2f : -0.2f); human.unlink(); delta = v2f_t(cos(human.angle), sin(human.angle)) * 0.04; human.bounds[0] += delta; human.bounds[1] += delta; human.render_bounds = human.bounds; human.link(&world); } if (human.stalin < -4.0f) human.stalin = (float)rand() / RAND_MAX * 3.0f; } } } //namespace game