113 lines
2.7 KiB
C
113 lines
2.7 KiB
C
/* **************************************
|
|
* 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(TYPE_BUILDING_ID 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(TYPE_BUILDING_ID id)
|
|
{
|
|
return GfxGetWidthFromSpriteData(BuildingSprTable[id]->Data);
|
|
}
|
|
|
|
uint8_t BuildingGetHeightFromID(TYPE_BUILDING_ID id)
|
|
{
|
|
return GfxGetHeightFromSpriteData(BuildingSprTable[id]->Data);
|
|
}
|
|
|