From 6a1ad62b26698e2483a7ec692c60f6cc3fa76561 Mon Sep 17 00:00:00 2001
From: Nao Pross <naopross@thearcway.org>
Date: Mon, 12 Feb 2018 19:31:00 +0100
Subject: Add Actor* member to tiles and implement Map::moveActor()

---
 src/main/cpp/Map.cpp      |  3 ++-
 src/main/cpp/Tile.cpp     | 11 +++++++++++
 src/main/headers/Tile.hpp | 11 +++++++++++
 3 files changed, 24 insertions(+), 1 deletion(-)
 create mode 100644 src/main/cpp/Tile.cpp

(limited to 'src')

diff --git a/src/main/cpp/Map.cpp b/src/main/cpp/Map.cpp
index 6d3ee01..3cb1b9d 100644
--- a/src/main/cpp/Map.cpp
+++ b/src/main/cpp/Map.cpp
@@ -24,5 +24,6 @@ const std::vector<Tile>& Map::tiles() const
 
 bool Map::moveActor(Tile &from, Tile &to)
 {
-    // TODO
+    to.actor(from.actor());
+    from.clearActor();
 }
diff --git a/src/main/cpp/Tile.cpp b/src/main/cpp/Tile.cpp
new file mode 100644
index 0000000..9fc436a
--- /dev/null
+++ b/src/main/cpp/Tile.cpp
@@ -0,0 +1,11 @@
+#include "Tile.hpp"
+
+bool Tile::actor(Actor *actor)
+{
+    if (_actor != nullptr) {
+        return false;
+    }
+
+    _actor = actor;
+    return true;
+}
diff --git a/src/main/headers/Tile.hpp b/src/main/headers/Tile.hpp
index 7292fde..919badc 100644
--- a/src/main/headers/Tile.hpp
+++ b/src/main/headers/Tile.hpp
@@ -1,6 +1,8 @@
 #ifndef TILE_HPP
 #define TILE_HPP
 
+#include "Actor.hpp"
+
 struct Tile
 {
     enum Type
@@ -12,6 +14,15 @@ struct Tile
     const int x, y;
 
     Tile(Type _type, int _x, int _y) : type(_type), x(_x), y(_y) {}
+
+    Actor* actor() { return _actor; }
+    bool actor(Actor *actor);
+
+    void clearActor() { _actor = nullptr; }
+
+private:
+    Actor *_actor = nullptr;
+
 };
 
 #endif
-- 
cgit v1.2.1