diff options
Diffstat (limited to 'src/game')
-rw-r--r-- | src/game/game.hpp | 26 | ||||
-rw-r--r-- | src/game/text.cpp | 112 |
2 files changed, 138 insertions, 0 deletions
diff --git a/src/game/game.hpp b/src/game/game.hpp index 3fed3ec..b2bf0dd 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -55,6 +55,32 @@ namespace game { void load(void); } + namespace text { + typedef enum { + LANG_ENGLISH, + LANG_POLISH + } language_t; + + extern language_t language; + + typedef enum { + SAY_NO_PATH, + SAY_BLOCKED, + SAY_READY, + SAY_MOVING, + UNIT_NAME_SPIDER, + UNIT_NAME_SOLDIER, + UNIT_DEATH, + UNIT_ATTACK, + UNIT_MISS, + UNIT_CRITICAL_MISS, + UNIT_CRITICAL_HIT, + UNIT_DAMAGE + } index_t; + + std::string get(index_t index); + } + class entity_t : public world::entity_t { public: game::state_t *game = 0; diff --git a/src/game/text.cpp b/src/game/text.cpp new file mode 100644 index 0000000..3b611e2 --- /dev/null +++ b/src/game/text.cpp @@ -0,0 +1,112 @@ +#include "game.hpp" + +namespace game::text { + +language_t language = LANG_ENGLISH; + +static const char *soldier_names[] = { + "Kowalski", "Jackson", "Carter", "O'Neill", "Hammond", "Mitchell" +}; + +static std::string get_english(index_t index) +{ + switch (index) { + case SAY_BLOCKED: + return "Something is in my way."; + + case SAY_NO_PATH: + return "I can't get there."; + + case SAY_READY: + return "Ready for orders."; + + case SAY_MOVING: + return "On my way."; + + case UNIT_NAME_SPIDER: + return "Spider"; + + case UNIT_NAME_SOLDIER: + return soldier_names[rand() % count(soldier_names)]; + + case UNIT_DEATH: + return "died"; + + case UNIT_ATTACK: + return "attacks"; + + case UNIT_MISS: + return "miss"; + + case UNIT_CRITICAL_MISS: + return "critical miss"; + + case UNIT_CRITICAL_HIT: + return "critical hit"; + + case UNIT_DAMAGE: + return "deals damage"; + + default: + abort(); + } +} + +static std::string get_polish(index_t index) +{ + switch (index) { + case SAY_BLOCKED: + return "Coś jest na mojej drodze."; + + case SAY_NO_PATH: + return "Nie mogę się tam dostać."; + + case SAY_READY: + return "Gotowy na rozkaz."; + + case SAY_MOVING: + return "Jestem w drodze."; + + case UNIT_NAME_SPIDER: + return "Pająk"; + + case UNIT_NAME_SOLDIER: + return soldier_names[rand() % count(soldier_names)]; + + case UNIT_DEATH: + return "nie żyje"; + + case UNIT_ATTACK: + return "atakuje"; + + case UNIT_MISS: + return "chybienie"; + + case UNIT_CRITICAL_MISS: + return "chybienie krytyczne"; + + case UNIT_CRITICAL_HIT: + return "trafienie krytyczne"; + + case UNIT_DAMAGE: + return "zadaje obrażenia"; + + default: + abort(); + } +} +std::string get(index_t index) +{ + switch (language) { + case LANG_ENGLISH: + return get_english(index); + + case LANG_POLISH: + return get_polish(index); + + default: + abort(); + } +} + +} // namespace text |