/* ************************************** * 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); }