aboutsummaryrefslogtreecommitdiff
path: root/cObjectHandler.cpp
diff options
context:
space:
mode:
authorGravatar jonas <himself@jonasgunz.de> 2018-12-27 00:26:34 +0100
committerGravatar jonas <himself@jonasgunz.de> 2018-12-27 00:26:34 +0100
commit7015245de4af673af3e6fa62d5d0f9c2e0c2a8a1 (patch)
tree8bec5d1716eebb0fedc75dcc036385443b1ecea5 /cObjectHandler.cpp
parent616951a353caf398908e6e6ce7dddf34a65513e5 (diff)
downloadtermgl-7015245de4af673af3e6fa62d5d0f9c2e0c2a8a1.tar.gz
cleaned working tree
Diffstat (limited to 'cObjectHandler.cpp')
-rw-r--r--cObjectHandler.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/cObjectHandler.cpp b/cObjectHandler.cpp
new file mode 100644
index 0000000..d35653a
--- /dev/null
+++ b/cObjectHandler.cpp
@@ -0,0 +1,63 @@
+#include "cObjectHandler.h"
+
+cObjectHandler::cObjectHandler(cRender *_render)
+{
+ render = _render;
+}
+
+int cObjectHandler::createObject(cObject *_object)
+{
+ objects.push_back(_object);
+ return objects.size() - 1;
+}
+
+int cObjectHandler::moveObject(int _object, sPos _pos, int _mode)
+{
+ if (_object >= objects.size()) //prevent segmentation faults
+ return 1;
+
+ if (!objects[_object])
+ return 1;
+
+ sPos objPosition = objects[_object]->getPosition();
+
+ if (_mode == _MOVE_RELATIVE)
+ objects[_object]->setPosition(sPos{ objPosition.x + _pos.x, objPosition.y + _pos.y });
+ else if (_mode == _MOVE_ABSOULUTE)
+ objects[_object]->setPosition(_pos);
+
+ return 0;
+}
+
+int cObjectHandler::destroyObject(int _object)
+{
+ delete objects[_object];
+ objects[_object] = NULL;
+
+ return 0;
+}
+
+int cObjectHandler::write()
+{
+ render->clear();
+
+ for (unsigned long int i = 0; i < objects.size(); i++)
+ {
+ if (objects[i]) // Check if objects[i] is existent
+ {
+ //Draw every Object
+ sObject obj = objects[i]->getObject(); //get Object #i
+
+ for (int o = 0; o < obj.sizeY; o++) { //y axis
+ for (int p = 0; p < obj.sizeX; p++) { //x axis
+ if (obj.cScreen[p][o]) { //Dont overwrite empty pixels
+ sPos pos{ obj.pos.x + p, obj.pos.y + o };
+ render->drawPoint(obj.cScreen[p][o], pos, true, obj.wColor[p][o]);
+ }
+ }
+ }
+ }
+ }
+
+ return 0;
+}