aboutsummaryrefslogtreecommitdiff
path: root/BlueTileBehavior.cpp
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-10-13 19:06:52 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2024-10-13 19:06:52 +0200
commit5ab49aa46b6f1a9cd5196165009d2ee08b6b7a87 (patch)
treebbc3967b299ee2b272efcd83e3c0c4ed82ce7de6 /BlueTileBehavior.cpp
parentfeaf272efad381414c6ee76c0cd4bf929e8087ae (diff)
implement all tile behaviors
Diffstat (limited to 'BlueTileBehavior.cpp')
-rw-r--r--BlueTileBehavior.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/BlueTileBehavior.cpp b/BlueTileBehavior.cpp
index ca714a4..fbca527 100644
--- a/BlueTileBehavior.cpp
+++ b/BlueTileBehavior.cpp
@@ -1,12 +1,39 @@
#include <memory>
#include "BlueTileBehavior.h"
+#include "Artist.h"
+#include "Tile.h"
+#include "TileData.h"
using namespace std;
BlueTileBehavior BlueTileBehavior::instance {"B"};
-void BlueTileBehavior::update(Tile &) {
+void BlueTileBehavior::step(Artist & artist) {
+ this->interactions++;
+ if (this->interactions > 1) return;
+
+ if (artist.data.vx == 0) dx = 1;
+ if (artist.data.vy == 0) dy = 1;
+}
+
+void BlueTileBehavior::update_neighbor(Tile * tile) {
+ if (tile == nullptr) return;
+
+ TileData new_data = tile->data;
+ new_data.type = "B";
+ tile->set_data(new_data);
+}
+
+void BlueTileBehavior::update(Tile & tile) {
+ if (this->interactions < 1) return;
+
+ this->update_neighbor(tile.get_neighbor(this->dx, this->dy));
+ this->update_neighbor(tile.get_neighbor(-this->dx, -this->dy));
+
+ TileData new_data = tile.data;
+ new_data.type = "Y";
+ tile.set_data(new_data);
}
unique_ptr<TileBehaviorStrategy> BlueTileBehavior::clone(Museum & museum) {