From 87422cff1507f8b5a8633eee5dadbadfef872dab Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Sun, 22 Apr 2018 17:37:38 +0200 Subject: Add the builder. --- src/game/unit_soldier.cpp | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) (limited to 'src/game/unit_soldier.cpp') diff --git a/src/game/unit_soldier.cpp b/src/game/unit_soldier.cpp index 221667b..d511553 100644 --- a/src/game/unit_soldier.cpp +++ b/src/game/unit_soldier.cpp @@ -19,33 +19,33 @@ along with Minitrem. If not, see . namespace game { -static const char *initials[] = { - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "Ö", "P", "R", "S", "Ś", "T", "U", "Ü", "V", "W", "X", - "Z" -}; - static std::string soldier_name(procgen::prng_t *prng) { std::stringstream ss; static const char *names[] = { - "Kowalski", "O'Neill", "Hammond", "Mitchell", "Hitler", - "Stalin", "Wyspiański", "Bush", "Washington", "Jaruzelski", - "Jackson", "Carter", + "Heinrich", "Hans", "Ernst", "Dieter", "Werner", "Wolfgang", + "Uwe", "Klaus", "Adolf" + }; + static const char *surnames[] = { + "Kloss", "Schmidt", "Göring", "Fischer", "Müller", "Weber", + "Schulz", "Schäfer", "Klein", "Wofl", "Schröder", "Neumann", + "Zimmermann" }; - ss << initials[prng->next() % (sizeof(initials) / sizeof(initials[0]))]; - ss << ". "; ss << names[prng->next() % (sizeof(names) / sizeof(names[0]))]; + ss << " "; + ss << surnames[prng->next() % (sizeof(surnames) / sizeof(surnames[0]))]; return ss.str(); } +const float soldier_head_offset = 0.10f; + unit_soldier_t::unit_soldier_t(game::state_t *game) : unit_t(game, UNIT_SOLDIER) { size[0] = v2f_t(-0.3f, +0.0f); size[1] = v2f_t(+0.3f, +0.3f); - render_size[0] = v2f_t(-0.5f, -1.2f); + render_size[0] = v2f_t(-0.5f, -1.2f - soldier_head_offset); render_size[1] = v2f_t(+0.5f, +0.3f); cmodel.cflags = CF_BODY; move.cflags = CF_SOLID | CF_BODY | CF_WATER; @@ -240,9 +240,13 @@ void unit_soldier_t::render_to(render::state_t *render) } if (!dead) { + rectf_t rect_body; render::oriented_sprite_t *legs, *body; float body_angle; + rect_body = render_bounds; + rect_body[0][1] += soldier_head_offset; + if (move.moving && !move.blocked) legs = &assets::soldier.legs_walking; else @@ -261,8 +265,8 @@ void unit_soldier_t::render_to(render::state_t *render) body_angle = move.angle; } - render->render(game->now * 10, legs, render_bounds, move.angle); - render->render(game->now * 10, body, render_bounds, body_angle); + render->render(game->now * 10, legs, rect_body, move.angle); + render->render(game->now * 10, body, rect_body, body_angle); render->render(game->now * 10, &assets::soldier.head_idle, render_bounds, body_angle); } else { -- cgit