blob: cfd433b2c468786d2b13ec448aeea2d7ff06eb0f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#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
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;
}
|