From 4d9ae2716f910766bebca73c29fe7dbc915f6097 Mon Sep 17 00:00:00 2001 From: Dev EhChad Date: Tue, 27 Jan 2026 08:12:01 -0500 Subject: [PATCH] learning section 3.15 --- dasher.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/dasher.cpp b/dasher.cpp index 42ad763..b4e98b6 100644 --- a/dasher.cpp +++ b/dasher.cpp @@ -1,5 +1,15 @@ #include +struct AnimData +{ + Rectangle rec; + Vector2 pos; + int frame; + float updateTime; + float runningTime; + +}; + int main() { // Specified width and height @@ -13,6 +23,20 @@ int main() { // Scarfy setup Texture2D scarfy = LoadTexture("textures/scarfy.png"); // Load the texture + AnimData scarfyData; + scarfyData.rec.width = scarfy.width / 6; + scarfyData.rec.height = scarfy.height; + scarfyData.rec.x = 0; + scarfyData.rec.y = 0; + + scarfyData.pos.x = windowWidth / 2 - scarfyData.rec.width / 2; + scarfyData.pos.y = windowHeight - scarfyData.rec.height; + scarfyData.frame = 0; + scarfyData.updateTime = 1.0 / 12.0; + scarfyData.runningTime = 0.0; + + // Scarfy Rectangle + Rectangle scarfyRect; scarfyRect.width = scarfy.width / 6; scarfyRect.height = scarfy.height; @@ -24,13 +48,39 @@ int main() { // Nebula setup Texture2D nebula = LoadTexture("textures/12_nebula_spritesheet.png"); // Load the texture + + // Nebula anim + + AnimData nebData{ + {0.0, 0.0, nebula.width / 8, nebula.height / 8}, // Rectangle rec + {windowWidth, windowHeight - nebula.height / 8}, // Vector2 pos + 0, // int frame + 1.0 / 12.0, // float updateTime + 0.0 // float runningTime + }; + + AnimData neb2Data{ + {0.0, 0.0, nebula.width / 8, nebula.height / 8}, // Rectangle rec + {windowWidth + 300, windowHeight - nebula.height / 8}, // Vector2 pos + 0, // int frame + 1.0 / 16.0, // float updateTime + 0.0 // float runningTime + }; + Rectangle nebRect{0.0, 0.0, nebula.width / 8, nebula.height / 8}; Vector2 nebulaPos{windowWidth, windowHeight - nebRect.height}; + Rectangle neb2Rect = nebRect; + Vector2 neb2Pos{windowWidth + 300, windowHeight - neb2Rect.height}; + int nebFrame{}; // Nebula animation frame const float nebUpdateTime{1.0 / 12.0}; // Nebula running time float nebRunningTime{}; // Nebula time since last frame change + int neb2Frame{}; // Nebula animation frame + const float neb2UpdateTime{1.0 / 16.0}; // Nebula running time + float neb2RunningTime{}; // Nebula time since last frame change + int nebVel{-200}; // Nebula x velocity (pixels per second) // Animation Frame @@ -77,6 +127,9 @@ int main() { // Nebula movement nebulaPos.x += nebVel * dT; + // Nebula 2 movement + neb2Pos.x += nebVel * dT; + // Update position scarfyPos.y += velocity * dT; @@ -112,8 +165,23 @@ int main() { } } + // Nebula animation frame + neb2RunningTime += dT; + if (neb2RunningTime >= (neb2UpdateTime)) + { + neb2RunningTime = 0.0; + neb2Rect.x = neb2Frame * neb2Rect.width; + neb2Frame++; + if (neb2Frame > 7) + { + neb2Frame = 0; + } + } + // draw Nebula DrawTextureRec(nebula, nebRect, nebulaPos, WHITE); // Draw the texture + // draw second Nebula + DrawTextureRec(nebula, neb2Rect, neb2Pos, RED); // Draw the texture // draw Scarfy DrawTextureRec(scarfy, scarfyRect, scarfyPos, WHITE); // Draw the texture