Vårt spel Mermaid River är en bra bra bit på väg mot sitt slutstadie. Dock har ett av de viktigaste visuella elementen nämligen animationer hamnat långt ner på listan över saker att göra. Därför var veckans uppgift för mig att implementera ett sådant system i spelet då vi börjar närma oss redovisningen av beta variationen. Från första början var det tänkt att det skulle ha varit klart innan presentationen av alfan men tyvärr drabbades vi av stora tekniska problem vilket gav animations systemet en låg prioritet. Vi hade tänkt oss först att bara animera karaktären och fienderna när de rör sig på banan. Men efter reflektioner som vi fick under vår presentation av spelet i alfa stadiet kom det upp förslag på andra saker som man skulle kunna animera för att framhäva vad objekten faktiskt är. Ett typiskt exempel på det är våra luftbubblor som i alfan inte riktigt likande en faktiskt bubbla då den var stel och såg mer ut som en pärla. Läsningen på vårt problem blir att animera den så den aldrig behåller samma form utan deformeras som en riktig luftbubbla skulle göra i vatten.
Till sfml finns ett tillägs bibliotek som heter Thor innehållande färdiggjorda komponenter för animering av grafik och för partikel system. Vår första tanke vara att använda dessa färdiga komponenter för att snabbt och effektivt implementera animationer i spelet men så blev inte fallet. Pågrund av brist av tid och tekniska svårigheter struntade jag i att använda Thor och byggde istället mitt egna system för att animera objekt. Systemet vi har nu består av en klass vid namn AnimationClip och en klass som kontrollerar och håller alla pågående animationer i spelet vid namn AnimationManager. För att skapa en animerad sprite krävs en textur och flera koordinater för varje bildruta. I animations hanteraren laddas en textur in och en text fil som har alla koordinaterna. Därifrån läser programmet av alla koordinaterna och skapar rektanglar som senare används för att bara rita ut vissa delar av texturen för varje frame. I AnimatipClip klassen kallas en updaterings funtion som har en timer med tiden för varje frame. När timern är nere vid noll byter klassen vilken bildruta som ska vissas och återställer timern. AniamtionClip innehåller också ett hastighetsvärde som vid modifiering kan öka eller sänka hastigheten i hela animationen
I AnimationManager har jag lagt till några extra funktioner som kan stoppa, starta och pausa alla animationer på en och samma gång istället för att kalla på en sådan funktion i alla objekt som har någon form av animation. Detta kommer användas när spelaren pausar spelet för att komma åt kontrollpanelen då spelet inte ska forsätta köra i bakgrunden.