diff --git a/Adventures in Lestoria/Adventures in Lestoria.vcxproj b/Adventures in Lestoria/Adventures in Lestoria.vcxproj index e296c594..d7f893a3 100644 --- a/Adventures in Lestoria/Adventures in Lestoria.vcxproj +++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj @@ -411,6 +411,10 @@ + + + + @@ -749,6 +753,10 @@ + + + + diff --git a/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters b/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters index 2aa2f719..0a8ec6b7 100644 --- a/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters +++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters @@ -627,6 +627,12 @@ Header Files\steam + + Header Files + + + Header Files + @@ -1001,6 +1007,9 @@ Source Files + + Source Files + diff --git a/Adventures in Lestoria/AdventuresInLestoria.cpp b/Adventures in Lestoria/AdventuresInLestoria.cpp index 57c4fb43..d4c6560a 100644 --- a/Adventures in Lestoria/AdventuresInLestoria.cpp +++ b/Adventures in Lestoria/AdventuresInLestoria.cpp @@ -1805,6 +1805,10 @@ void AiL::RenderHud(){ std::string displayText=player->notificationDisplay.first; DrawShadowStringPropDecal(vf2d{float(ScreenWidth()/2),float(ScreenHeight()/4)-24}-GetTextSizeProp(displayText)/2,displayText,BLUE,VERY_DARK_BLUE); } + + minimap.Update(); + minimap.Draw(); + DisplayBossEncounterInfo(); #ifdef _DEBUG if("debug_player_info"_I){ @@ -2215,6 +2219,13 @@ void AiL::_PrepareLevel(MapName map,MusicChange changeMusic){ }); #pragma endregion + #pragma region Foreground and Upper Foreground Tile Fade Group Setup (Loading phase 3.5) + LoadingScreen::AddPhase([&](){ + minimap.Initialize(); + return true; + }); + #pragma endregion + #pragma region Foreground and Upper Foreground Tile Fade Group Setup (Loading phase 4) LoadingScreen::AddPhase([&](){ std::setforegroundTilesAdded,upperForegroundTilesAdded; diff --git a/Adventures in Lestoria/AdventuresInLestoria.h b/Adventures in Lestoria/AdventuresInLestoria.h index d066687a..8e428054 100644 --- a/Adventures in Lestoria/AdventuresInLestoria.h +++ b/Adventures in Lestoria/AdventuresInLestoria.h @@ -56,6 +56,7 @@ All rights reserved. #include "olcPixelGameEngine.h" #include "DynamicCounter.h" #include "UndefKeys.h" +#include "Minimap.h" class SteamKeyboardCallbackHandler; @@ -185,6 +186,7 @@ private: float vignetteDisplayTime=0.f; bool savingFile=false; bool prevStageCompleted=false; + Minimap minimap; void ValidateGameStatus(); void _PrepareLevel(MapName map,MusicChange changeMusic); diff --git a/Adventures in Lestoria/Minimap.cpp b/Adventures in Lestoria/Minimap.cpp new file mode 100644 index 00000000..ba7b0728 --- /dev/null +++ b/Adventures in Lestoria/Minimap.cpp @@ -0,0 +1,92 @@ +#pragma region License +/* +License (OLC-3) +~~~~~~~~~~~~~~~ + +Copyright 2024 Joshua Sigona + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions or derivations of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +2. Redistributions or derivative works in binary form must reproduce the above +copyright notice. This list of conditions and the following disclaimer must be +reproduced in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may +be used to endorse or promote products derived from this software without specific +prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +Portions of this software are copyright © 2024 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion + +#include "AdventuresInLestoria.h" +#include "DEFINES.h" +#include "Unlock.h" + +INCLUDE_game + +void Minimap::Initialize(){ + if(minimap.Sprite()==nullptr)minimap.Create(1,1); + if(cover.Sprite()==nullptr)cover.Create(1,1); + + #pragma region Cleanup minimap and cover images + minimap.Sprite()->Resize(game->GetCurrentMapData().width,game->GetCurrentMapData().height); + cover.Sprite()->Resize(game->GetCurrentMapData().width,game->GetCurrentMapData().height); + game->SetDrawTarget(minimap.Sprite()); + game->Clear(WHITE); + game->SetPixelMode(Pixel::ALPHA); + game->SetDrawTarget(cover.Sprite()); + game->Clear(BLANK); + //Will update the minimap decal at the end, since we are about to change it anyways. + cover.Decal()->Update(); + #pragma endregion + for(int x=0;xGetCurrentMapData().width;x++){ + for(int y=0;yGetCurrentMapData().height;y++){ + bool tileFound=false; + for(const LayerTag&layer:game->MAP_DATA[game->GetCurrentLevel()].GetLayers()){ + if(Unlock::IsUnlocked(layer.unlockCondition)){ + int tileID=layer.tiles[y][x]-1; + if(tileID!=-1){ + tileFound=true; + if(game->GetTileCollision(game->GetCurrentMapName(),vf2d{float(x),float(y)}*game->GetCurrentMapData().tilewidth)!=game->NO_COLLISION){ + minimap.Sprite()->SetPixel({x,y},BLACK); + } + break; + } + } + } + if(!tileFound){ + game->SetPixelMode(Pixel::ALPHA); + minimap.Sprite()->SetPixel({x,y},BLANK); + game->SetPixelMode(Pixel::NORMAL); + } + } + } + + minimap.Decal()->Update(); +} + +void Minimap::Update(){ + +} + +void Minimap::Draw(){ + game->DrawDecal(vf2d{float(game->ScreenWidth()-minimap.Sprite()->width),0},minimap.Decal()); +} \ No newline at end of file diff --git a/Adventures in Lestoria/Minimap.h b/Adventures in Lestoria/Minimap.h new file mode 100644 index 00000000..76b04a81 --- /dev/null +++ b/Adventures in Lestoria/Minimap.h @@ -0,0 +1,48 @@ +#pragma region License +/* +License (OLC-3) +~~~~~~~~~~~~~~~ + +Copyright 2024 Joshua Sigona + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions or derivations of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +2. Redistributions or derivative works in binary form must reproduce the above +copyright notice. This list of conditions and the following disclaimer must be +reproduced in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may +be used to endorse or promote products derived from this software without specific +prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +Portions of this software are copyright © 2024 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion +#pragma once + +class Minimap{ +public: + void Initialize(); + void Update(); + void Draw(); +private: + Renderable minimap; + Renderable cover; +}; \ No newline at end of file diff --git a/Adventures in Lestoria/TODO.txt b/Adventures in Lestoria/TODO.txt index ec5c4c36..3287a2f9 100644 --- a/Adventures in Lestoria/TODO.txt +++ b/Adventures in Lestoria/TODO.txt @@ -19,6 +19,14 @@ Steel Weapons appear in the demo for Chapter 2. Update display counters on the overworld map. Pressing movement keys that negate each other shouldn't cause a walking animation to occur. +>Start with a completely white image. +>Iterate through all tiles, no tile means set to transparent. Collision tile means set to black. +>Generate a blank map cover image. +>As the player navigates around the map, the blank map canvas gets updated based on distance. +>If a chunk has not been explored yet, it gets flagged as explored (probably unlock the chunks around the player as well). + +>When a map is visited later, all visited chunks are revealed again. + ============================================ Consider a "killed by player" / "marked by player" flag for monsters to determine if a player gets credit for a monster kill (for achievements) Make another actions config file for the main build (The app # is different) diff --git a/Adventures in Lestoria/Version.h b/Adventures in Lestoria/Version.h index e646d042..dcf327df 100644 --- a/Adventures in Lestoria/Version.h +++ b/Adventures in Lestoria/Version.h @@ -39,7 +39,7 @@ All rights reserved. #define VERSION_MAJOR 1 #define VERSION_MINOR 1 #define VERSION_PATCH 0 -#define VERSION_BUILD 8666 +#define VERSION_BUILD 8675 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Adventures in Lestoria/assets/screenshot10.png b/Adventures in Lestoria/assets/screenshot10.png new file mode 100644 index 00000000..6ac1c2fc Binary files /dev/null and b/Adventures in Lestoria/assets/screenshot10.png differ diff --git a/Adventures in Lestoria/assets/screenshot11.png b/Adventures in Lestoria/assets/screenshot11.png new file mode 100644 index 00000000..27990bb5 Binary files /dev/null and b/Adventures in Lestoria/assets/screenshot11.png differ diff --git a/Adventures in Lestoria/assets/screenshot12.png b/Adventures in Lestoria/assets/screenshot12.png new file mode 100644 index 00000000..0fb80c8c Binary files /dev/null and b/Adventures in Lestoria/assets/screenshot12.png differ diff --git a/Adventures in Lestoria/assets/screenshot8.png b/Adventures in Lestoria/assets/screenshot8.png new file mode 100644 index 00000000..a330c6c0 Binary files /dev/null and b/Adventures in Lestoria/assets/screenshot8.png differ diff --git a/Adventures in Lestoria/assets/screenshot9.png b/Adventures in Lestoria/assets/screenshot9.png new file mode 100644 index 00000000..8c1c6bd5 Binary files /dev/null and b/Adventures in Lestoria/assets/screenshot9.png differ diff --git a/x64/Release/Adventures in Lestoria.exe b/x64/Release/Adventures in Lestoria.exe index 739f7af7..04243f26 100644 Binary files a/x64/Release/Adventures in Lestoria.exe and b/x64/Release/Adventures in Lestoria.exe differ