diff options
-rw-r--r-- | src/common.hpp | 2 | ||||
-rw-r--r-- | src/game/game.cpp | 20 | ||||
-rw-r--r-- | src/game/game.hpp | 3 | ||||
-rw-r--r-- | src/game/text.cpp | 14 |
4 files changed, 33 insertions, 6 deletions
diff --git a/src/common.hpp b/src/common.hpp index 9da2d4c..7b2f24a 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -216,6 +216,8 @@ namespace game { }; class state_t { + void group_say(std::string text); + public: world::world_t world; interface::state_t *interface; diff --git a/src/game/game.cpp b/src/game/game.cpp index 22b883e..d086cb6 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -81,10 +81,13 @@ void state_t::stop(void) { } -void state_t::select(rectf_t x) +void state_t::group_say(std::string text) { - size_t old_cookie = selection_cookie; + interface->print(text::get(text::SAY_GROUP) + ": " + text); +} +void state_t::select(rectf_t x) +{ selection_cookie++; selected_units.clear(); @@ -99,12 +102,14 @@ void state_t::select(rectf_t x) if (!unit->controllable) continue; - if (!unit->dead && unit->selected != old_cookie) - unit->say(text::get(text::SAY_READY)); - unit->selected = selection_cookie; selected_units.insert(unit); } + + if (selected_units.size() == 1) + (*selected_units.begin())->say(text::get(text::SAY_READY)); + else if (selected_units.size() > 1) + group_say(text::get(text::SAY_READY_GROUP)); } void state_t::command(v2f_t x) @@ -114,6 +119,9 @@ void state_t::command(v2f_t x) snap[0] = std::round(x[0] - 0.5f) + 0.5f; snap[1] = std::round(x[1] - 0.5f) + 0.5f; + if (selected_units.size() > 1) + group_say(text::get(text::SAY_MOVING_GROUP)); + for (unit_t *unit : selected_units) { if (unit->dead) continue; @@ -123,7 +131,7 @@ void state_t::command(v2f_t x) if (!unit->start_moving(snap)) unit->say(text::get(text::SAY_NO_PATH)); - else + else if (selected_units.size() == 1) unit->say(text::get(text::SAY_MOVING)); } } diff --git a/src/game/game.hpp b/src/game/game.hpp index de41fc5..456a8ea 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -77,10 +77,13 @@ namespace game { UNPAUSED, FOLLOWING_ON, FOLLOWING_OFF, + SAY_GROUP, SAY_NO_PATH, SAY_BLOCKED, SAY_READY, + SAY_READY_GROUP, SAY_MOVING, + SAY_MOVING_GROUP, SAY_PANIC, UNIT_NAME_SPIDER, UNIT_NAME_SOLDIER, diff --git a/src/game/text.cpp b/src/game/text.cpp index f8c3f71..7addbfa 100644 --- a/src/game/text.cpp +++ b/src/game/text.cpp @@ -23,6 +23,9 @@ static std::string get_english(index_t index) case FOLLOWING_OFF: return "Following: off."; + case SAY_GROUP: + return "Group"; + case SAY_BLOCKED: return "Something is in my way."; @@ -30,11 +33,15 @@ static std::string get_english(index_t index) return "I can't get there."; case SAY_READY: + case SAY_READY_GROUP: return "Ready for orders."; case SAY_MOVING: return "On my way."; + case SAY_MOVING_GROUP: + return "On our way."; + case SAY_PANIC: return "I'm not getting paid enough for this."; @@ -94,6 +101,9 @@ static std::string get_polish(index_t index) case FOLLOWING_OFF: return "Podążanie: wyłączone."; + case SAY_GROUP: + return "Oddział"; + case SAY_BLOCKED: return "Coś jest na mojej drodze."; @@ -101,11 +111,15 @@ static std::string get_polish(index_t index) return "Nie mogę się tam dostać."; case SAY_READY: + case SAY_READY_GROUP: return "Gotowy na rozkaz."; case SAY_MOVING: return "Jestem w drodze."; + case SAY_MOVING_GROUP: + return "W drodze."; + case SAY_PANIC: return "Za mało mi za to płacą."; |