diff options
Diffstat (limited to 'src/cObject.cpp')
-rw-r--r-- | src/cObject.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/cObject.cpp b/src/cObject.cpp new file mode 100644 index 0000000..7dc194c --- /dev/null +++ b/src/cObject.cpp @@ -0,0 +1,82 @@ +#include "cObject.h" + +cObject::cObject(int _sx, int _sy) : pos({0,0}) , bSizeSet(false) +{ + setSize(_sx, _sy); +} + +cObject::~cObject() +{ + destruct(); +} + +sPos cObject::getPosition() +{ + return pos; +} + +void cObject::setPosition(sPos _pos) +{ + pos = _pos; +} + + +void cObject::setPosition(int _x, int _y) +{ + pos.x = _x; + pos.y = _y; +} + + +sObject cObject::getObject() +{ + return sObject{pos, wColor, cScreen, sizeX, sizeY}; +} + +//protected +cObject::cObject() : pos({0,0}) , bSizeSet(false){} + +void cObject::setSize(int _sx, int _sy) +{ + if(bSizeSet) + return; + + bBlockRender = true; //Block inherited render capabilities of parent + + sizeX = _sx; + sizeY = _sy; + + //Initialize 2D array + cScreen = (char**) malloc(sizeof *cScreen * _sx); + for (int i = 0; i < _sx; i++) + cScreen[i] = (char*)malloc(sizeof *cScreen[i] * _sy); + + wColor = (WORD**)malloc(sizeof *wColor * _sx); + for (int i = 0; i < _sx; i++) + wColor[i] = (WORD*)malloc(sizeof *wColor[i] * _sy); + + for (int i = 0; i < sizeY; i++) { + for (int o = 0; o < sizeX; o++) { + cScreen[o][i] = NULL; + wColor[o][i] = _COL_DEFAULT; + } + } + + bSizeSet = true; +} + +void cObject::destruct() +{ + if(!bSizeSet) + return; + + for (int i = 0; i < sizeX; i++) { + free(cScreen[i]); + free(wColor[i]); + } + + free(cScreen); + free(wColor); + + bSizeSet = false; +} |