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"?> |
||||
<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"/> |
||||
</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 |