Implement unit tests for the project. Fix Display Name bug (found in InternalNameCheck unit test). Add Monster Unit Tests.

removeExposedPackKey
sigonasr2 5 months ago
parent abb18767d4
commit dcea90fedb
  1. 20
      .gitignore
  2. 131
      Adventures in Lestoria Tests/Adventures in Lestoria Tests.cpp
  3. 453
      Adventures in Lestoria Tests/Adventures in Lestoria Tests.vcxproj
  4. 437
      Adventures in Lestoria Tests/Adventures in Lestoria Tests.vcxproj.filters
  5. 48
      Adventures in Lestoria.sln
  6. 177
      Adventures in Lestoria/Adventures in Lestoria.vcxproj
  7. 27
      Adventures in Lestoria/AdventuresInLestoria.cpp
  8. 6
      Adventures in Lestoria/AdventuresInLestoria.h
  9. 2
      Adventures in Lestoria/AttributableStat.h
  10. 2
      Adventures in Lestoria/GameSettings.cpp
  11. 19
      Adventures in Lestoria/Item.cpp
  12. 1
      Adventures in Lestoria/Item.h
  13. 4
      Adventures in Lestoria/ItemDrop.cpp
  14. 1
      Adventures in Lestoria/ItemDrop.h
  15. 13
      Adventures in Lestoria/Monster.cpp
  16. 2
      Adventures in Lestoria/Monster.h
  17. 3
      Adventures in Lestoria/MonsterData.cpp
  18. 3
      Adventures in Lestoria/MonsterData.h
  19. 2
      Adventures in Lestoria/SoundEffect.cpp
  20. 2
      Adventures in Lestoria/Version.h
  21. 3
      Adventures in Lestoria/olcUTIL_Animate2D.h
  22. 10
      Adventures in Lestoria/olcUTIL_DataFile.h
  23. BIN
      x64/Release/Adventures in Lestoria.exe

20
.gitignore vendored

@ -402,4 +402,22 @@ test.cpp
/x64/Release/AdventuresInLestoria_web.zip
packkey.cpp
desktop.ini
.tmp.driveupload
.tmp.driveupload
/Adventures in Lestoria Tests/Adventures in Lestoria.lib
/Adventures in Lestoria Tests/discord-files
/Adventures in Lestoria Tests/discord_game_sdk.dll
/Adventures in Lestoria Tests/discord_game_sdk.dll.lib
/Adventures in Lestoria Tests/freetype
/Adventures in Lestoria Tests/freetype.dll
/Adventures in Lestoria Tests/freetype.lib
/Adventures in Lestoria Tests/ft2build.h
/Adventures in Lestoria Tests/pch.h
/Adventures in Lestoria Tests/steam
/Adventures in Lestoria Tests/steam_api64.dll
/Adventures in Lestoria Tests/steam_api64.lib
/Adventures in Lestoria Tests/x64/Library (Debug)
/x64/Library (Debug)
/x64/Library
/x64/Adventures in Lestoria.idb
/x64/Adventures in Lestoria.lib
/Adventures in Lestoria Tests/x64/Library (Release)

@ -0,0 +1,131 @@
#include "CppUnitTest.h"
#include "olcUTIL_Geometry2D.h"
#include "AdventuresInLestoria.h"
#include "config.h"
#include "ItemDrop.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace olc::utils;
INCLUDE_MONSTER_DATA
INCLUDE_game
TEST_MODULE_INITIALIZE(AiLTestSuite)
{
debugLogger.open("debug.log");
}
namespace MonsterTests
{
TEST_CLASS(MonsterTest)
{
public:
std::unique_ptr<AiL>testGame;
#pragma region Setup Functions
//Makes MONSTER_DATA["TestName"] available.
void SetupTestMonster(){
testGame.reset(new AiL());
testGame->EnableTestingMode();
ItemAttribute::Initialize();
ItemInfo::InitializeItems();
testGame->InitializePlayer();
Stats::InitializeDamageReductionTable();
MonsterData testMonsterData{"TestName","Test Monster",30,10,5,{MonsterDropData{"Health Potion",100.f,1,1}}};
MONSTER_DATA["TestName"]=testMonsterData;
}
void SetupMockMap(){
game->MAP_DATA["CAMPAIGN_1_1"];
}
#pragma endregion
TEST_METHOD_INITIALIZE(MonsterInitialize){
SetupTestMonster();
SetupMockMap();
}
~MonsterTest(){
testGame.release();
}
TEST_METHOD(DisplayNameCheck){
Assert::AreEqual("Test Monster",MONSTER_DATA["TestName"].GetDisplayName().c_str());
}
TEST_METHOD(InternalNameCheck){
Monster testMonster{{},MONSTER_DATA["TestName"]};
Assert::AreEqual("TestName",testMonster.GetName().c_str());
}
TEST_METHOD(HealthCheck){
Monster testMonster{{},MONSTER_DATA["TestName"]};
Assert::AreEqual(testMonster.GetHealth(),testMonster.GetMaxHealth());
Assert::AreEqual(testMonster.GetHealth(),30);
}
TEST_METHOD(Deal5Damage)
{
Monster testMonster{{},MONSTER_DATA["TestName"]};
testMonster.Hurt(5,testMonster.OnUpperLevel(),testMonster.GetZ());
Assert::AreEqual(testMonster.GetHealth(),testMonster.GetMaxHealth()-5);
}
TEST_METHOD(IFrameShouldResultInNoDamage){
Monster testMonster{{},MONSTER_DATA["TestName"]};
testMonster.ApplyIframes(0.5f);
testMonster.Hurt(5,testMonster.OnUpperLevel(),testMonster.GetZ());
Assert::AreEqual(testMonster.GetHealth(),testMonster.GetMaxHealth());
}
TEST_METHOD(BeingInTheAirShouldAvoidAttacksFromTheGround){
Monster testMonster{{},MONSTER_DATA["TestName"]};
testMonster.SetZ(2.f);
testMonster.Hurt(5,testMonster.OnUpperLevel(),0.f);
Assert::AreEqual(testMonster.GetHealth(),testMonster.GetMaxHealth());
}
TEST_METHOD(MonstersDeal10Damage_NoDamageReduction)
{
Monster testMonster{{},MONSTER_DATA["TestName"]};
Monster testMonster2{{},MONSTER_DATA["TestName"]};
game->GetPlayer()->Hurt(testMonster.GetAttack(),testMonster.OnUpperLevel(),testMonster.GetZ());
testMonster2.Hurt(testMonster.GetAttack(),testMonster.OnUpperLevel(),testMonster.GetZ());
Assert::AreEqual(game->GetPlayer()->GetMaxHealth()-10,game->GetPlayer()->GetHealth());
Assert::AreEqual(testMonster2.GetMaxHealth()-10,testMonster2.GetHealth());
}
TEST_METHOD(DoubleAttackPctModifierWorks){
Monster buffMonster{{},MONSTER_DATA["TestName"]};
buffMonster.AddBuff(BuffType::STAT_UP,5,100._Pct,{ItemAttribute::Get("Attack %")});
Monster testMonster2{{},MONSTER_DATA["TestName"]};
game->GetPlayer()->Hurt(buffMonster.GetAttack(),buffMonster.OnUpperLevel(),buffMonster.GetZ());
testMonster2.Hurt(buffMonster.GetAttack(),buffMonster.OnUpperLevel(),buffMonster.GetZ());
Assert::AreEqual(game->GetPlayer()->GetMaxHealth()-20,game->GetPlayer()->GetHealth());
Assert::AreEqual(testMonster2.GetMaxHealth()-20,testMonster2.GetHealth());
}
TEST_METHOD(AttackUpModifierWorks){
Monster buffMonster{{},MONSTER_DATA["TestName"]};
buffMonster.AddBuff(BuffType::STAT_UP,5,5.f,{ItemAttribute::Get("Attack")});
Monster testMonster2{{},MONSTER_DATA["TestName"]};
game->GetPlayer()->Hurt(buffMonster.GetAttack(),buffMonster.OnUpperLevel(),buffMonster.GetZ());
testMonster2.Hurt(buffMonster.GetAttack(),buffMonster.OnUpperLevel(),buffMonster.GetZ());
Assert::AreEqual(game->GetPlayer()->GetMaxHealth()-15,game->GetPlayer()->GetHealth());
Assert::AreEqual(testMonster2.GetMaxHealth()-15,testMonster2.GetHealth());
}
TEST_METHOD(MonsterIsConsideredDeadAt0Health){
Monster testMonster{{},MONSTER_DATA["TestName"]};
testMonster.Hurt(testMonster.GetMaxHealth(),testMonster.OnUpperLevel(),testMonster.GetZ());
Assert::AreEqual(true,testMonster.IsDead());
}
TEST_METHOD(ItemDropSpawnsWhenMonsterIsKilled){
Monster testMonster{{},MONSTER_DATA["TestName"]};
testMonster.Hurt(testMonster.GetMaxHealth(),testMonster.OnUpperLevel(),testMonster.GetZ());
Assert::AreEqual(size_t(1),ItemDrop::GetDrops().size());
}
};
}
namespace GeometryTests
{
TEST_CLASS(GeometryTest)
{
public:
TEST_METHOD(CircleOverlapTest)
{
Assert::IsTrue(geom2d::overlaps(geom2d::circle<float>{vf2d{},10},vf2d{5,5}));
}
};
}

@ -0,0 +1,453 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Library (Debug)|Win32">
<Configuration>Library (Debug)</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Library (Debug)|x64">
<Configuration>Library (Debug)</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Library (Release)|Win32">
<Configuration>Library (Release)</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Library (Release)|x64">
<Configuration>Library (Release)</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectGuid>{11969B7B-3D50-4825-9584-AF01D15B88E0}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>AdventuresinLestoriaTests</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ProjectSubType>NativeUnitTestProject</ProjectSubType>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|x64'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|x64'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria;$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria Tests;$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>discord_game_sdk.dll.lib;freetype.lib;steam_api64.lib;$(CoreLibraryDependencies);Adventures in Lestoria.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include;$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include;$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria Tests;$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>discord_game_sdk.dll.lib;freetype.lib;steam_api64.lib;$(CoreLibraryDependencies);Adventures in Lestoria.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Adventures in Lestoria Tests.cpp" />
<ClCompile Include="discord-files\achievement_manager.cpp" />
<ClCompile Include="discord-files\activity_manager.cpp" />
<ClCompile Include="discord-files\application_manager.cpp" />
<ClCompile Include="discord-files\core.cpp" />
<ClCompile Include="discord-files\image_manager.cpp" />
<ClCompile Include="discord-files\lobby_manager.cpp" />
<ClCompile Include="discord-files\network_manager.cpp" />
<ClCompile Include="discord-files\overlay_manager.cpp" />
<ClCompile Include="discord-files\relationship_manager.cpp" />
<ClCompile Include="discord-files\storage_manager.cpp" />
<ClCompile Include="discord-files\store_manager.cpp" />
<ClCompile Include="discord-files\types.cpp" />
<ClCompile Include="discord-files\user_manager.cpp" />
<ClCompile Include="discord-files\voice_manager.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="discord-files\achievement_manager.h" />
<ClInclude Include="discord-files\activity_manager.h" />
<ClInclude Include="discord-files\application_manager.h" />
<ClInclude Include="discord-files\core.h" />
<ClInclude Include="discord-files\discord.h" />
<ClInclude Include="discord-files\event.h" />
<ClInclude Include="discord-files\ffi.h" />
<ClInclude Include="discord-files\image_manager.h" />
<ClInclude Include="discord-files\lobby_manager.h" />
<ClInclude Include="discord-files\network_manager.h" />
<ClInclude Include="discord-files\overlay_manager.h" />
<ClInclude Include="discord-files\relationship_manager.h" />
<ClInclude Include="discord-files\storage_manager.h" />
<ClInclude Include="discord-files\store_manager.h" />
<ClInclude Include="discord-files\types.h" />
<ClInclude Include="discord-files\user_manager.h" />
<ClInclude Include="discord-files\voice_manager.h" />
<ClInclude Include="freetype\config\ftconfig.h" />
<ClInclude Include="freetype\config\ftheader.h" />
<ClInclude Include="freetype\config\ftmodule.h" />
<ClInclude Include="freetype\config\ftoption.h" />
<ClInclude Include="freetype\config\ftstdlib.h" />
<ClInclude Include="freetype\config\integer-types.h" />
<ClInclude Include="freetype\config\mac-support.h" />
<ClInclude Include="freetype\config\public-macros.h" />
<ClInclude Include="freetype\freetype.h" />
<ClInclude Include="freetype\ftadvanc.h" />
<ClInclude Include="freetype\ftbbox.h" />
<ClInclude Include="freetype\ftbdf.h" />
<ClInclude Include="freetype\ftbitmap.h" />
<ClInclude Include="freetype\ftbzip2.h" />
<ClInclude Include="freetype\ftcache.h" />
<ClInclude Include="freetype\ftchapters.h" />
<ClInclude Include="freetype\ftcid.h" />
<ClInclude Include="freetype\ftcolor.h" />
<ClInclude Include="freetype\ftdriver.h" />
<ClInclude Include="freetype\fterrdef.h" />
<ClInclude Include="freetype\fterrors.h" />
<ClInclude Include="freetype\ftfntfmt.h" />
<ClInclude Include="freetype\ftgasp.h" />
<ClInclude Include="freetype\ftglyph.h" />
<ClInclude Include="freetype\ftgxval.h" />
<ClInclude Include="freetype\ftgzip.h" />
<ClInclude Include="freetype\ftimage.h" />
<ClInclude Include="freetype\ftincrem.h" />
<ClInclude Include="freetype\ftlcdfil.h" />
<ClInclude Include="freetype\ftlist.h" />
<ClInclude Include="freetype\ftlogging.h" />
<ClInclude Include="freetype\ftlzw.h" />
<ClInclude Include="freetype\ftmac.h" />
<ClInclude Include="freetype\ftmm.h" />
<ClInclude Include="freetype\ftmodapi.h" />
<ClInclude Include="freetype\ftmoderr.h" />
<ClInclude Include="freetype\ftotval.h" />
<ClInclude Include="freetype\ftoutln.h" />
<ClInclude Include="freetype\ftparams.h" />
<ClInclude Include="freetype\ftpfr.h" />
<ClInclude Include="freetype\ftrender.h" />
<ClInclude Include="freetype\ftsizes.h" />
<ClInclude Include="freetype\ftsnames.h" />
<ClInclude Include="freetype\ftstroke.h" />
<ClInclude Include="freetype\ftsynth.h" />
<ClInclude Include="freetype\ftsystem.h" />
<ClInclude Include="freetype\fttrigon.h" />
<ClInclude Include="freetype\fttypes.h" />
<ClInclude Include="freetype\ftwinfnt.h" />
<ClInclude Include="freetype\otsvg.h" />
<ClInclude Include="freetype\t1tables.h" />
<ClInclude Include="freetype\ttnameid.h" />
<ClInclude Include="freetype\tttables.h" />
<ClInclude Include="freetype\tttags.h" />
<ClInclude Include="ft2build.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="steam\isteamapps.h" />
<ClInclude Include="steam\isteamappticket.h" />
<ClInclude Include="steam\isteamclient.h" />
<ClInclude Include="steam\isteamcontroller.h" />
<ClInclude Include="steam\isteamdualsense.h" />
<ClInclude Include="steam\isteamfriends.h" />
<ClInclude Include="steam\isteamgamecoordinator.h" />
<ClInclude Include="steam\isteamgameserver.h" />
<ClInclude Include="steam\isteamgameserverstats.h" />
<ClInclude Include="steam\isteamhtmlsurface.h" />
<ClInclude Include="steam\isteamhttp.h" />
<ClInclude Include="steam\isteaminput.h" />
<ClInclude Include="steam\isteaminventory.h" />
<ClInclude Include="steam\isteammatchmaking.h" />
<ClInclude Include="steam\isteammusic.h" />
<ClInclude Include="steam\isteammusicremote.h" />
<ClInclude Include="steam\isteamnetworking.h" />
<ClInclude Include="steam\isteamnetworkingmessages.h" />
<ClInclude Include="steam\isteamnetworkingsockets.h" />
<ClInclude Include="steam\isteamnetworkingutils.h" />
<ClInclude Include="steam\isteamparentalsettings.h" />
<ClInclude Include="steam\isteamps3overlayrenderer.h" />
<ClInclude Include="steam\isteamremoteplay.h" />
<ClInclude Include="steam\isteamremotestorage.h" />
<ClInclude Include="steam\isteamscreenshots.h" />
<ClInclude Include="steam\isteamugc.h" />
<ClInclude Include="steam\isteamuser.h" />
<ClInclude Include="steam\isteamuserstats.h" />
<ClInclude Include="steam\isteamutils.h" />
<ClInclude Include="steam\isteamvideo.h" />
<ClInclude Include="steam\matchmakingtypes.h" />
<ClInclude Include="steam\steamclientpublic.h" />
<ClInclude Include="steam\steamencryptedappticket.h" />
<ClInclude Include="steam\steamhttpenums.h" />
<ClInclude Include="steam\steamnetworkingfakeip.h" />
<ClInclude Include="steam\steamnetworkingtypes.h" />
<ClInclude Include="steam\steamps3params.h" />
<ClInclude Include="steam\steamtypes.h" />
<ClInclude Include="steam\steamuniverse.h" />
<ClInclude Include="steam\steam_api.h" />
<ClInclude Include="steam\steam_api_common.h" />
<ClInclude Include="steam\steam_api_flat.h" />
<ClInclude Include="steam\steam_api_internal.h" />
<ClInclude Include="steam\steam_gameserver.h" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Adventures in Lestoria\Adventures in Lestoria.vcxproj">
<Project>{8e3067af-cfe7-4b11-bc6b-b867c32753d7}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="steam\steam_api.json" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

@ -0,0 +1,437 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Header Files\discord-files">
<UniqueIdentifier>{7c17cf40-e313-440d-8b28-a46736e838c7}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\discord-files">
<UniqueIdentifier>{a858da34-e037-467f-9f95-8066221a9657}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\steam">
<UniqueIdentifier>{2ad4b357-0b91-4282-b869-a9600baebfe2}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\freetype">
<UniqueIdentifier>{0a314412-8a4b-44ff-ab46-ac039bd0e494}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\freetype\config">
<UniqueIdentifier>{d9d0ec7d-b067-4f75-ad65-f7e5147f8539}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Adventures in Lestoria Tests.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="discord-files\achievement_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\activity_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\application_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\core.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\image_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\lobby_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\network_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\overlay_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\relationship_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\storage_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\store_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\types.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\user_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
<ClCompile Include="discord-files\voice_manager.cpp">
<Filter>Source Files\discord-files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="discord-files\achievement_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\activity_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\application_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\core.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\discord.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\event.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\ffi.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\image_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\lobby_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\network_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\overlay_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\relationship_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\storage_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\store_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\types.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\user_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="discord-files\voice_manager.h">
<Filter>Header Files\discord-files</Filter>
</ClInclude>
<ClInclude Include="steam\isteamapps.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamappticket.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamclient.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamcontroller.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamdualsense.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamfriends.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamgamecoordinator.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamgameserver.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamgameserverstats.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamhtmlsurface.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamhttp.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteaminput.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteaminventory.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteammatchmaking.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteammusic.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteammusicremote.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamnetworking.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamnetworkingmessages.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamnetworkingsockets.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamnetworkingutils.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamparentalsettings.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamps3overlayrenderer.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamremoteplay.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamremotestorage.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamscreenshots.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamugc.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamuser.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamuserstats.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamutils.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\isteamvideo.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\matchmakingtypes.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steam_api.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steam_api_common.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steam_api_flat.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steam_api_internal.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steam_gameserver.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steamclientpublic.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steamencryptedappticket.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steamhttpenums.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steamnetworkingfakeip.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steamnetworkingtypes.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steamps3params.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steamtypes.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="steam\steamuniverse.h">
<Filter>Header Files\steam</Filter>
</ClInclude>
<ClInclude Include="ft2build.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="freetype\freetype.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftadvanc.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftbbox.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftbdf.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftbitmap.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftbzip2.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftcache.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftchapters.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftcid.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftcolor.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftdriver.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\fterrdef.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\fterrors.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftfntfmt.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftgasp.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftglyph.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftgxval.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftgzip.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftimage.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftincrem.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftlcdfil.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftlist.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftlogging.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftlzw.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftmac.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftmm.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftmodapi.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftmoderr.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftotval.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftoutln.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftparams.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftpfr.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftrender.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftsizes.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftsnames.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftstroke.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftsynth.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftsystem.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\fttrigon.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\fttypes.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ftwinfnt.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\otsvg.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\t1tables.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\ttnameid.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\tttables.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\tttags.h">
<Filter>Header Files\freetype</Filter>
</ClInclude>
<ClInclude Include="freetype\config\ftconfig.h">
<Filter>Header Files\freetype\config</Filter>
</ClInclude>
<ClInclude Include="freetype\config\ftheader.h">
<Filter>Header Files\freetype\config</Filter>
</ClInclude>
<ClInclude Include="freetype\config\ftmodule.h">
<Filter>Header Files\freetype\config</Filter>
</ClInclude>
<ClInclude Include="freetype\config\ftoption.h">
<Filter>Header Files\freetype\config</Filter>
</ClInclude>
<ClInclude Include="freetype\config\ftstdlib.h">
<Filter>Header Files\freetype\config</Filter>
</ClInclude>
<ClInclude Include="freetype\config\integer-types.h">
<Filter>Header Files\freetype\config</Filter>
</ClInclude>
<ClInclude Include="freetype\config\mac-support.h">
<Filter>Header Files\freetype\config</Filter>
</ClInclude>
<ClInclude Include="freetype\config\public-macros.h">
<Filter>Header Files\freetype\config</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="steam\steam_api.json">
<Filter>Header Files\steam</Filter>
</None>
</ItemGroup>
</Project>

@ -5,6 +5,8 @@ VisualStudioVersion = 17.5.33516.290
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Adventures in Lestoria", "Adventures in Lestoria\Adventures in Lestoria.vcxproj", "{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Adventures in Lestoria Tests", "Adventures in Lestoria Tests\Adventures in Lestoria Tests.vcxproj", "{11969B7B-3D50-4825-9584-AF01D15B88E0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@ -13,8 +15,14 @@ Global
Emscripten Debug|x86 = Emscripten Debug|x86
Emscripten|x64 = Emscripten|x64
Emscripten|x86 = Emscripten|x86
Library (Debug)|x64 = Library (Debug)|x64
Library (Debug)|x86 = Library (Debug)|x86
Library (Release)|x64 = Library (Release)|x64
Library (Release)|x86 = Library (Release)|x86
Release Desktop|x64 = Release Desktop|x64
Release Desktop|x86 = Release Desktop|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Debug|x64.ActiveCfg = Debug|x64
@ -29,10 +37,50 @@ Global
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Emscripten|x64.Build.0 = Emscripten|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Emscripten|x86.ActiveCfg = Emscripten|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Emscripten|x86.Build.0 = Emscripten|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Library (Debug)|x64.ActiveCfg = Library (Debug)|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Library (Debug)|x64.Build.0 = Library (Debug)|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Library (Debug)|x86.ActiveCfg = Library (Debug)|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Library (Debug)|x86.Build.0 = Library (Debug)|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Library (Release)|x64.ActiveCfg = Library (Release)|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Library (Release)|x64.Build.0 = Library (Release)|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Library (Release)|x86.ActiveCfg = Library (Release)|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Library (Release)|x86.Build.0 = Library (Release)|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release Desktop|x64.ActiveCfg = Release Desktop|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release Desktop|x64.Build.0 = Release Desktop|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release Desktop|x86.ActiveCfg = Release Desktop|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release Desktop|x86.Build.0 = Release Desktop|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release|x64.ActiveCfg = Release Desktop|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release|x64.Build.0 = Release Desktop|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release|x86.ActiveCfg = Release Desktop|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release|x86.Build.0 = Release Desktop|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Debug|x64.ActiveCfg = Debug|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Debug|x64.Build.0 = Debug|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Debug|x86.ActiveCfg = Debug|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Debug|x86.Build.0 = Debug|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Emscripten Debug|x64.ActiveCfg = Debug|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Emscripten Debug|x64.Build.0 = Debug|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Emscripten Debug|x86.ActiveCfg = Debug|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Emscripten Debug|x86.Build.0 = Debug|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Emscripten|x64.ActiveCfg = Debug|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Emscripten|x64.Build.0 = Debug|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Emscripten|x86.ActiveCfg = Debug|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Emscripten|x86.Build.0 = Debug|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Library (Debug)|x64.ActiveCfg = Library (Debug)|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Library (Debug)|x64.Build.0 = Library (Debug)|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Library (Debug)|x86.ActiveCfg = Library (Debug)|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Library (Debug)|x86.Build.0 = Library (Debug)|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Library (Release)|x64.ActiveCfg = Library (Release)|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Library (Release)|x64.Build.0 = Library (Release)|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Library (Release)|x86.ActiveCfg = Library (Release)|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Library (Release)|x86.Build.0 = Library (Release)|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Release Desktop|x64.ActiveCfg = Release|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Release Desktop|x64.Build.0 = Release|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Release Desktop|x86.ActiveCfg = Release|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Release Desktop|x86.Build.0 = Release|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Release|x64.ActiveCfg = Release|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Release|x64.Build.0 = Release|x64
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Release|x86.ActiveCfg = Release|Win32
{11969B7B-3D50-4825-9584-AF01D15B88E0}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

@ -21,6 +21,22 @@
<Configuration>Emscripten</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Library (Debug)|Win32">
<Configuration>Library (Debug)</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Library (Debug)|x64">
<Configuration>Library (Debug)</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Library (Release)|Win32">
<Configuration>Library (Release)</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Library (Release)|x64">
<Configuration>Library (Release)</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release Desktop|Win32">
<Configuration>Release Desktop</Configuration>
<Platform>Win32</Platform>
@ -49,6 +65,12 @@
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Desktop|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
@ -56,12 +78,25 @@
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Desktop|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
@ -69,6 +104,13 @@
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Emscripten|Win32'">
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
@ -89,28 +131,55 @@
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Desktop|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Desktop|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Desktop|Win32'">
<OutDir>$(SolutionDir)$(PlatformTarget)\Release</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|Win32'">
<OutDir>$(SolutionDir)$(PlatformTarget)\Release</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Desktop|x64'">
<OutDir>$(SolutionDir)$(PlatformTarget)\Release</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|x64'">
<OutDir>$(SolutionDir)$(PlatformTarget)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|Win32'">
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<IncludePath>$(VCInstallDir)Auxiliary\VS\UnitTest\include;$(IncludePath)</IncludePath>
<LibraryPath>$(VCInstallDir)Auxiliary\VS\UnitTest\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|x64'">
<IncludePath>$(VCInstallDir)Auxiliary\VS\UnitTest\include;$(IncludePath)</IncludePath>
<LibraryPath>$(VCInstallDir)Auxiliary\VS\UnitTest\lib;$(LibraryPath)</LibraryPath>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
@ -132,6 +201,27 @@
<Command>powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h"</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<AdditionalIncludeDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\Documents\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/MP8 %(AdditionalOptions)</AdditionalOptions>
<TreatSpecificWarningsAsErrors>4099;5030;4715;4172;4834</TreatSpecificWarningsAsErrors>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>discord_game_sdk.dll.lib;freetype.lib;$(CoreLibraryDependencies);%(AdditionalDependencies);</AdditionalDependencies>
</Link>
<PreBuildEvent>
<Command>powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h"</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Desktop|Win32'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
@ -155,6 +245,29 @@
<Command>powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h"</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|Win32'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<AdditionalOptions>/MP8 %(AdditionalOptions)</AdditionalOptions>
<AdditionalIncludeDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\Documents\include;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>discord_game_sdk.dll.lib;freetype.lib;$(CoreLibraryDependencies);%(AdditionalDependencies);discord_game_sdk.dll.lib</AdditionalDependencies>
</Link>
<PreBuildEvent>
<Command>powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h"</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
@ -180,6 +293,34 @@
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Library (Debug)|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<AdditionalIncludeDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include</AdditionalIncludeDirectories>
<AdditionalOptions>/MP20 %(AdditionalOptions)</AdditionalOptions>
<TreatSpecificWarningsAsErrors>4099;5030;4715;4172;4834</TreatSpecificWarningsAsErrors>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>discord_game_sdk.dll.lib;freetype.lib;steam_api64.lib;$(CoreLibraryDependencies);%(AdditionalDependencies);</AdditionalDependencies>
</Link>
<PreBuildEvent>
<Command>powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h"</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
<Lib>
<AdditionalDependencies>discord_game_sdk.dll.lib;freetype.lib;steam_api64.lib;$(CoreLibraryDependencies);%(AdditionalDependencies);</AdditionalDependencies>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Desktop|x64'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
@ -211,6 +352,40 @@
</Command>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Library (Release)|x64'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<AdditionalOptions>/MP20 %(AdditionalOptions)</AdditionalOptions>
<AdditionalIncludeDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>discord_game_sdk.dll.lib;freetype.lib;steam_api64.lib;$(CoreLibraryDependencies);%(AdditionalDependencies);discord_game_sdk.dll.lib</AdditionalDependencies>
</Link>
<PreBuildEvent>
<Command>powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h"</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
<CustomBuildStep>
<Command>
</Command>
</CustomBuildStep>
<Lib>
<AdditionalDependencies>discord_game_sdk.dll.lib;freetype.lib;steam_api64.lib;$(CoreLibraryDependencies);%(AdditionalDependencies);</AdditionalDependencies>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Emscripten|Win32'">
<Link>
<SubSystem>Console</SubSystem>

@ -158,6 +158,15 @@ InputGroup AiL::KEY_TOGGLE_MAP;
float AiL::SIZE_CHANGE_SPEED=1;
AiL::AiL(){
GFX.Reset();
DATA.Reset();
InitializeGameConfigurations();
sAppName="GAME_NAME"_S;
game=this;
gameStarted=time(NULL);
}
void AiL::InitializeGameConfigurations(){
utils::datafile::Read(DATA,"assets/config/configuration.txt");
std::filesystem::create_directories("save_file_path"_S);
@ -243,10 +252,6 @@ AiL::AiL(){
utils::datafile::Read(DATA,MINIMAP_CONFIG);
utils::datafile::DEBUG_ACCESS_OPTIONS="debug_access_options"_I;
sAppName = "GAME_NAME"_S;
game=this;
gameStarted=time(NULL);
}
bool AiL::OnUserCreate(){
@ -271,7 +276,7 @@ bool AiL::OnUserCreate(){
sig::Animation::InitializeAnimations();
player=std::make_unique<Warrior>();
InitializePlayer();
InitializePlayerLevelCap();
@ -4385,4 +4390,16 @@ const vf2d&AiL::GetWindSpeed()const{
void AiL::UsingSteamAPI(const bool usingSteam){
steamAPIEnabled=usingSteam;
}
void AiL::InitializePlayer(){
player=std::make_unique<Warrior>();
}
void AiL::EnableTestingMode(){
testingMode=true;
}
const bool AiL::TestingModeEnabled()const{
return testingMode;
}

@ -58,6 +58,7 @@ All rights reserved.
#include "UndefKeys.h"
#include "Minimap.h"
#include "Overlay.h"
#include <variant>
class SteamKeyboardCallbackHandler;
class SteamStatsReceivedHandler;
@ -211,6 +212,7 @@ private:
std::optional<vf2d>bossIndicatorPos{};
bool steamAPIEnabled{true};
Overlay hudOverlay{"pixel.png",BLANK};
bool testingMode{false};
public:
AiL();
bool OnUserCreate() override;
@ -358,6 +360,10 @@ public:
void SetWindSpeed(vf2d newWindSpd);
const vf2d&GetWindSpeed()const;
const HurtList HurtMonsterType(vf2d pos,float radius,int damage,bool upperLevel,float z,const std::string_view monsterName)const;
void InitializeGameConfigurations();
void InitializePlayer();
void EnableTestingMode();
const bool TestingModeEnabled()const;
struct TileGroupData{
vi2d tilePos;

@ -56,7 +56,6 @@ class ItemAttribute{
bool showDecimal=false;
std::string modifies="";
std::optional<std::variant<Player*,Monster*>>target;
static void Initialize();
public:
inline static safemap<std::string,ItemAttribute>attributes;
ItemAttribute(std::string_view originalName,std::string_view name,bool isPct,bool showDecimal,std::string_view modifies=""sv);
@ -70,6 +69,7 @@ public:
friend float&operator+=(float&lhs,const ItemAttribute&rhs);
friend float&operator-=(float&lhs,const ItemAttribute&rhs);
const bool operator==(const ItemAttribute&rhs)const;
static void Initialize();
};
struct Stats;

@ -85,7 +85,7 @@ const bool GameSettings::VSyncEnabled(){
return vsync;
}
const bool GameSettings::AutoPauseEnabled(){
return autopause;
return !game->TestingModeEnabled()&&autopause;
}
void GameSettings::SetMaxHealthDisplay(bool maxHealthDisplayed){

@ -81,6 +81,24 @@ ItemInfo::ItemInfo()
:customProps({nullptr,nullptr}),img(nullptr){}
void ItemInfo::InitializeItems(){
Stats::NO_MAX_HIGHLIGHT={};
ItemSortRules::secondarySort.clear();
ItemSortRules::primarySort.clear();
ItemInfo::craftableConsumables.clear();
Stats::maxDamageReductionTable.Reset();
ItemInfo::nameToEquipSlot.clear();
Inventory::equipment.clear();
ItemSet::sets.clear();
ItemOverlay::items.clear();
Inventory::loadoutItemsUsed={};
Inventory::sortedInv.clear();
Inventory::blacksmithInventory.clear();
ITEM_CONVERSIONS.Reset();
ITEM_DATA.Reset();
ITEM_CATEGORIES.Reset();
ITEM_CONVERSIONS.Reset();
for(const std::string&data:DATA.GetProperty("Item.Equipment Sort Order Primary").GetValues()){
ItemSortRules::primarySort.push_back(data);
}
@ -1087,6 +1105,7 @@ const bool ItemInfo::UseDuringCast()const{
}
void Stats::InitializeDamageReductionTable(){
maxDamageReductionTable.Reset();
float totalReduction=0;
maxDamageReductionTable[0]=0;
for(int i=1;i<=1000;i++){

@ -370,6 +370,7 @@ public:
};
class ItemOverlay{
friend class ItemInfo;
ItemInfo it;
float timer=0;
float xOffset=0;

@ -162,4 +162,8 @@ void ItemDrop::SpawnItem(const ItemInfo*item,vf2d pos,bool isUpper){
const ItemInfo*ItemDrop::GetItem()const{
return item;
}
const std::vector<ItemDrop>&ItemDrop::GetDrops(){
return ItemDrop::drops;
}

@ -58,6 +58,7 @@ public:
bool OnUpperLevel();
void Draw()const;
static void UpdateDrops(float fElapsedTime);
static const std::vector<ItemDrop>&GetDrops();
float GetZ()const;
static void SpawnItem(const ItemInfo*item,vf2d pos,bool isUpper);
const ItemInfo*GetItem()const;

@ -68,7 +68,7 @@ safemap<std::string,std::function<void(Monster&,float,std::string)>>STRATEGY_DAT
std::unordered_map<std::string,Renderable*>MonsterData::imgs;
Monster::Monster(vf2d pos,MonsterData data,bool upperLevel,bool bossMob):
pos(pos),spawnPos(pos),hp(data.GetHealth()),size(data.GetSizeMult()),targetSize(data.GetSizeMult()),strategy(data.GetAIStrategy()),name(data.GetDisplayName()),upperLevel(upperLevel),isBoss(bossMob),facingDirection(Direction::SOUTH),lifetime(GetTotalLifetime()){
pos(pos),spawnPos(pos),hp(data.GetHealth()),size(data.GetSizeMult()),targetSize(data.GetSizeMult()),strategy(data.GetAIStrategy()),name(data.GetInternalName()),upperLevel(upperLevel),isBoss(bossMob),facingDirection(Direction::SOUTH),lifetime(GetTotalLifetime()){
for(const std::string&anim:data.GetAnimations()){
animation.AddState(anim,ANIMATION_DATA[std::format("{}_{}",name,anim)]);
}
@ -124,6 +124,7 @@ void Monster::PerformJumpAnimation(const Direction facingDir){
PerformJumpAnimation();
}
void Monster::PerformJumpAnimation(){
if(!animation.HasState(MONSTER_DATA.at(name).GetJumpAnimation(facingDirection)))return;
animation.ChangeState(internal_animState,MONSTER_DATA.at(name).GetJumpAnimation(facingDirection));
}
@ -132,6 +133,7 @@ void Monster::PerformShootAnimation(const Direction facingDir){
PerformShootAnimation();
}
void Monster::PerformShootAnimation(){
if(!animation.HasState(MONSTER_DATA.at(name).GetShootAnimation(facingDirection)))return;
animation.ChangeState(internal_animState,MONSTER_DATA.at(name).GetShootAnimation(facingDirection));
}
@ -140,6 +142,7 @@ void Monster::PerformIdleAnimation(const Direction facingDir){
PerformIdleAnimation();
}
void Monster::PerformIdleAnimation(){
if(!animation.HasState(MONSTER_DATA.at(name).GetIdleAnimation(facingDirection)))return;
animation.ChangeState(internal_animState,MONSTER_DATA.at(name).GetIdleAnimation(facingDirection));
}
@ -716,6 +719,10 @@ void Monster::AddBuff(BuffType type,float duration,float intensity){
buffList.push_back(Buff{type,duration,intensity});
}
void Monster::AddBuff(BuffType type,float duration,float intensity,std::set<ItemAttribute>attr){
buffList.push_back(Buff{type,duration,intensity,attr});
}
void Monster::RemoveBuff(BuffType type){
std::erase_if(buffList,[&](const Buff&buff){return buff.type==type;});
}
@ -831,7 +838,7 @@ std::map<ItemInfo*,uint16_t>Monster::SpawnDrops(){
}
void Monster::OnDeath(){
animation.ChangeState(internal_animState,GetDeathAnimationName());
if(animation.HasState(MONSTER_DATA.at(name).GetDefaultDeathAnimation()))animation.ChangeState(internal_animState,GetDeathAnimationName());
if(GetSizeT(Attribute::LOOPING_SOUND_ID)!=std::numeric_limits<size_t>::max()){//Just make sure on death any looping sound effect has been discarded proper.
SoundEffect::StopLoopingSFX(GetSizeT(Attribute::LOOPING_SOUND_ID));
@ -1138,4 +1145,4 @@ const bool Monster::IsSolid()const{
void Monster::_DealTrueDamage(const uint32_t damageAmt){
_Hurt(damageAmt,OnUpperLevel(),GetZ(),TrueDamageFlag::IGNORE_DAMAGE_RULES);
}
}

@ -132,6 +132,7 @@ public:
bool StartPathfinding(float pathingTime);
void PathAroundBehavior(float fElapsedTime);
void AddBuff(BuffType type,float duration,float intensity);
void AddBuff(BuffType type,float duration,float intensity,std::set<ItemAttribute>attr);
std::vector<Buff>GetBuffs(BuffType buff)const;
//Removes all buffs of a given type.
void RemoveBuff(BuffType type);
@ -239,6 +240,7 @@ private:
float lastPathfindingCooldown=0.f;
std::function<bool(GameEvent&,Monster&,const std::string&)>strategyDeathFunc{};
void SetStrategyDeathFunction(std::function<bool(GameEvent&,Monster&,const std::string&)>func);
//If you are trying to change a Get() stat, use the STAT_UP buff (and the optional argument) to supply an attribute you want to apply.
ItemAttribute&Get(std::string_view attr);
//Returns false if the monster could not be moved to the requested location due to collision.
//If monsterInvoked is true, this means the monster was the one that instantiated this input, and it's not an extra movement done via collision.

@ -356,6 +356,9 @@ int MonsterData::GetCollisionDmg(){
const std::string&MonsterData::GetAIStrategy()const{
return strategy;
}
const std::string&MonsterData::GetInternalName()const{
return name;
}
const std::string&MonsterData::GetDisplayName()const{
return displayName;
}

@ -48,8 +48,10 @@ struct MonsterDropData{
float dropChance;
int minQty=1;
int maxQty=1;
//Drop Chance is between 0-100 (NOT a percentage (Like 1.0f does not mean 100% here)!!)
MonsterDropData(std::string itemName,float dropChance,int minQty=1,int maxQty=1)
:item(ITEM_DATA.at(itemName)),dropChance(dropChance),minQty(minQty),maxQty(maxQty){}
//Drop Chance is between 0-100 (NOT a percentage (Like 1.0f does not mean 100% here)!!)
MonsterDropData(const ItemInfo&item,float dropChance,int minQty=1,int maxQty=1)
:item(item),dropChance(dropChance),minQty(minQty),maxQty(maxQty){}
MonsterDropData(const MonsterDropData&ref)=default;
@ -85,6 +87,7 @@ public:
return animations;
}
const std::vector<MonsterDropData>&GetDropData();
const std::string&GetInternalName()const;
const std::string&GetDisplayName()const;
static void InitializeMonsterData();
static void InitializeNPCData();

@ -87,7 +87,7 @@ void SoundEffect::Initialize(){
}
void SoundEffect::PlaySFX(const std::string_view eventName,const vf2d&pos){
if(eventName.length()==0)return;
if(game->TestingModeEnabled()||eventName.length()==0)return;
const SoundEffect&sfx=GetRandomSFXFromFile(eventName);
if(GameState::STATE==GameState::states[States::MAIN_MENU]&&sfx.combatSound)return; //Do not play combat sounds on the main menu.

@ -39,7 +39,7 @@ All rights reserved.
#define VERSION_MAJOR 1
#define VERSION_MINOR 2
#define VERSION_PATCH 3
#define VERSION_BUILD 9715
#define VERSION_BUILD 9787
#define stringify(a) stringify_(a)
#define stringify_(a) #a

@ -275,6 +275,9 @@ namespace olc::utils::Animate2D
m_vSequences.emplace_back(sequence);
m_mapStateIndices[sStateName] = m_vSequences.size() - 1;
}
inline bool HasState(const StatesEnum&sStateName){
return m_mapStateIndices.count(sStateName);
}
private:
std::vector<FrameSequence> m_vSequences;

@ -484,6 +484,16 @@ namespace olc::utils
}
public:
inline void Reset(){
INITIAL_SETUP_COMPLETE=false;
DEBUG_ACCESS_OPTIONS=false;
m_mapObjects.clear();
m_vecObjects.clear();
m_vContent.clear();
lastAccessedProperty="";
BLANK="";
m_bIsComment=false;
}
inline datafile& operator[](const std::string& name)
{
// Check if this "node"'s map already contains an object with this name...

Loading…
Cancel
Save