summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/game')
-rw-r--r--src/game/game.hpp26
-rw-r--r--src/game/text.cpp112
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