#include "common.hpp" namespace game { class unit_t : public world::entity_t { world::world_t *world; void compute_bounds(v2f_t x) { bounds[0] = x + size[0]; bounds[1] = x + size[1]; render_bounds[0] = x + render_size[0]; render_bounds[1] = x + render_size[1]; } public: rectf_t size, render_size; struct { world::tile_index_t pos; bool moving; std::list path; world::tile_index_t dest; } move; void place(world::world_t *world, world::tile_index_t pos) { move.pos = pos; move.moving = false; unlink(); compute_bounds((v2f_t)pos + v2f_t(0.5f, 0.5f)); link(world); } void keep_moving(void) { if (!move.moving) return; } bool start_moving(world::tile_index_t dest) { return false; } }; class human_t : public unit_t { public: void render_to(render::state_t *render) { float angle = 0; render->render((move.moving ? &assets::human.legs_walking : &assets::human.legs_idle), render_bounds, angle); render->render(&assets::human.body_idle, render_bounds, angle); render->render(&assets::human.head_idle, render_bounds, angle); } }; static human_t human; void state_t::start(void) { human.size[0] = v2f_t(-0.4f, -0.4f); human.size[1] = v2f_t(+0.4f, +0.4f); human.render_size[0] = v2f_t(-0.5f, -1.0f); human.render_size[1] = v2f_t(+0.5f, +0.5f); human.place(&world, world::tile_index_t(0, 0)); } void state_t::tick(void) { } } //namespace game