From 4be0ebc16108f3308d5cf7547999bcd940169628 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sat, 17 Aug 2024 09:09:52 -0500 Subject: [PATCH] Added animated water and lava tiles. --- assets/HamsterGame.tiled-session | 1 + assets/Terrain.tsx | 25 +++++++++++++++++++++++++ assets/TestLevel.tmx | 14 +++++++------- assets/gametiles.png | Bin 71533 -> 72316 bytes src/HamsterGame.cpp | 22 +++++++++++++++++++++- src/HamsterGame.h | 5 ++++- src/TODO.txt | 9 +++++++++ src/olcPixelGameEngine.h | 8 ++++---- src/olcUTIL_Animate2D.h | 4 ++-- 9 files changed, 73 insertions(+), 15 deletions(-) diff --git a/assets/HamsterGame.tiled-session b/assets/HamsterGame.tiled-session index 4ca9167..5c6725c 100644 --- a/assets/HamsterGame.tiled-session +++ b/assets/HamsterGame.tiled-session @@ -8,6 +8,7 @@ ], "fileStates": { }, + "frame.defaultDuration": 200, "last.imagePath": "C:/Users/sigon/source/repos/hamster/assets", "map.lastUsedFormat": "tmx", "openFiles": [ diff --git a/assets/Terrain.tsx b/assets/Terrain.tsx index 4e940f7..f18dcb0 100644 --- a/assets/Terrain.tsx +++ b/assets/Terrain.tsx @@ -6,6 +6,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/TestLevel.tmx b/assets/TestLevel.tmx index 2a5c67d..3fb979c 100644 --- a/assets/TestLevel.tmx +++ b/assets/TestLevel.tmx @@ -16,13 +16,13 @@ 1235,1153,1154,1234,1207,1234,494,1177,494,494,494,494,494,494,1021,298,1021,298,1051,1137,1138,1106,993,1021,1110,1134,1138,1022,1109,1082, 1181,1179,1266,1178,1182,1234,494,494,494,1149,494,1179,1181,494,1051,1136,1137,1137,1138,1022,1025,1109,993,993,1110,1022,1026,1134,1137,1138, 1234,1235,1151,1237,1266,1209,1149,1179,1180,1180,1263,1266,1209,494,1107,1108,1108,1108,1108,1109,993,1021,1080,298,1107,1109,1107,1108,1108,1108, -1206,1149,1121,1238,1266,1262,1264,1266,1150,1236,1153,1236,1237,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494, -1209,494,1177,1210,1150,1153,1152,1154,1206,494,494,494,494,494,1121,1121,1149,1179,1180,1181,1207,1206,1177,1121,494,494,1149,494,494,1121, -1209,494,1177,1235,1237,1121,1177,1207,1234,1149,1121,494,494,1177,494,494,1149,1235,1154,1206,1235,1237,1179,1181,494,494,494,494,494,1149, -1178,494,494,494,1121,494,1121,1238,1209,494,494,494,494,494,1149,494,1121,494,1182,1262,1263,1265,1266,1209,494,494,494,494,1179,1264, -1237,1149,1177,494,494,494,494,1238,1178,494,1121,1179,1265,1265,1180,1181,494,1121,1235,1151,1154,1150,1154,1206,1149,494,494,1149,1235,1152, -494,1121,1149,1121,494,1149,1179,1266,1206,494,1177,1207,1150,1236,1151,1237,494,1177,1121,494,1238,1234,1235,1237,494,494,494,494,494,1149, -494,494,494,494,494,494,1235,1154,1234,1179,1263,1266,1209,1121,494,1177,494,1149,1177,494,1210,1209,494,1177,494,494,1149,1121,1121,494 +1206,1149,1121,1238,1266,1262,1264,1266,1150,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,494,494,494,494,494,494,494,494,494,494,494, +1209,494,1177,1210,1150,1153,1152,1154,1206,1328,1352,1381,1381,1381,1381,1381,1381,1354,1328,1181,1207,1051,1135,1136,1137,1053,1149,494,494,1121, +1209,494,1177,1235,1237,1121,1177,1207,1234,1328,1380,1385,1385,1385,1385,1385,1385,1382,1328,1386,1386,1054,1413,1413,1413,1081,494,494,494,1149, +1178,494,494,494,1121,494,1121,1238,1209,1328,1380,1385,1385,1385,1385,1385,1385,1382,1328,1386,1386,1082,1413,1413,1413,1081,494,494,1179,1264, +1237,1149,1177,494,494,494,494,1238,1178,1328,1380,1385,1385,1385,1385,1385,1385,1382,1328,1386,1386,1110,1413,1413,1413,1081,494,1149,1235,1152, +494,1121,1149,1121,494,1149,1179,1266,1206,1328,1408,1381,1381,1381,1381,1381,1381,1410,1328,494,1238,1107,1108,1108,1108,1109,494,494,494,1149, +494,494,494,494,494,494,1235,1154,1234,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,494,1210,1209,494,1177,494,494,1149,1121,1121,494 diff --git a/assets/gametiles.png b/assets/gametiles.png index 9027707af14212d2ea0ea59522d4bbd56d5d9648..524a9fe62881b98581af0398a18f62c7d2aaf530 100644 GIT binary patch delta 31753 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 diff --git a/src/HamsterGame.cpp b/src/HamsterGame.cpp index a2d119e..14625d7 100644 --- a/src/HamsterGame.cpp +++ b/src/HamsterGame.cpp @@ -8,6 +8,7 @@ std::unordered_map std::unordered_mapHamsterGame::GFX; const std::string HamsterGame::ASSETS_DIR{"assets/"}; PixelGameEngine*HamsterGame::self{nullptr}; +std::unordered_mapHamsterGame::ANIMATED_TILE_IDS; HamsterGame::HamsterGame(){ sAppName = "Project Hamster"; @@ -56,6 +57,14 @@ void HamsterGame::LoadAnimations(){ }; LoadAnimation(DEFAULT,"hamster.png",{{0,32},{32,32}},0.3f); + Animate2D::FrameSequence&waterAnimFrames{(*ANIMATED_TILE_IDS.insert({1384,Animate2D::FrameSequence{0.2f}}).first).second}; + for(vf2d&sourcePos:std::vector{{192+16*0,784},{192+16*1,784},{192+16*2,784},{192+16*3,784},{192+16*4,784},{192+16*5,784},{192+16*6,784},{192+16*7,784}}){ + waterAnimFrames.AddFrame(Animate2D::Frame{&GetGFX("gametiles.png"),{sourcePos,{16,16}}}); + } + Animate2D::FrameSequence&lavaAnimFrames{(*ANIMATED_TILE_IDS.insert({1412,Animate2D::FrameSequence{0.2f}}).first).second}; + for(vf2d&sourcePos:std::vector{{192+16*0,800},{192+16*1,800},{192+16*2,800},{192+16*3,800},{192+16*4,800},{192+16*5,800},{192+16*6,800},{192+16*7,800},{192+16*8,800}}){ + lavaAnimFrames.AddFrame(Animate2D::Frame{&GetGFX("gametiles.png"),{sourcePos,{16,16}}}); + } } void HamsterGame::LoadLevel(const std::string_view mapName){ @@ -93,12 +102,19 @@ void HamsterGame::DrawLevelTiles(){ int imgTileX{tileID%numTilesWide}; int imgTileY{tileID/numTilesWide}; - tv.DrawPartialDecal(vf2d{float(tileX),float(tileY)}*16,GetGFX("gametiles.png").Decal(),vf2d{float(imgTileX),float(imgTileY)}*16,{16,16}); + if(ANIMATED_TILE_IDS.count(tileID)){ + Animate2D::FrameSequence&animatedTile{ANIMATED_TILE_IDS[tileID]}; + const Animate2D::Frame¤tFrame{animatedTile.GetFrame(runTime)}; + tv.DrawPartialDecal(vf2d{float(tileX),float(tileY)}*16,currentFrame.GetSourceImage()->Decal(),currentFrame.GetSourceRect().pos,currentFrame.GetSourceRect().size); + }else{ + tv.DrawPartialDecal(vf2d{float(tileX),float(tileY)}*16,GetGFX("gametiles.png").Decal(),vf2d{float(imgTileX),float(imgTileY)}*16,{16,16}); + } } } } bool HamsterGame::OnUserUpdate(float fElapsedTime){ + runTime+=fElapsedTime; UpdateGame(fElapsedTime); DrawGame(); return true; @@ -123,6 +139,10 @@ PixelGameEngine&HamsterGame::Game(){ return *self; } +const double HamsterGame::GetRuntime()const{ + return runTime; +} + int main() { HamsterGame game; diff --git a/src/HamsterGame.h b/src/HamsterGame.h index e230d75..5879d93 100644 --- a/src/HamsterGame.h +++ b/src/HamsterGame.h @@ -49,7 +49,7 @@ class HamsterGame : public olc::PixelGameEngine const static std::string ASSETS_DIR; public: enum AnimationState{ - DEFAULT + DEFAULT, }; HamsterGame(); @@ -63,6 +63,8 @@ public: static const Renderable&GetGFX(const std::string_view img); static const Animate2D::Animation&GetAnimations(const std::string_view img); static PixelGameEngine&Game(); + static std::unordered_mapANIMATED_TILE_IDS; + const double GetRuntime()const; private: void UpdateGame(const float fElapsedTime); void DrawGame(); @@ -77,4 +79,5 @@ private: Border border; void DrawLevelTiles(); std::optionalcurrentMap; + double runTime{}; }; \ No newline at end of file diff --git a/src/TODO.txt b/src/TODO.txt index df70236..94a8802 100644 --- a/src/TODO.txt +++ b/src/TODO.txt @@ -1,2 +1,11 @@ +Walkways - 100% +Grass - 80% +Sand - 60% +Swamp - 50%, after 5 seconds: Hamster sinks and respawns. +Lava - Hamster melts (*dies*) and respawns. +Water - +Hamster Wheel - Enhances Speed + +============================ olcPGEX_ViewPort - Submit a PR where the offset is subtracted instead of added to determine clip region cutoffs. \ No newline at end of file diff --git a/src/olcPixelGameEngine.h b/src/olcPixelGameEngine.h index 9fe62ff..c7fbb7c 100644 --- a/src/olcPixelGameEngine.h +++ b/src/olcPixelGameEngine.h @@ -2855,8 +2855,8 @@ namespace olc di.decal = decal; di.tint = { tint, tint, tint, tint }; di.pos = { { vQuantisedPos.x, vQuantisedPos.y }, { vQuantisedPos.x, vQuantisedDim.y }, { vQuantisedDim.x, vQuantisedDim.y }, { vQuantisedDim.x, vQuantisedPos.y } }; - olc::vf2d uvtl = (source_pos + olc::vf2d(0.0001f, 0.0001f)) * decal->vUVScale; - olc::vf2d uvbr = (source_pos + source_size - olc::vf2d(0.0001f, 0.0001f)) * decal->vUVScale; + olc::vf2d uvtl = (source_pos + olc::vf2d(0.01f, 0.01f)) * decal->vUVScale; + olc::vf2d uvbr = uvtl + ((source_size - olc::vf2d(0.02f, 0.02f)) * decal->vUVScale); di.uv = { { uvtl.x, uvtl.y }, { uvtl.x, uvbr.y }, { uvbr.x, uvbr.y }, { uvbr.x, uvtl.y } }; di.w = { 1,1,1,1 }; di.mode = nDecalMode; @@ -2883,8 +2883,8 @@ namespace olc di.decal = decal; di.tint = { tint, tint, tint, tint }; di.pos = { { vScreenSpacePos.x, vScreenSpacePos.y }, { vScreenSpacePos.x, vScreenSpaceDim.y }, { vScreenSpaceDim.x, vScreenSpaceDim.y }, { vScreenSpaceDim.x, vScreenSpacePos.y } }; - olc::vf2d uvtl = (source_pos) * decal->vUVScale; - olc::vf2d uvbr = uvtl + ((source_size) * decal->vUVScale); + olc::vf2d uvtl = (source_pos + olc::vf2d(0.02f, 0.02f)) * decal->vUVScale; + olc::vf2d uvbr = (source_pos + source_size - olc::vf2d(0.03f, 0.03f)) * decal->vUVScale; di.uv = { { uvtl.x, uvtl.y }, { uvtl.x, uvbr.y }, { uvbr.x, uvbr.y }, { uvbr.x, uvtl.y } }; di.w = { 1,1,1,1 }; di.mode = nDecalMode; diff --git a/src/olcUTIL_Animate2D.h b/src/olcUTIL_Animate2D.h index c1d29f9..580b68f 100644 --- a/src/olcUTIL_Animate2D.h +++ b/src/olcUTIL_Animate2D.h @@ -124,7 +124,7 @@ namespace olc::utils::Animate2D } // Returns a Frame Object for a given time into an animation - inline const Frame& GetFrame(const float fTime) const + inline const Frame& GetFrame(const double fTime) const { return m_vFrames[ConvertTimeToFrame(fTime)]; } @@ -135,7 +135,7 @@ namespace olc::utils::Animate2D float m_fFrameDuration = 0.1f; float m_fFrameRate = 10.0f; - inline const size_t ConvertTimeToFrame(const float fTime) const + inline const size_t ConvertTimeToFrame(const double fTime) const { switch (m_nStyle) {