Nu är kursens slut väldigt nära och takten på projektet har ökats markant. Det har crunchat en hel del med många timmar per dag. Mycket har blivit gjort under dessa sista dagar vilket gör det svårt att välja bara en artifakt att skriva om. Det som har gjorts är mycket saker men för det mesta små saker. Det jag gjorde förra veckan som var nytt för mig, fast fortfarande inte helt nytt, var att implementera animationer på skölden när den laddas upp. Det låter inte svårt och det var det jag tänkte när jag började med det hela.
Jag hade lagt dit en placeholder rektangel som bara fyllde ut hålet i HUDen när spelaren aktiverat skölden. Den blev mindre när spelaren tog skada och spelaren tog skada på sitt hp när skölden tagit slut. Det jag behövde ändra och lägga till var hela animationen på skölden som fylls på, en timer som efter 8 sekunder fyller på hela skölden igen med samma animation som när man aktiverar skölden, tillsammans med det nollställs den timern när spelaren tar skada så att skölden fylls på 8 sekunder efter spelaren har tagit skada. När skölden har fyllts på ska även en pulserande animation spelas hela tiden och den animationen ska förminskas när spelaren tar skada.
Det första jag gjorde var att ladda in ett spritesheet med hela animationen på i vår animationsklass. Vår animationsklass laddar in alla frames i en lista av rektanglar som den väljer ut från spritesheetet och spelar upp i en viss tid per frame update. Inladdningen av animationen gick smärtfritt eftersom jag har implementerat många animationer vid det här laget. Jag behövde nu lägga till en timer som räknade lika länge som animationens längd i sekunder för att sedan byta animation till den pulserande animationen när recharge animationen spelats klart. Det här steget gick också bra av samma anledning som tidigare. Det jobbiga steget som jag inte hade gjort förut var att försöka få den pulserande animationen att förminskas i bredd när spelaren tar skada. Den tidigare lösningen jag hade gjort var att ta en 1 pixel bred bild som jag sedan kallade på funktionen setScale på och skickade in sköldens ”liv” som argument. Men det funkade inte nu eftersom animationen inte är 1 pixel bred utan den är 41 pixlar bred. Lösningen jag kom fram till som var lättast och den enda som jag kunde förstå och orkade programmera klockan 2 på natten var att skapa en rektangel som är lika bred som sköldens ”liv” och bara rita ut animationen med samma storlek som den rektangeln. Detta görs med funktionen setTextureRect som tar in en IntRect som argument. Detta löste mina problem och ritade ut animationen rätt.
Mitt program som jag kan göra gifs med funkar inte just nu så får ta min gruppmedlems bild som inte har den fina animationen som jag pratat om i detta inlägg. Den har dock den andra animationen som jag lagt in som finns på skeppet istället. 🙂