From cb408a63a0f03ccb0b0ce7c338527a3b4964aff9 Mon Sep 17 00:00:00 2001
From: Clyne Sullivan <tullivan99@gmail.com>
Date: Thu, 20 Oct 2016 08:44:58 -0400
Subject: removed all old entity stuff

---
 src/ui_action.cpp.bak | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 143 insertions(+)
 create mode 100644 src/ui_action.cpp.bak

(limited to 'src/ui_action.cpp.bak')

diff --git a/src/ui_action.cpp.bak b/src/ui_action.cpp.bak
new file mode 100644
index 0000000..9029907
--- /dev/null
+++ b/src/ui_action.cpp.bak
@@ -0,0 +1,143 @@
+#include <ui_action.hpp>
+#include <world.hpp>
+
+#define ACTION_PROLOUGE { actioning = true; }
+#define ACTION_EPILOUGE { actioning = false; actionHover = 0; }
+
+extern World *currentWorld;
+extern Arena *arena;
+extern Player *player;
+extern bool inBattle;
+
+static std::vector<std::pair<std::string, vec3>> actionText = {
+    {"Attack", vec3 {0, 0, 0}},
+    {"Action", vec3 {0, 0, 0}},
+    {"Umm"   , vec3 {0, 0, 0}}
+};
+
+void actionAttack(void);
+void actionAction(void);
+
+static std::vector<void (*)(void)> actionFunc = {
+    actionAttack,
+    actionAction,
+    nullptr,
+};
+
+static bool actionToggle = false, actioning = false;
+static unsigned int actionHover = 0;
+static Entity *nearEntity = nullptr, *lastEntity = nullptr;
+
+namespace ui {
+    namespace action {
+        bool make = false;
+
+        // enables action ui
+        void enable(void) {
+            actionToggle = true;
+        }
+
+        // disables action ui
+        void disable(void) {
+            actionToggle = false;
+
+            if (lastEntity != nullptr)
+                lastEntity->canMove = true;
+        }
+
+        // draws the action ui
+        void draw(vec2 loc) {
+            unsigned int i = 1;
+            float y = loc.y;
+
+            if (!actionToggle)
+                return;
+
+            nearEntity = currentWorld->getNearInteractable(*player);
+
+            if (nearEntity == nullptr) {
+                if (lastEntity != nullptr) {
+                    lastEntity->canMove = true;
+                    lastEntity = nullptr;
+                }
+                return;
+            } else if (nearEntity != lastEntity) {
+                if (lastEntity != nullptr)
+                    lastEntity->canMove = true;
+                lastEntity = nearEntity;
+            }
+
+            if (make) {
+                while(actioning);
+
+                if (!actionHover) {
+                    make = false;
+                    return;
+                }
+
+                if (actionFunc[actionHover - 1] != nullptr)
+                    std::thread(actionFunc[actionHover - 1]).detach();
+
+                actionHover = 0;
+            } else {
+                nearEntity->canMove = false;
+                ui::drawBox(vec2 {loc.x - HLINES(11), loc.y}, vec2 {loc.x + HLINES(12), loc.y + actionText.size() * HLINES(8)});
+
+                for (auto &s : actionText) {
+                    s.second.z = ui::putStringCentered((s.second.x = loc.x), (s.second.y = (y += fontSize * 1.15f)), s.first) / 2;
+
+                    if (ui::mouse.x > s.second.x - s.second.z && ui::mouse.x < s.second.x + s.second.z &&
+                        ui::mouse.y > s.second.y && ui::mouse.y < s.second.y + ui::fontSize) {
+                        actionHover = i;
+                        ui::setFontColor(255, 100, 100, 255);
+                        ui::putStringCentered(s.second.x, s.second.y, s.first);
+                        ui::setFontColor(255, 255, 255, 255);
+                    }
+                    i++;
+                }
+
+                ui::putStringCentered(loc.x, y + fontSize * 1.2f, nearEntity->name);
+            }
+
+            if (i == actionText.size())
+                actionHover = 0;
+
+            ui::setFontColor(255, 255, 255, 255);
+            make = false;
+        }
+    }
+}
+
+void actionAttack(void)
+{
+    ACTION_PROLOUGE;
+
+    auto m = currentWorld->getNearInteractable(*player);
+
+    if (m->type == MOBT) {
+        if (!inBattle && m != nullptr) {
+            arena->fight(currentWorld, player, Mobp(m));
+
+            ui::toggleWhiteFast();
+            ui::waitForCover();
+            currentWorld = arena;
+            ui::toggleWhiteFast();
+        }
+    } else {
+        ui::dialogBox(player->name, "", false, "%s doesn't appear to be in the mood for fighting...", m->name.c_str());
+    }
+
+    ACTION_EPILOUGE;
+}
+
+void actionAction(void)
+{
+    ACTION_PROLOUGE;
+
+    auto e = currentWorld->getNearInteractable(*player);
+
+    if (e->type == NPCT)
+        e->interact();
+
+    ACTION_EPILOUGE;
+}
-- 
cgit v1.2.3