summaryrefslogtreecommitdiff
path: root/Building.c
blob: f2955e0787cf5dd344fac471f5be22731ae24e01 (plain) (blame)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/* **************************************
 * 	Includes							*
 * **************************************/
 
#include "Building.h"
#include "BarracksSpr.c"
 
/* **************************************
 * 	Defines								*
 * **************************************/
 
/* **************************************
 * 	Local variables						*
 * **************************************/

/* Sprites */
static TYPE_SPRITE BarracksSpr;
static TYPE_SPRITE BarracksShadowSpr;

/* Tables */ 
static uint8_t BuildingHPTable[] = { 100 };
static TYPE_SPRITE * BuildingSprTable[] = {&BarracksSpr};
static TYPE_SPRITE * BuildingShadowSprTable[] = {&BarracksShadowSpr};

void BuildingInit(void)
{
	BarracksSpr.Data = BarracksSpr_Data;
	BarracksSpr.w = GfxGetWidthFromSpriteData(BarracksSpr_Data);
	BarracksSpr.h = GfxGetHeightFromSpriteData(BarracksSpr_Data);
	BarracksSpr.flip = 0;
	BarracksSpr.rotation = 0;
	BarracksSpr.color = GFX_BLACK;
	
	BarracksShadowSpr.Data = BarracksShadowSpr_Data;
	BarracksShadowSpr.w = GfxGetWidthFromSpriteData(BarracksShadowSpr_Data);
	BarracksShadowSpr.h = GfxGetHeightFromSpriteData(BarracksShadowSpr_Data);
	BarracksShadowSpr.flip = 0;
	BarracksShadowSpr.rotation = 0;
	BarracksShadowSpr.color = GFX_GRAY;
	
}

uint8_t BuildingGetHpFromID(uint8_t id)
{
	return BuildingHPTable[id];
}

void BuildingSelectedOptions(TYPE_BUILDING * ptrBuilding)
{
	
	
}

void BuildingDraw(TYPE_CAMERA * ptrCamera, TYPE_BUILDING * ptrBuilding, bool bSelected)
{
	uint8_t id = ptrBuilding->id;
	
	if(ptrBuilding->built == false)
	{
		return;
	}
	
	CameraApplyCoordinatesToSprite(	ptrCamera,
									BuildingShadowSprTable[id],
									ptrBuilding->x - 6,
									ptrBuilding->y );
	GfxDrawSprite(BuildingShadowSprTable[id]);
	
	CameraApplyCoordinatesToSprite(	ptrCamera,
									BuildingSprTable[id],
									ptrBuilding->x,
									ptrBuilding->y );
									
	GfxDrawSprite(BuildingSprTable[id]);
	
	int8_t color = GFX_WHITE;
	
	if(	(bSelected == true) && (ptrBuilding->selected == false)	)
	{
		color = GFX_GRAY;
	}
	else if(ptrBuilding->selected == true)
	{
		color = GFX_BLACK;
	}
	
	if(color != GFX_WHITE)
	{			
		TYPE_COLLISION_BLOCK cb = CameraApplyCoordinatesToCoordinates(ptrCamera, ptrBuilding->x, ptrBuilding->y);
		
		cb.w = BuildingGetWidthFromID(ptrBuilding->id);
		cb.h = BuildingGetWidthFromID(ptrBuilding->id);
		
		GfxDrawRectangle(	cb.x - (cb.w / 10),
							cb.y - (cb.h / 10),
							BuildingGetWidthFromID(ptrBuilding->id) + (cb.w / 5),
							BuildingGetHeightFromID(ptrBuilding->id) + (cb.h / 5),
							color			);
	}
	
}

uint8_t BuildingGetWidthFromID(uint8_t id)
{
	return GfxGetWidthFromSpriteData(BuildingSprTable[id]->Data);
}

uint8_t BuildingGetHeightFromID(uint8_t id)
{
	return GfxGetHeightFromSpriteData(BuildingSprTable[id]->Data);
}