Merge branch 'master' of http://sig.projectdivar.com/sigonasr2/AdventuresInLestoria
@ -0,0 +1,108 @@ |
|||||||
|
#pragma region License |
||||||
|
/*
|
||||||
|
License (OLC-3) |
||||||
|
~~~~~~~~~~~~~~~ |
||||||
|
|
||||||
|
Copyright 2024 Joshua Sigona <sigonasr2@gmail.com> |
||||||
|
|
||||||
|
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 "LoadingScreen.h" |
||||||
|
#include "util.h" |
||||||
|
|
||||||
|
INCLUDE_game |
||||||
|
INCLUDE_WINDOW_SIZE |
||||||
|
INCLUDE_ANIMATION_DATA |
||||||
|
|
||||||
|
bool LoadingScreen::loading=false; |
||||||
|
int LoadingScreen::currentProgress=0; |
||||||
|
int LoadingScreen::totalProgress=0; |
||||||
|
std::queue<std::function<bool()>>LoadingScreen::loadingPhases; |
||||||
|
bool LoadingScreen::showGhost=false; |
||||||
|
bool LoadingScreen::showLarge=false; |
||||||
|
|
||||||
|
void LoadingScreen::DeferLoad(std::function<bool()>waitCondition){ |
||||||
|
AddPhase(waitCondition); |
||||||
|
} |
||||||
|
|
||||||
|
void LoadingScreen::Update(){ |
||||||
|
if(loading){ |
||||||
|
if(loadingPhases.size()>0){ |
||||||
|
std::function<bool()>&loadFunc=loadingPhases.front(); |
||||||
|
if(loadFunc()){ |
||||||
|
currentProgress++; |
||||||
|
loadingPhases.pop(); |
||||||
|
} |
||||||
|
}else{ |
||||||
|
loading=false; |
||||||
|
GameState::STATE->OnLevelLoad(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
void LoadingScreen::Draw(){ |
||||||
|
if(loading){ |
||||||
|
game->FillRectDecal({0,0},WINDOW_SIZE,{VERY_DARK_GREEN.r,VERY_DARK_GREEN.g,VERY_DARK_GREEN.b,230}); |
||||||
|
|
||||||
|
game->FillRectDecal({22.f,WINDOW_SIZE.y-46.f},{(float(currentProgress)/totalProgress)*(WINDOW_SIZE.x-48.f)+4.f,28.f},VERY_DARK_GREEN/2); |
||||||
|
|
||||||
|
game->FillRectDecal({24.f,WINDOW_SIZE.y-48.f},{(float(currentProgress)/totalProgress)*(WINDOW_SIZE.x-48.f),24.f},DARK_YELLOW); |
||||||
|
game->DrawShadowStringPropDecal({24.f,WINDOW_SIZE.y-60.f},"Loading...",{170,210,0},BLACK,{1.f,1.5f}); |
||||||
|
|
||||||
|
vf2d playerScale=vf2d(game->GetPlayer()->GetSizeMult(),game->GetPlayer()->GetSizeMult()); |
||||||
|
float scale=1.f; |
||||||
|
if(showLarge){ |
||||||
|
scale=2.f; |
||||||
|
} |
||||||
|
const std::vector<Buff>attackBuffs=game->GetPlayer()->GetStatBuffs({"Attack","Attack %"}); |
||||||
|
Pixel blendCol=attackBuffs.size()>0?Pixel{255,uint8_t(255*abs(sin(1.4*attackBuffs[0].duration))),uint8_t(255*abs(sin(1.4*attackBuffs[0].duration)))}:WHITE; |
||||||
|
if(showGhost){ |
||||||
|
blendCol=BLACK; |
||||||
|
} |
||||||
|
game->GetPlayer()->GetWalkEAnimation(); |
||||||
|
Animate2D::FrameSequence&playerWalkE=ANIMATION_DATA[game->GetPlayer()->GetWalkEAnimation()]; |
||||||
|
game->DrawPartialRotatedDecal({(float(currentProgress)/totalProgress)*(WINDOW_SIZE.x-48.f),WINDOW_SIZE.y-36.f},playerWalkE.GetFrame(game->GetRuntime()).GetSourceImage()->Decal(),game->GetPlayer()->GetSpinAngle(),{12,12},playerWalkE.GetFrame(game->GetRuntime()).GetSourceRect().pos,playerWalkE.GetFrame(game->GetRuntime()).GetSourceRect().size,playerScale*scale,blendCol); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void LoadingScreen::Reset(){ |
||||||
|
currentProgress=0; |
||||||
|
totalProgress=0; |
||||||
|
showGhost=util::random()%6==0; |
||||||
|
showLarge=util::random()%6==0; |
||||||
|
while(loadingPhases.size()>0)ERR("WARNING! Previous loading phase was not properly cleared! This probably means some part of a previous load did not execute!"); |
||||||
|
} |
||||||
|
|
||||||
|
void LoadingScreen::AddPhase(std::function<bool()>loadFunc){ |
||||||
|
loadingPhases.push(loadFunc); |
||||||
|
totalProgress++; |
||||||
|
} |
@ -0,0 +1,57 @@ |
|||||||
|
#pragma region License |
||||||
|
/*
|
||||||
|
License (OLC-3) |
||||||
|
~~~~~~~~~~~~~~~ |
||||||
|
|
||||||
|
Copyright 2024 Joshua Sigona <sigonasr2@gmail.com> |
||||||
|
|
||||||
|
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 |
||||||
|
|
||||||
|
#include <queue> |
||||||
|
#include "olcUTIL_Animate2D.h" |
||||||
|
|
||||||
|
class LoadingScreen{ |
||||||
|
public: |
||||||
|
static bool loading; |
||||||
|
static int currentProgress; |
||||||
|
static int totalProgress; |
||||||
|
static float waitTime; |
||||||
|
static bool showGhost; |
||||||
|
static bool showLarge; |
||||||
|
static std::queue<std::function<bool()>>loadingPhases; |
||||||
|
static void Update(); |
||||||
|
static void Draw(); |
||||||
|
static void DeferLoad(std::function<bool()>waitCondition); |
||||||
|
static void Reset(); |
||||||
|
static void AddPhase(std::function<bool()>loadFunc); |
||||||
|
}; |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 5.4 KiB |
@ -1,4 +1,4 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
||||||
<tileset version="1.10" tiledversion="1.10.1" name="Minifantasy_TinyOverworldAllTiles" class="Terrain" tilewidth="4" tileheight="4" tilecount="8137" columns="79"> |
<tileset version="1.10" tiledversion="1.10.2" name="Minifantasy_TinyOverworldAllTiles" class="Terrain" tilewidth="4" tileheight="4" tilecount="8137" columns="79"> |
||||||
<image source="commercial_assets/Minifantasy_TinyOverworldAllTiles.png" width="316" height="412"/> |
<image source="commercial_assets/Minifantasy_TinyOverworldAllTiles.png" width="316" height="412"/> |
||||||
</tileset> |
</tileset> |
||||||
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.1 KiB |