#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.left = 0.33f; human.bounds.top = 0; human.bounds.width = 0.66f; human.bounds.height = 1.0f; 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) { human.walking = true; human.angle += (rand() & 2 ? 0.2f : -0.2f); human.unlink(); human.bounds.left += cos(human.angle) * 0.04; human.bounds.top += sin(human.angle) * 0.04; human.link(&world); } if (human.stalin < -4.0f) human.stalin = 2.0f; } } } //namespace game