diff --git a/Adventures in Lestoria/Adventures in Lestoria.vcxproj b/Adventures in Lestoria/Adventures in Lestoria.vcxproj
index 0afd4a59..50d48d94 100644
--- a/Adventures in Lestoria/Adventures in Lestoria.vcxproj
+++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj
@@ -1000,6 +1000,10 @@
+
+
+
+
diff --git a/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters b/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters
index f1c98153..34c94e64 100644
--- a/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters
+++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters
@@ -1190,6 +1190,9 @@
Source Files
+
+ Source Files\Effects
+
diff --git a/Adventures in Lestoria/Animation.cpp b/Adventures in Lestoria/Animation.cpp
index f28709ba..7d48bf93 100644
--- a/Adventures in Lestoria/Animation.cpp
+++ b/Adventures in Lestoria/Animation.cpp
@@ -371,6 +371,7 @@ void sig::Animation::InitializeAnimations(){
CreateStillAnimation("chain_lightning.png",{1,9});
+ CreateHorizontalAnimationSequence("monstersoul.png",3,{24,24},AnimationData{.frameDuration{0.25f},.style{Animate2D::Style::Repeat}});
CreateHorizontalAnimationSequence("lightning_splash_effect.png",5,{24,24});
CreateHorizontalAnimationSequence("dagger_stab.png",2,{24,24},AnimationData{.frameDuration{0.1f},.style{Animate2D::Style::PingPong}});
CreateHorizontalAnimationSequence("goblin_sword_slash.png",3,{24,24},{0.05f,Animate2D::Style::OneShot});
diff --git a/Adventures in Lestoria/Effect.cpp b/Adventures in Lestoria/Effect.cpp
index 8846f431..4a69d684 100644
--- a/Adventures in Lestoria/Effect.cpp
+++ b/Adventures in Lestoria/Effect.cpp
@@ -42,6 +42,7 @@ All rights reserved.
INCLUDE_ANIMATION_DATA
INCLUDE_game
+INCLUDE_GFX
Effect::Effect(vf2d pos,float lifetime,std::string imgFile,bool upperLevel,float size,float fadeout,vf2d spd,Pixel col,float rotation,float rotationSpd,bool additiveBlending)
:Effect::Effect(pos,lifetime,imgFile,upperLevel,0.f,fadeout,vf2d{size,size},spd,col,rotation,rotationSpd,additiveBlending){}
@@ -84,13 +85,18 @@ void Effect::Draw()const{
const bool FadeInFinished{original_fadeInTime==0||fadein==original_fadeInTime};
const bool HasFadeout{fadeout>0};
+ if(GetZ()>0){
+ vf2d shadowScale=vf2d{8*size.x/3.f,1}/std::max(1.f,GetZ()/8);
+ game->view.DrawDecal(pos-vf2d{3,3}*shadowScale/2+vf2d{0,12*size.y},GFX["circle.png"].Decal(),shadowScale,BLACK);
+ }
+
[[unlikely]]if(!FadeInFinished){
- game->view.DrawPartialRotatedDecal(pos,GetFrame().GetSourceImage()->Decal(),rotation,GetFrame().GetSourceRect().size/2,GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,size,{col.r,col.g,col.b,uint8_t(fadein/original_fadeInTime*col.a)});
+ game->view.DrawPartialRotatedDecal(pos-vf2d{0,GetZ()},GetFrame().GetSourceImage()->Decal(),rotation,GetFrame().GetSourceRect().size/2,GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,size,{col.r,col.g,col.b,uint8_t(fadein/original_fadeInTime*col.a)});
}else
[[likely]]if(HasFadeout){
- game->view.DrawPartialRotatedDecal(pos,GetFrame().GetSourceImage()->Decal(),rotation,GetFrame().GetSourceRect().size/2,GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,size,{col.r,col.g,col.b,uint8_t(fadeout/original_fadeOutTime*col.a)});
+ game->view.DrawPartialRotatedDecal(pos-vf2d{0,GetZ()},GetFrame().GetSourceImage()->Decal(),rotation,GetFrame().GetSourceRect().size/2,GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,size,{col.r,col.g,col.b,uint8_t(fadeout/original_fadeOutTime*col.a)});
}else{
- game->view.DrawPartialRotatedDecal(pos,GetFrame().GetSourceImage()->Decal(),rotation,GetFrame().GetSourceRect().size/2,GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,size,col);
+ game->view.DrawPartialRotatedDecal(pos-vf2d{0,GetZ()},GetFrame().GetSourceImage()->Decal(),rotation,GetFrame().GetSourceRect().size/2,GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,size,col);
}
game->SetDecalMode(DecalMode::NORMAL);
}
@@ -105,4 +111,8 @@ bool Effect::OnUpperLevel(){
const EffectType Effect::GetType()const{
return type;
+}
+
+const float Effect::GetZ()const{
+ return z;
}
\ No newline at end of file
diff --git a/Adventures in Lestoria/Effect.h b/Adventures in Lestoria/Effect.h
index 1858afa1..2007cfef 100644
--- a/Adventures in Lestoria/Effect.h
+++ b/Adventures in Lestoria/Effect.h
@@ -62,6 +62,7 @@ struct Effect{
float rotationSpd=0;
vf2d scaleSpd{};
bool additiveBlending=false;
+ float z{};
private:
bool dead=false;
public:
@@ -73,6 +74,7 @@ public:
virtual void Draw()const;
bool OnUpperLevel();
const EffectType GetType()const;
+ const float GetZ()const;
protected:
float original_fadeOutTime;
float original_fadeInTime{};
@@ -141,4 +143,21 @@ struct ShineEffect:Effect{
private:
float fadeinTime;
const Pixel originalCol;
+};
+
+//Spawns and moves towards the player after some amount of time.
+struct MonsterSoul:Effect{
+ MonsterSoul(vf2d pos,float fadeoutTime,float size,vf2d spd,Pixel col,float rotation,float rotationSpd,bool additiveBlending=false);
+ virtual bool Update(float fElapsedTime)override final;
+ virtual void Draw()const override final;
+public:
+ enum Phase{
+ RISING,
+ TRACKING_PLAYER,
+ DEAD,
+ };
+ uint8_t alpha{0U};
+ Phase phase{RISING};
+ float moveSpd{24.f};
+ float fadeoutTime;
};
\ No newline at end of file
diff --git a/Adventures in Lestoria/Monster.cpp b/Adventures in Lestoria/Monster.cpp
index 616220d6..ae9e1a44 100644
--- a/Adventures in Lestoria/Monster.cpp
+++ b/Adventures in Lestoria/Monster.cpp
@@ -1001,6 +1001,8 @@ void Monster::OnDeath(){
if(strategyDeathFunc)GameEvent::AddEvent(std::make_unique(strategyDeathFunc,*this,MONSTER_DATA[name].GetAIStrategy()));
+ if(game->GetPlayer()->HasEnchant("Reaper of Souls"))game->AddEffect(std::make_unique(GetPos(),0.3f,GetSizeMult(),vf2d{},WHITE,0.f,0.f,false));
+
SpawnDrops();
game->GetPlayer()->AddAccumulatedXP(MONSTER_DATA.at(name).GetXP());
diff --git a/Adventures in Lestoria/MonsterSoul.cpp b/Adventures in Lestoria/MonsterSoul.cpp
new file mode 100644
index 00000000..a3af2637
--- /dev/null
+++ b/Adventures in Lestoria/MonsterSoul.cpp
@@ -0,0 +1,89 @@
+#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 "Effect.h"
+#include "util.h"
+#include "AdventuresinLestoria.h"
+#include "SoundEffect.h"
+
+INCLUDE_game
+INCLUDE_GFX
+
+MonsterSoul::MonsterSoul(vf2d pos,float fadeoutTime,float size,vf2d spd,Pixel col,float rotation,float rotationSpd,bool additiveBlending)
+:Effect(pos,INFINITE,"monstersoul.png",OnUpperLevel(),size,fadeoutTime,spd,col,rotation,rotationSpd,additiveBlending),fadeoutTime(fadeoutTime){}
+bool MonsterSoul::Update(float fElapsedTime){
+ bool updateResult{Effect::Update(fElapsedTime)};
+ switch(phase){
+ case RISING:{
+ if(GetZ()<10.f){
+ z+=10.f*fElapsedTime;
+ alpha=uint8_t(util::lerp(0,255,z/10.f));
+ }else{
+ phase=TRACKING_PLAYER;
+ alpha=255;
+ }
+ }break;
+ case TRACKING_PLAYER:{
+ z=util::lerp(7,13,abs(sin(3*PI*lifetime)));
+ moveSpd+=48.f*fElapsedTime;
+ vf2d projectedPos{pos+util::pointTo(pos,game->GetPlayer()->GetPos())*moveSpd*fElapsedTime};
+ geom2d::linecollisionLine{pos,projectedPos};
+ pos=projectedPos;
+ if(geom2d::overlaps(collisionLine,geom2d::circle(game->GetPlayer()->GetPos(),game->GetPlayer()->GetSizeMult()*8.f))){
+ lifetime=0.f;
+ fadeout=fadeoutTime;
+ game->GetPlayer()->Heal("Reaper of Souls"_ENC["HEALTH GAIN"]);
+ game->GetPlayer()->RestoreMana("Reaper of Souls"_ENC["MANA GAIN"]);
+ game->GetPlayer()->GetRightClickAbility().cooldown-="Reaper of Souls"_ENC["COOLDOWN REDUCTION"];
+ game->GetPlayer()->GetAbility1().cooldown-="Reaper of Souls"_ENC["COOLDOWN REDUCTION"];
+ game->GetPlayer()->GetAbility2().cooldown-="Reaper of Souls"_ENC["COOLDOWN REDUCTION"];
+ game->GetPlayer()->GetAbility3().cooldown-="Reaper of Souls"_ENC["COOLDOWN REDUCTION"];
+ game->GetPlayer()->GetAbility4().cooldown-="Reaper of Souls"_ENC["COOLDOWN REDUCTION"];
+ SoundEffect::PlaySFX("Collect Soul",pos);
+ phase=DEAD;
+ }
+ }break;
+ }
+ return updateResult;
+}
+void MonsterSoul::Draw()const{
+ game->SetDecalMode(DecalMode::ADDITIVE);
+ game->view.DrawRotatedDecal(pos-vf2d{0,GetZ()},GFX["monstersoulglow.png"].Decal(),0.f,GFX["monstersoulglow.png"].Sprite()->Size()/2,size*util::lerp(0.6f,1.4f,abs(sin(2*PI*lifetime))));
+ game->SetDecalMode(DecalMode::NORMAL);
+ Effect::Draw();
+}
\ No newline at end of file
diff --git a/Adventures in Lestoria/Version.h b/Adventures in Lestoria/Version.h
index 265a0a0f..f51a1c73 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 2
#define VERSION_PATCH 3
-#define VERSION_BUILD 10670
+#define VERSION_BUILD 10683
#define stringify(a) stringify_(a)
#define stringify_(a) #a
diff --git a/Adventures in Lestoria/assets/config/audio/events.txt b/Adventures in Lestoria/assets/config/audio/events.txt
index f003fb51..1adc4be3 100644
--- a/Adventures in Lestoria/assets/config/audio/events.txt
+++ b/Adventures in Lestoria/assets/config/audio/events.txt
@@ -66,6 +66,11 @@ Events
# Specify file names, followed by volume %. Optional min and max pitch adjustment (Defaults are 90%,110%)
File[0] = chargeup.ogg, 70%
}
+ Collect Soul
+ {
+ # Specify file names, followed by volume %. Optional min and max pitch adjustment (Defaults are 90%,110%)
+ File[0] = collect_soul.ogg, 100%
+ }
Consume Potion
{
# Specify file names, followed by volume %. Optional min and max pitch adjustment (Defaults are 90%,110%)
diff --git a/Adventures in Lestoria/assets/config/gfx/gfx.txt b/Adventures in Lestoria/assets/config/gfx/gfx.txt
index 24adde84..39c5bbbc 100644
--- a/Adventures in Lestoria/assets/config/gfx/gfx.txt
+++ b/Adventures in Lestoria/assets/config/gfx/gfx.txt
@@ -118,6 +118,8 @@ Images
GFX_PoisonPool = poison_pool.png
GFX_PoisonBottle = poison_bottle.png
GFX_Fragment = items/Fragment.png
+ GFX_MonsterSoul = monstersoul.png
+ GFX_MonsterSoulGlow = monstersoulglow.png
GFX_Thief_Sheet = nico-thief.png
GFX_Trapper_Sheet = nico-trapper.png
diff --git a/Adventures in Lestoria/assets/gamepack.pak b/Adventures in Lestoria/assets/gamepack.pak
index 478f8c57..9fee2fc9 100644
Binary files a/Adventures in Lestoria/assets/gamepack.pak and b/Adventures in Lestoria/assets/gamepack.pak differ
diff --git a/Adventures in Lestoria/assets/monstersoul.png b/Adventures in Lestoria/assets/monstersoul.png
new file mode 100644
index 00000000..4769c3ab
Binary files /dev/null and b/Adventures in Lestoria/assets/monstersoul.png differ
diff --git a/Adventures in Lestoria/assets/monstersoulglow.png b/Adventures in Lestoria/assets/monstersoulglow.png
new file mode 100644
index 00000000..8815cba0
Binary files /dev/null and b/Adventures in Lestoria/assets/monstersoulglow.png differ
diff --git a/Adventures in Lestoria/assets/sounds/collect_soul.ogg b/Adventures in Lestoria/assets/sounds/collect_soul.ogg
new file mode 100644
index 00000000..cdba7c61
Binary files /dev/null and b/Adventures in Lestoria/assets/sounds/collect_soul.ogg differ
diff --git a/Adventures in Lestoria/olcPGEX_ViewPort.h b/Adventures in Lestoria/olcPGEX_ViewPort.h
index d541808b..8c685e9f 100644
--- a/Adventures in Lestoria/olcPGEX_ViewPort.h
+++ b/Adventures in Lestoria/olcPGEX_ViewPort.h
@@ -646,7 +646,7 @@ void olc::ViewPort::DrawStringDecal(const olc::vf2d& pos, std::string_view sText
const bool RerenderRequired=pge->garbageCollector.count(key)&&pge->garbageCollector[key].originalStr!=renderStr;
const bool ShadowRerenderRequired=pge->garbageCollector.count(key+"_SHADOW")&&pge->garbageCollector[key+"_SHADOW"].originalStr!=renderStr;
if(!pge->garbageCollector.count(key)||RerenderRequired){ //If the text key already exists, don't have to recreate the decal, just update the expire time.
- vi2d imageSize=pge->GetWrappedTextSize(originalKey,width,scale);
+ vf2d imageSize=pge->GetWrappedTextSize(originalKey,width,scale);
if(imageSize.x<1||imageSize.y<1)return;
Decal*newDecal=nullptr;
if(!RerenderRequired){
@@ -694,7 +694,7 @@ void olc::ViewPort::DrawStringPropDecal(const olc::vf2d& pos, std::string_view s
const bool RerenderRequired=pge->garbageCollector.count(key)&&pge->garbageCollector[key].originalStr!=renderStr;
const bool ShadowRerenderRequired=pge->garbageCollector.count(key+"_SHADOW")&&pge->garbageCollector[key+"_SHADOW"].originalStr!=renderStr;
if(!pge->garbageCollector.count(key)||RerenderRequired){ //If the text key already exists, don't have to recreate the decal, just update the expire time.
- vi2d imageSize=pge->GetWrappedTextSizeProp(originalKey,width,scale);
+ vf2d imageSize=pge->GetWrappedTextSizeProp(originalKey,width,scale);
if(imageSize.x<1||imageSize.y<1)return;
Decal*newDecal=nullptr;
if(!RerenderRequired){
@@ -726,7 +726,7 @@ void olc::ViewPort::DrawShadowStringDecal(const olc::vf2d& pos, std::string_view
const bool RerenderRequired=pge->garbageCollector.count(key)&&pge->garbageCollector[key].originalStr!=renderStr;
const bool ShadowRerenderRequired=pge->garbageCollector.count(key+"_SHADOW")&&pge->garbageCollector[key+"_SHADOW"].originalStr!=renderStr;
if(!pge->garbageCollector.count(key)||RerenderRequired){ //If the text key already exists, don't have to recreate the decal, just update the expire time.
- vi2d imageSize=pge->GetWrappedTextSize(originalKey,width,scale);
+ vf2d imageSize=pge->GetWrappedTextSize(originalKey,width,scale);
if(imageSize.x<1||imageSize.y<1)return;
Decal*newDecal=nullptr;
if(!RerenderRequired){
@@ -778,7 +778,7 @@ void olc::ViewPort::DrawShadowStringPropDecal(const olc::vf2d& pos, std::string_
const bool RerenderRequired=pge->garbageCollector.count(key)&&pge->garbageCollector[key].originalStr!=renderStr;
const bool ShadowRerenderRequired=pge->garbageCollector.count(key+"_SHADOW")&&pge->garbageCollector[key+"_SHADOW"].originalStr!=renderStr;
if(!pge->garbageCollector.count(key)||RerenderRequired){ //If the text key already exists, don't have to recreate the decal, just update the expire time.
- vi2d imageSize=pge->GetWrappedTextSizeProp(originalKey,width,scale);
+ vf2d imageSize=pge->GetWrappedTextSizeProp(originalKey,width,scale);
if(imageSize.x<1||imageSize.y<1)return;
Decal*newDecal=nullptr;
if(!RerenderRequired){
diff --git a/Adventures in Lestoria/olcPixelGameEngine.h b/Adventures in Lestoria/olcPixelGameEngine.h
index b9a34f29..e1bab1c6 100644
--- a/Adventures in Lestoria/olcPixelGameEngine.h
+++ b/Adventures in Lestoria/olcPixelGameEngine.h
@@ -1120,8 +1120,8 @@ namespace olc
void DrawShadowStringProp(const olc::vi2d& pos, std::string_view sText, Pixel col = olc::WHITE, const Pixel shadowCol = olc::BLACK, const olc::vf2d& scale = { 1.0f, 1.0f },const float width=std::numeric_limits::max(),const float shadowSizeFactor=1);
olc::vi2d GetTextSize(std::string_view s);
olc::vi2d GetTextSizeProp(std::string_view s);
- olc::vi2d GetWrappedTextSize(std::string_view s,const float width=std::numeric_limits::max(),const vf2d scale={1,1});
- olc::vi2d GetWrappedTextSizeProp(std::string_view s,const float width=std::numeric_limits::max(),const vf2d scale={1,1});
+ olc::vf2d GetWrappedTextSize(std::string_view s,const float width=std::numeric_limits::max(),const vf2d scale={1,1});
+ olc::vf2d GetWrappedTextSizeProp(std::string_view s,const float width=std::numeric_limits::max(),const vf2d scale={1,1});
void DrawString(const olc::vi2d& pos, std::string_view sText, Pixel col = olc::WHITE, uint32_t scale = 1,const float width=std::numeric_limits::max(),const bool colorOverride=false);
void DrawString(int32_t x, int32_t y, std::string_view sText, Pixel col = olc::WHITE, uint32_t scale = 1,const float width=std::numeric_limits::max(),const bool colorOverride=false);
@@ -3495,7 +3495,7 @@ namespace olc
}
const bool RerenderRequired=garbageCollector.count(key)&&garbageCollector[key].originalStr!=renderStr;
if(!garbageCollector.count(key)||RerenderRequired){ //If the text key already exists, don't have to recreate the decal, just update the expire time.
- vi2d imageSize=GetWrappedTextSize(originalKey,width,scale);
+ vf2d imageSize=GetWrappedTextSize(originalKey,width,scale);
if(imageSize.x<1||imageSize.y<1)return;
Decal*newDecal=nullptr;
if(!RerenderRequired){
@@ -3527,7 +3527,7 @@ namespace olc
}
const bool RerenderRequired=garbageCollector.count(key)&&garbageCollector[key].originalStr!=renderStr;
if(!garbageCollector.count(key)||RerenderRequired){ //If the text key already exists, don't have to recreate the decal, just update the expire time.
- vi2d imageSize=GetWrappedTextSizeProp(originalKey,width,scale);
+ vf2d imageSize=GetWrappedTextSizeProp(originalKey,width,scale);
if(imageSize.x<1||imageSize.y<1)return;
Decal*newDecal=nullptr;
if(!RerenderRequired){
@@ -3559,7 +3559,7 @@ namespace olc
const bool RerenderRequired=garbageCollector.count(key)&&garbageCollector[key].originalStr!=renderStr;
const bool ShadowRerenderRequired=garbageCollector.count(key+"_SHADOW")&&garbageCollector[key+"_SHADOW"].originalStr!=renderStr;
if(!garbageCollector.count(key)||RerenderRequired){ //If the text key already exists, don't have to recreate the decal, just update the expire time.
- vi2d imageSize=GetWrappedTextSize(originalKey,width,scale);
+ vf2d imageSize=GetWrappedTextSize(originalKey,width,scale);
if(imageSize.x<1||imageSize.y<1)return;
Decal*newDecal=nullptr;
if(!RerenderRequired){
@@ -3669,7 +3669,7 @@ namespace olc
const bool RerenderRequired=garbageCollector.count(key)&&garbageCollector[key].originalStr!=renderStr;
const bool ShadowRerenderRequired=garbageCollector.count(key+"_SHADOW")&&garbageCollector[key+"_SHADOW"].originalStr!=renderStr;
if(!garbageCollector.count(key)||RerenderRequired){ //If the text key already exists, don't have to recreate the decal, just update the expire time.
- vi2d imageSize=GetWrappedTextSizeProp(originalKey,width,scale);
+ vf2d imageSize=GetWrappedTextSizeProp(originalKey,width,scale);
if(imageSize.x<1||imageSize.y<1)return;
Decal*newDecal=nullptr;
if(!RerenderRequired){
@@ -3799,7 +3799,7 @@ namespace olc
DrawRotatedStringPropDecal(pos, sText,fAngle,center,col,scale);
}
- olc::vi2d PixelGameEngine::GetWrappedTextSize(std::string_view s,const float width,const vf2d scale)
+ olc::vf2d PixelGameEngine::GetWrappedTextSize(std::string_view s,const float width,const vf2d scale)
{
float adjustedWidth=width;
if(width!=std::numeric_limits::max()){
@@ -3877,7 +3877,7 @@ namespace olc
}
drawingMarker.x += lettersWidth;
maxWidth=std::max(maxWidth,drawingMarker.x);
- return vi2d(vf2d{maxWidth,planningMarker.y+8}*scale);
+ return vf2d{maxWidth,planningMarker.y+8}*scale;
}
olc::vi2d PixelGameEngine::GetTextSize(std::string_view s)
@@ -4060,7 +4060,7 @@ namespace olc
return size;
}
- olc::vi2d PixelGameEngine::GetWrappedTextSizeProp(std::string_view s,const float width,const vf2d scale)
+ olc::vf2d PixelGameEngine::GetWrappedTextSizeProp(std::string_view s,const float width,const vf2d scale)
{
float adjustedWidth=width;
if(width!=std::numeric_limits::max()){
@@ -4138,7 +4138,7 @@ namespace olc
}
drawingMarker.x += lettersWidth;
maxWidth=std::max(maxWidth,drawingMarker.x);
- return vi2d(vf2d{maxWidth,planningMarker.y+8}*scale);
+ return vf2d{maxWidth,planningMarker.y+8}*scale;
}
void PixelGameEngine::DrawStringProp(const olc::vi2d& pos, std::string_view sText, Pixel col, uint32_t scale,const float width,const bool colorOverride)
diff --git a/x64/Release/Adventures in Lestoria.exe b/x64/Release/Adventures in Lestoria.exe
index 9073dcab..bd0a08b1 100644
Binary files a/x64/Release/Adventures in Lestoria.exe and b/x64/Release/Adventures in Lestoria.exe differ