diff --git a/.gitignore b/.gitignore index 0a633322..f9c749a5 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,8 @@ memoryleak.txt [Dd]ebug/ [Dd]ebugPublic/ *.tlog/ -Crawler/x64/ +Adventures in Lestoria/x64/ +Adventures in Lestoria/assets/saves/* [Rr]eleases/ x86/ [Ww][Ii][Nn]32/ @@ -368,11 +369,17 @@ MigrationBackup/ # Fody - auto-generated XML schema FodyWeavers.xsd -Crawler/Crawler.html -Crawler/Crawler.data -Crawler/Crawler.js -Crawler/Crawler.wasm -Crawler/pixelGameEngine_wasm.o +Adventures in Lestoria/Adventures in Lestoria *.tiled-session /Crawler/Crawler.tiled-session /Crawler/assets/discordAPI.txt +/CMakeFiles +/CMakeCache.txt +/cmake_install.cmake +/Makefile +Crawler/out +/Adventures in Lestoria/.vscode +/Adventures in Lestoria/.vscode/settings.json +/Adventures in Lestoria/x64 +/Adventures in Lestoria/saves +/Adventures in Lestoria/assets/tmpsaves diff --git a/Crawler.sln b/Adventures in Lestoria.sln similarity index 75% rename from Crawler.sln rename to Adventures in Lestoria.sln index f4d5657f..f7dd7c41 100644 --- a/Crawler.sln +++ b/Adventures in Lestoria.sln @@ -3,12 +3,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.5.33516.290 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Crawler", "Crawler\Crawler.vcxproj", "{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Adventures in Lestoria", "Adventures in Lestoria\Adventures in Lestoria.vcxproj", "{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Emscripten|x64 = Emscripten|x64 + Emscripten|x86 = Emscripten|x86 Release Desktop|x64 = Release Desktop|x64 Release Desktop|x86 = Release Desktop|x86 Release|x64 = Release|x64 @@ -19,6 +21,10 @@ Global {8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Debug|x64.Build.0 = Debug|x64 {8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Debug|x86.ActiveCfg = Debug|Win32 {8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Debug|x86.Build.0 = Debug|Win32 + {8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Emscripten|x64.ActiveCfg = Emscripten|x64 + {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}.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 diff --git a/Crawler/Ability.cpp b/Adventures in Lestoria/Ability.cpp similarity index 96% rename from Crawler/Ability.cpp rename to Adventures in Lestoria/Ability.cpp index 2bf3d493..ff70d1f0 100644 --- a/Crawler/Ability.cpp +++ b/Adventures in Lestoria/Ability.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,7 +36,7 @@ All rights reserved. */ #pragma endregion #include "Ability.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" INCLUDE_game diff --git a/Crawler/Ability.h b/Adventures in Lestoria/Ability.h similarity index 98% rename from Crawler/Ability.h rename to Adventures in Lestoria/Ability.h index 4f1ed8ec..f2aab0d3 100644 --- a/Crawler/Ability.h +++ b/Adventures in Lestoria/Ability.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Crawler.rc b/Adventures in Lestoria/Adventures in Lestoria.rc similarity index 50% rename from Crawler/Crawler.rc rename to Adventures in Lestoria/Adventures in Lestoria.rc index 856f7db6..962c1f96 100644 --- a/Crawler/Crawler.rc +++ b/Adventures in Lestoria/Adventures in Lestoria.rc @@ -1,44 +1,52 @@ // Microsoft Visual C++ generated resource script. // -// ... other stuff #include "resource.h" -#include "Version.h" -#include ///////////////////////////////////////////////////////////////////////////// // English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + VS_VERSION_INFO VERSIONINFO -FILEVERSION VER_FILE_VERSION -PRODUCTVERSION VER_PRODUCT_VERSION -FILEFLAGSMASK 0x17L + FILEVERSION 0,2,1,5299 + PRODUCTVERSION 0,2,1,5299 + FILEFLAGSMASK 0x17L #ifdef _DEBUG -FILEFLAGS 0x1L + FILEFLAGS 0x1L #else -FILEFLAGS 0x0L + FILEFLAGS 0x0L #endif -FILEOS 0x4L -FILETYPE 0x1L -FILESUBTYPE 0x0L -BEGIN -BLOCK "StringFileInfo" -BEGIN -BLOCK "040704b0" -BEGIN -VALUE "CompanyName", "Sig" -VALUE "FileDescription", "Crawler Game" -VALUE "FileVersion", VER_FILE_VERSION_STR "\0" -VALUE "InternalName", "Crawler.exe" -VALUE "LegalCopyright", "Copyright 2023" -VALUE "OriginalFilename", "Crawler.exe" -VALUE "ProductName", "Crawler" -VALUE "ProductVersion", VER_PRODUCT_VERSION_STR "\0" -END -END -BLOCK "VarFileInfo" + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L BEGIN -VALUE "Translation", 0x407, 1200 -END + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Sig Productions" + VALUE "FileDescription", "Adventures in Lestoria" + VALUE "FileVersion", "0.2.1.5299" + VALUE "InternalName", "Crawler.exe" + VALUE "LegalCopyright", "Copyright © 2023-2024" + VALUE "OriginalFilename", "Adventures in Lestoria.exe" + VALUE "ProductName", "Adventures in Lestoria" + VALUE "ProductVersion", "0.2.1.5299" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END END + + ///////////////////////////////////////////////////////////////////////////// // // Icon @@ -49,8 +57,6 @@ END MAINICON ICON "assets\\heart.ico" - - #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // @@ -75,6 +81,15 @@ END #endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// PNG +// + +IDB_PNG1 PNG "assets\\AiL_512.png" + +#endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Crawler/Crawler.tiled-project b/Adventures in Lestoria/Adventures in Lestoria.tiled-project similarity index 95% rename from Crawler/Crawler.tiled-project rename to Adventures in Lestoria/Adventures in Lestoria.tiled-project index d112b4a3..698ed73e 100644 --- a/Crawler/Crawler.tiled-project +++ b/Adventures in Lestoria/Adventures in Lestoria.tiled-project @@ -8,6 +8,17 @@ "." ], "propertyTypes": [ + { + "id": 27, + "name": "BGM", + "storageType": "string", + "type": "enum", + "values": [ + "None", + "foresty_1_1" + ], + "valuesAsFlags": false + }, { "color": "#ff290aa4", "drawFill": true, @@ -160,6 +171,12 @@ "drawFill": true, "id": 19, "members": [ + { + "name": "Background Music", + "propertyType": "BGM", + "type": "string", + "value": "None" + }, { "name": "Level Type", "propertyType": "LevelType", diff --git a/Crawler/Crawler.vcxproj b/Adventures in Lestoria/Adventures in Lestoria.vcxproj similarity index 88% rename from Crawler/Crawler.vcxproj rename to Adventures in Lestoria/Adventures in Lestoria.vcxproj index e4a9683c..9cd72d90 100644 --- a/Crawler/Crawler.vcxproj +++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj @@ -38,8 +38,9 @@ 16.0 Win32Proj {8e3067af-cfe7-4b11-bc6b-b867c32753d7} - Crawler + Adventures in Lestoria 10.0 + Adventures in Lestoria @@ -131,13 +132,13 @@ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true stdcpp20 - C:\Users\sigon\source\repos\Crawler\Crawler\discord-files;C:\Users\sigon\Documents\include;%(AdditionalIncludeDirectories) + C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\Documents\include;%(AdditionalIncludeDirectories) /MP8 %(AdditionalOptions) Console true - C:\Users\sigon\source\repos\Crawler\Crawler;%(AdditionalLibraryDirectories) + C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria;%(AdditionalLibraryDirectories) discord_game_sdk.dll.lib;freetype.lib;$(CoreLibraryDependencies);%(AdditionalDependencies); @@ -154,7 +155,7 @@ true stdcpp20 /MP8 %(AdditionalOptions) - C:\Users\sigon\source\repos\Crawler\Crawler\discord-files;C:\Users\sigon\Documents\include; + C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\Documents\include; Console @@ -177,7 +178,7 @@ true stdcpp20 /MP8 %(AdditionalOptions) - C:\Users\sigon\source\repos\Crawler\Crawler\discord-files;C:\Users\sigon\Documents\include;C:\Users\sigon\source\repos\Crawler\Crawler\discord-files + 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 Console @@ -197,13 +198,13 @@ _DEBUG;_CONSOLE;%(PreprocessorDefinitions) true stdcpp20 - C:\Users\sigon\source\repos\Crawler\Crawler\discord-files;C:\Users\sigon\Documents\include;%(AdditionalIncludeDirectories) + C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\Documents\include;%(AdditionalIncludeDirectories) /MP8 %(AdditionalOptions) Console true - C:\Users\sigon\source\repos\Crawler\Crawler;%(AdditionalLibraryDirectories) + C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria;%(AdditionalLibraryDirectories) discord_game_sdk.dll.lib;freetype.lib;$(CoreLibraryDependencies);%(AdditionalDependencies); @@ -224,7 +225,7 @@ true stdcpp20 /MP8 %(AdditionalOptions) - C:\Users\sigon\source\repos\Crawler\Crawler\discord-files;C:\Users\sigon\Documents\include; + C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\Documents\include; Console @@ -250,7 +251,7 @@ true stdcpp20 /MP8 %(AdditionalOptions) - C:\Users\sigon\source\repos\Crawler\Crawler\discord-files;C:\Users\sigon\Documents\include;C:\Users\sigon\source\repos\Crawler\Crawler\discord-files + 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 Console @@ -274,8 +275,14 @@ stdcpp20 - C:\Users\sigon\source\repos\Crawler\Crawler\discord-files; + C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files; + + powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File ../emscripten_build.ps1 + + + powershell.exe -ExecutionPolicy Bypass -NoProfile -File emscripten_build.ps1 + @@ -284,10 +291,17 @@ stdcpp20 - C:\Users\sigon\source\repos\Crawler\Crawler\discord-files; + C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files; + + powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File ../emscripten_build.ps1 + + + powershell.exe -ExecutionPolicy Bypass -NoProfile -File emscripten_build.ps1 + + @@ -295,6 +309,10 @@ + + + + @@ -309,7 +327,7 @@ - + @@ -355,6 +373,11 @@ + + + + + @@ -424,6 +447,10 @@ + + + + @@ -440,6 +467,14 @@ + + + + + + + + @@ -458,6 +493,10 @@ + + + + @@ -488,7 +527,7 @@ - + @@ -527,6 +566,10 @@ + + + + @@ -556,6 +599,14 @@ + + + + + + + + @@ -572,9 +623,14 @@ + + + + + @@ -586,6 +642,8 @@ + + @@ -595,6 +653,7 @@ + @@ -614,8 +673,8 @@ - - + + @@ -624,11 +683,12 @@ + - + diff --git a/Crawler/Crawler.vcxproj.filters b/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters similarity index 93% rename from Crawler/Crawler.vcxproj.filters rename to Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters index a0aed0cf..3c2db80b 100644 --- a/Crawler/Crawler.vcxproj.filters +++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters @@ -108,7 +108,7 @@ Header Files - + Header Files @@ -390,6 +390,27 @@ Header Files\Interface + + Header Files\Interface + + + Header Files + + + Header Files\Interface + + + Header Files + + + Header Files + + + Header Files + + + Header Files + @@ -401,7 +422,7 @@ Source Files - + Source Files @@ -551,9 +572,6 @@ Source Files - - Source Files - Source Files\Interface @@ -653,6 +671,27 @@ Source Files\Interface + + Source Files\Interface + + + Source Files\Interface + + + Source Files + + + Source Files\Interface + + + Source Files\Interface + + + Source Files + + + Source Files + @@ -719,15 +758,9 @@ Configurations\Items - - Documentation - Configurations\Story - - Documentation\Story - Configurations\Items @@ -767,6 +800,13 @@ Documentation\Menus + + Configurations\Items + + + + + @@ -775,9 +815,12 @@ Documentation\Menus + + Resource Files + - + Resource Files diff --git a/Crawler/Crawler.cpp b/Adventures in Lestoria/AdventuresInLestoria.cpp similarity index 93% rename from Crawler/Crawler.cpp rename to Adventures in Lestoria/AdventuresInLestoria.cpp index f567f24a..14bb6c8c 100644 --- a/Crawler/Crawler.cpp +++ b/Adventures in Lestoria/AdventuresInLestoria.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,7 +36,7 @@ All rights reserved. */ #pragma endregion #include "olcPGEX_TransformedView.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "olcUTIL_Camera2D.h" #include "DamageNumber.h" #include "Bullet.h" @@ -67,11 +67,14 @@ All rights reserved. #include "olcPGEX_TTF.h" #include "MenuItemItemButton.h" #include "Merchant.h" +#include "SaveFile.h" +#include "TitleScreen.h" #ifndef __EMSCRIPTEN__ #include "discord.h" #endif INCLUDE_EMITTER_LIST +INCLUDE_ITEM_CATEGORIES bool _DEBUG_MAP_LOAD_INFO = false; //360x240 @@ -84,21 +87,21 @@ std::vector>BULLET_LIST; safemapGFX; safemapLEVEL_NAMES; utils::datafile DATA; -Crawler*game; -InputGroup Crawler::KEY_LEFT; -InputGroup Crawler::KEY_RIGHT; -InputGroup Crawler::KEY_UP; -InputGroup Crawler::KEY_DOWN; -InputGroup Crawler::KEY_ATTACK; -InputGroup Crawler::KEY_CONFIRM; -InputGroup Crawler::KEY_MENU; +AiL*game; +InputGroup AiL::KEY_LEFT; +InputGroup AiL::KEY_RIGHT; +InputGroup AiL::KEY_UP; +InputGroup AiL::KEY_DOWN; +InputGroup AiL::KEY_ATTACK; +InputGroup AiL::KEY_CONFIRM; +InputGroup AiL::KEY_MENU; #ifndef __EMSCRIPTEN__ ::discord::Core*Discord{}; #endif -float Crawler::SIZE_CHANGE_SPEED=1; +float AiL::SIZE_CHANGE_SPEED=1; -Crawler::Crawler() +AiL::AiL() { utils::datafile::Read(DATA,"assets/config/configuration.txt"); @@ -109,7 +112,7 @@ Crawler::Crawler() std::string GFX_CONFIG = CONFIG_PATH + "gfx_config"_S; utils::datafile::Read(DATA,GFX_CONFIG); WINDOW_SIZE={"WINDOW_SIZE"_i[0],"WINDOW_SIZE"_i[1]}; - + std::string MAP_CONFIG = CONFIG_PATH + "map_config"_S; utils::datafile::Read(DATA,MAP_CONFIG); @@ -134,18 +137,26 @@ Crawler::Crawler() std::string ITEM_STATS_CONFIG = CONFIG_PATH + "item_stats_config"_S; utils::datafile::Read(DATA,ITEM_STATS_CONFIG); - for(auto&[key,value]:DATA.GetProperty("ItemConfiguration").GetKeys()){ - std::string config = DATA["ItemConfiguration"][key].GetString(); + auto keys=DATA.GetProperty("ItemConfiguration"); + for(auto&[key,value]:keys){ + std::string config=DATA["ItemConfiguration"][key].GetString(); utils::datafile::Read(DATA,CONFIG_PATH + "item_directory"_S + config); } DEBUG_PATHFINDING="debug_pathfinding"_I; - for(const std::string&cl:DATA.GetProperty("class_list").GetValues()){ + std::vectorvalues=DATA.GetProperty("class_list").GetValues(); + for(const std::string&cl:values){ std::cout<OnUserUpdate(this); } + Audio::Update(); RenderWorld(GetElapsedTime()); GameState::STATE->Draw(this); RenderMenu(); @@ -262,32 +279,32 @@ bool Crawler::OnUserUpdate(float fElapsedTime){ return !gameEnd; } -bool Crawler::LeftHeld(){ +bool AiL::LeftHeld(){ return KEY_LEFT.Held(); } -bool Crawler::RightHeld(){ +bool AiL::RightHeld(){ return KEY_RIGHT.Held(); } -bool Crawler::UpHeld(){ +bool AiL::UpHeld(){ return KEY_UP.Held(); } -bool Crawler::DownHeld(){ +bool AiL::DownHeld(){ return KEY_DOWN.Held(); } -bool Crawler::LeftReleased(){ +bool AiL::LeftReleased(){ return KEY_LEFT.Released(); } -bool Crawler::RightReleased(){ +bool AiL::RightReleased(){ return KEY_RIGHT.Released(); } -bool Crawler::UpReleased(){ +bool AiL::UpReleased(){ return KEY_UP.Released(); } -bool Crawler::DownReleased(){ +bool AiL::DownReleased(){ return KEY_DOWN.Released(); } -void Crawler::HandleUserInput(float fElapsedTime){ +void AiL::HandleUserInput(float fElapsedTime){ if(!Menu::stack.empty())return; //A window being opened means there's no user input allowed. bool setIdleAnimation=true; @@ -489,7 +506,7 @@ void Crawler::HandleUserInput(float fElapsedTime){ } } -void Crawler::UpdateCamera(float fElapsedTime){ +void AiL::UpdateCamera(float fElapsedTime){ lastWorldShakeAdjust=std::max(0.f,lastWorldShakeAdjust-fElapsedTime); if(worldShakeTime>0){ worldShakeTime-=fElapsedTime; @@ -507,7 +524,7 @@ void Crawler::UpdateCamera(float fElapsedTime){ view.SetWorldOffset(camera.GetViewPosition()); } -void Crawler::UpdateEffects(float fElapsedTime){ +void AiL::UpdateEffects(float fElapsedTime){ for(auto it=EMITTER_LIST.begin();it!=EMITTER_LIST.end();++it){ auto ptr=(*it).get(); ptr->Update(fElapsedTime); @@ -535,7 +552,7 @@ void Crawler::UpdateEffects(float fElapsedTime){ foregroundEffectsToBeInserted.clear(); backgroundEffectsToBeInserted.clear(); } -void Crawler::UpdateBullets(float fElapsedTime){ +void AiL::UpdateBullets(float fElapsedTime){ for(auto it=BULLET_LIST.begin();it!=BULLET_LIST.end();++it){ Bullet*b=(*it).get(); b->UpdateFadeTime(fElapsedTime); @@ -602,7 +619,7 @@ void Crawler::UpdateBullets(float fElapsedTime){ } std::erase_if(BULLET_LIST,[](std::unique_ptr&b){return b->dead;}); } -void Crawler::HurtEnemies(vf2d pos,float radius,int damage,bool upperLevel,float z){ +void AiL::HurtEnemies(vf2d pos,float radius,int damage,bool upperLevel,float z){ for(Monster&m:MONSTER_LIST){ if(geom2d::overlaps(geom2d::circle(pos,radius),geom2d::circle(m.GetPos(),12*m.GetSizeMult()))){ m.Hurt(damage,upperLevel,z); @@ -610,7 +627,7 @@ void Crawler::HurtEnemies(vf2d pos,float radius,int damage,bool upperLevel,float } } -void Crawler::PopulateRenderLists(){ +void AiL::PopulateRenderLists(){ monstersBeforeLower.clear(); monstersAfterLower.clear(); monstersBeforeUpper.clear(); @@ -703,7 +720,7 @@ void Crawler::PopulateRenderLists(){ std::sort(monstersAfterLower.begin(),monstersAfterLower.end(),[](Monster*m1,Monster*m2){return m1->GetPos().yGetPos().y;}); } -void Crawler::RenderTile(vi2d pos,TilesheetData tileSheet,int tileSheetIndex,vi2d tileSheetPos){ +void AiL::RenderTile(vi2d pos,TilesheetData tileSheet,int tileSheetIndex,vi2d tileSheetPos){ if(tileSheet.tileset->animationData.count(tileSheetIndex)){ int animationDuration_ms=int(tileSheet.tileset->animationData[tileSheetIndex].size()*"animation_tile_precision"_I); int animatedIndex=tileSheet.tileset->animationData[tileSheetIndex][size_t(fmod(levelTime*1000.f,animationDuration_ms)/"animation_tile_precision"_I)]; @@ -716,7 +733,7 @@ void Crawler::RenderTile(vi2d pos,TilesheetData tileSheet,int tileSheetIndex,vi2 } } -void Crawler::RenderTile(TileRenderData&tileSheet,Pixel col){ +void AiL::RenderTile(TileRenderData&tileSheet,Pixel col){ if(tileSheet.tileSheet.tileset->animationData.count(tileSheet.tileID%1000000)){ int animationDuration_ms=int(tileSheet.tileSheet.tileset->animationData[tileSheet.tileID%1000000].size()*"animation_tile_precision"_I); int animatedIndex=tileSheet.tileSheet.tileset->animationData[tileSheet.tileID%1000000][size_t(fmod(levelTime*1000.f,animationDuration_ms)/"animation_tile_precision"_I)]; @@ -729,7 +746,7 @@ void Crawler::RenderTile(TileRenderData&tileSheet,Pixel col){ } } -void Crawler::RenderWorld(float fElapsedTime){ +void AiL::RenderWorld(float fElapsedTime){ LayerTag*bridgeLayer=nullptr; bool bridgeLayerFade=false; @@ -1232,11 +1249,11 @@ void Crawler::RenderWorld(float fElapsedTime){ } } -Player*Crawler::GetPlayer(){ +Player*AiL::GetPlayer(){ return player.get(); } -void Crawler::RenderHud(){ +void AiL::RenderHud(){ ItemOverlay::Draw(); RenderCooldowns(); @@ -1288,7 +1305,7 @@ void Crawler::RenderHud(){ DrawShadowStringDecal({0,12},"Button Hold Time: "+std::to_string(Menu::menus[INVENTORY_CONSUMABLES]->buttonHoldTime)); }} -void Crawler::RenderCooldowns(){ +void AiL::RenderCooldowns(){ std::vectorcooldowns{ player->GetAbility1(), player->GetAbility2(), @@ -1393,12 +1410,12 @@ void Crawler::RenderCooldowns(){ } } -void Crawler::AddEffect(std::unique_ptrforeground,std::unique_ptr background){ +void AiL::AddEffect(std::unique_ptrforeground,std::unique_ptr background){ AddEffect(std::move(background),true); AddEffect(std::move(foreground)); } -void Crawler::AddEffect(std::unique_ptr foreground,bool back){ +void AiL::AddEffect(std::unique_ptr foreground,bool back){ if(back){ backgroundEffectsToBeInserted.push_back(std::move(foreground)); } else { @@ -1406,11 +1423,11 @@ void Crawler::AddEffect(std::unique_ptr foreground,bool back){ } } -vf2d Crawler::GetWorldMousePos(){ +vf2d AiL::GetWorldMousePos(){ return GetMousePos()+view.GetWorldOffset(); } -void Crawler::SetupWorldShake(float duration){ +void AiL::SetupWorldShake(float duration){ worldShakeVel={13,-13}; worldShakeTime=duration; worldShake=vf2d{player->GetPos()}; @@ -1418,7 +1435,7 @@ void Crawler::SetupWorldShake(float duration){ } -void Crawler::InitializeLevel(std::string mapFile,MapName map){ +void AiL::InitializeLevel(std::string mapFile,MapName map){ TMXParser level(mapFile); size_t slashMarker = mapFile.find_last_of('/'); @@ -1532,7 +1549,7 @@ void Crawler::InitializeLevel(std::string mapFile,MapName map){ } } -void Crawler::LoadLevel(MapName map){ +void AiL::LoadLevel(MapName map){ SPAWNER_LIST.clear(); foregroundTileGroups.clear(); upperForegroundTileGroups.clear(); @@ -1769,15 +1786,15 @@ void Crawler::LoadLevel(MapName map){ pathfinder.Initialize(); } -bool Crawler::IsUpperForegroundTile(int tileID){ +bool AiL::IsUpperForegroundTile(int tileID){ return tileID>=1000000; } -bool Crawler::IsForegroundTile(TilesheetData sheet,int tileID){ +bool AiL::IsForegroundTile(TilesheetData sheet,int tileID){ return sheet.tileset->foregroundTiles.find(tileID)!=sheet.tileset->foregroundTiles.end(); } -TilesheetData Crawler::GetTileSheet(MapName map,int tileID){ +TilesheetData AiL::GetTileSheet(MapName map,int tileID){ std::vector&tileData=MAP_DATA[map].TilesetData; if(tileData.size()==1){ size_t slashMarkerSourceDir = tileData[0].data["source"].find_last_of('/'); @@ -1797,18 +1814,18 @@ TilesheetData Crawler::GetTileSheet(MapName map,int tileID){ } } -bool Crawler::HasTileCollision(MapName map,vf2d pos,bool upperLevel){ +bool AiL::HasTileCollision(MapName map,vf2d pos,bool upperLevel){ geom2d::rectcollisionRect=GetTileCollision(map,pos,upperLevel); vi2d collisionRectSnapPos=vi2d{pos/float(game->GetCurrentMap().tilewidth)}*game->GetCurrentMap().tilewidth; collisionRect.pos+=collisionRectSnapPos; return geom2d::overlaps(collisionRect,pos); } -bool Crawler::IsBridgeLayer(LayerTag&layer){ +bool AiL::IsBridgeLayer(LayerTag&layer){ return layer.tag.data.find("class")!=layer.tag.data.end()&&layer.tag.data["class"]=="Bridge"; } -geom2d::rectCrawler::GetTileCollision(MapName map,vf2d pos,bool upperLevel){ +geom2d::rectAiL::GetTileCollision(MapName map,vf2d pos,bool upperLevel){ if(pos.x<0||pos.y<0||pos.x>=GetCurrentMap().width*game->GetCurrentMap().tilewidth||pos.y>=GetCurrentMap().height*game->GetCurrentMap().tilewidth)return NO_COLLISION; #pragma region Lower Bridge Collision Check if(!upperLevel){ //We are looking for lower bridge collisions. @@ -1852,15 +1869,15 @@ geom2d::rectCrawler::GetTileCollision(MapName map,vf2d pos,bool upperLevel) return foundRect; } -MapName Crawler::GetCurrentLevel(){ +MapName AiL::GetCurrentLevel(){ return currentLevel; } -std::map>&Crawler::GetZoneData(MapName map){ +std::map>&AiL::GetZoneData(MapName map){ return MAP_DATA[map].ZoneData; } -void Crawler::ChangePlayerClass(Class cl){ +void AiL::ChangePlayerClass(Class cl){ Ability itemAbility1=player->useItem1; Ability itemAbility2=player->useItem2; Ability itemAbility3=player->useItem3; @@ -1913,7 +1930,7 @@ void Crawler::ChangePlayerClass(Class cl){ Player::moneyListeners=moneyListeners; } -void Crawler::InitializeClasses(){ +void AiL::InitializeClasses(){ Warrior::Initialize(); Thief::Initialize(); Ranger::Initialize(); @@ -1928,42 +1945,42 @@ void Crawler::InitializeClasses(){ Witch::InitializeClassAbilities(); } -std::string Crawler::GetString(std::string key){ +std::string AiL::GetString(std::string key){ return DATA.GetProperty(key).GetString(); } -datafilestringdata Crawler::GetStringList(std::string key){ +datafilestringdata AiL::GetStringList(std::string key){ return {DATA,key}; } -int Crawler::GetInt(std::string key){ +int AiL::GetInt(std::string key){ return DATA.GetProperty(key).GetInt(); } -datafileintdata Crawler::GetIntList(std::string key){ +datafileintdata AiL::GetIntList(std::string key){ return {DATA,key}; } -float Crawler::GetFloat(std::string key){ +float AiL::GetFloat(std::string key){ return float(DATA.GetProperty(key).GetReal()); } -datafilefloatdata Crawler::GetFloatList(std::string key){ +datafilefloatdata AiL::GetFloatList(std::string key){ return {DATA,key}; } -double Crawler::GetDouble(std::string key){ +double AiL::GetDouble(std::string key){ return DATA.GetProperty(key).GetReal(); } -datafiledoubledata Crawler::GetDoubleList(std::string key){ +datafiledoubledata AiL::GetDoubleList(std::string key){ return {DATA,key}; } int main() { { - Crawler demo; + AiL demo; if (demo.Construct(WINDOW_SIZE.x, WINDOW_SIZE.y, 4, 4)) demo.Start(); } @@ -1983,7 +2000,7 @@ int main() while(file.good()){ std::string line; std::getline(file,line); - if(line.find("Crawler\\")!=std::string::npos){ + if(line.find("AiL\\")!=std::string::npos){ if(!leaked){ leaked=true; std::cout<reflectiveData.find(tileID)!=tileSheet.tileset->reflectiveData.end(); } -bool Crawler::OnUserDestroy(){ +bool AiL::OnUserDestroy(){ + if(GameState::STATE!=GameState::states[States::MAIN_MENU]){ //If we're on the main menu, we don't have a save file loaded. So we would skip saving the game. + SaveFile::SaveGame(); + } GFX.Reset(); for(auto&[key,value]:MAP_DATA){ if(MAP_DATA[key].optimizedTile!=nullptr){ @@ -2091,7 +2111,7 @@ bool Crawler::OnUserDestroy(){ return true; } -void Crawler::InitializeLevels(){ +void AiL::InitializeLevels(){ #define INITLEVEL(map) \ LEVEL_NAMES[#map]=map; \ InitializeLevel("map_path"_S + "Levels."#map ## _S,map); @@ -2109,22 +2129,22 @@ void Crawler::InitializeLevels(){ LEVEL_NAMES.SetInitialized(); } -void Crawler::SpawnMonster(vf2d pos,MonsterData&data,bool upperLevel,bool isBossSpawn){ +void AiL::SpawnMonster(vf2d pos,MonsterData&data,bool upperLevel,bool isBossSpawn){ monstersToBeSpawned.push_back(Monster(pos,data,upperLevel,isBossSpawn)); if(isBossSpawn){ totalBossEncounterMobs++; } } -void Crawler::DrawPie(vf2d center,float radius,float degreesCut,Pixel col){ +void AiL::DrawPie(vf2d center,float radius,float degreesCut,Pixel col){ DrawPolygonDecal(nullptr,circleCooldownPoints,circleCooldownPoints,std::max(1,int(degreesCut/4)),center,radius,col); } -void Crawler::DrawSquarePie(vf2d center,float radius,float degreesCut,Pixel col){ +void AiL::DrawSquarePie(vf2d center,float radius,float degreesCut,Pixel col){ DrawPolygonDecal(nullptr,squareCircleCooldownPoints,squareCircleCooldownPoints,std::max(1,int(degreesCut/4)),center,radius,col); } -void Crawler::InitializeDefaultKeybinds(){ +void AiL::InitializeDefaultKeybinds(){ Player::KEY_ABILITY1.AddKeybind({KEY,Q}); Player::KEY_ABILITY2.AddKeybind({KEY,E}); Player::KEY_ABILITY3.AddKeybind({KEY,R}); @@ -2147,16 +2167,16 @@ void Crawler::InitializeDefaultKeybinds(){ KEY_MENU.AddKeybind({KEY,ESCAPE}); } -void Crawler::SetBossNameDisplay(std::string name,float time){ +void AiL::SetBossNameDisplay(std::string name,float time){ bossName=name; bossDisplayTimer=time; } -bool Crawler::InBossEncounter(){ +bool AiL::InBossEncounter(){ return bossName!=""; } -void Crawler::StartBossEncounter(){ +void AiL::StartBossEncounter(){ if(!encounterStarted){ encounterStarted=true; totalDamageDealt=0; @@ -2164,7 +2184,7 @@ void Crawler::StartBossEncounter(){ } } -void Crawler::DisplayBossEncounterInfo(){ +void AiL::DisplayBossEncounterInfo(){ if(bossDisplayTimer>0){ std::string displayText="- "+bossName+" -"; @@ -2196,18 +2216,18 @@ void Crawler::DisplayBossEncounterInfo(){ } -void Crawler::BossDamageDealt(int damage){ +void AiL::BossDamageDealt(int damage){ totalDamageDealt+=damage; } -void Crawler::ReduceBossEncounterMobCount(){ +void AiL::ReduceBossEncounterMobCount(){ totalBossEncounterMobs--; if(totalBossEncounterMobs<0){ ERR("WARNING! Boss Encounter mob count is less than zero, THIS SHOULD NOT BE HAPPENING!"); } } -void Crawler::RenderMenu(){ +void AiL::RenderMenu(){ if(!GamePaused()&&Menu::stack.size()>0){ Menu::stack.back()->Update(this); } @@ -2219,7 +2239,7 @@ void Crawler::RenderMenu(){ } } -void Crawler::InitializeGraphics(){ +void AiL::InitializeGraphics(){ circleCooldownPoints.push_back({0,0}); squareCircleCooldownPoints.push_back({0,0}); for(int i=0;i<=360;i+=4){ @@ -2307,11 +2327,11 @@ void Crawler::InitializeGraphics(){ std::cout<0){ for(IToggleable*item:IToggleable::uninitializedToggleGroupItems){ std::cout<<"\tUninitialized Toggle Item Ptr: 0x"<::max(),0.4f); } -int Crawler::GetCurrentChapter(){ +int AiL::GetCurrentChapter(){ return chapter; } -void Crawler::SetChapter(int chapter){ +void AiL::SetChapter(int chapter){ this->chapter=chapter; for(MenuComponent*component:Menu::chapterListeners){ component->OnChapterUpdate(chapter); } } -const std::weak_ptrCrawler::GetLoadoutItem(int slot){ +const std::weak_ptrAiL::GetLoadoutItem(int slot){ if(slot<0||slot>loadout.size()-1)ERR("Invalid inventory slot "+std::to_string(slot)+", please choose a slot in range (0-"+std::to_string(loadout.size()-1)+")."); return loadout[slot]; } -void Crawler::SetLoadoutItem(int slot,std::string itemName){ +void AiL::SetLoadoutItem(int slot,std::string itemName){ if(slot<0||slot>loadout.size()-1)ERR("Invalid inventory slot "+std::to_string(slot)+", please choose a slot in range (0-"+std::to_string(loadout.size()-1)+")."); if(Inventory::GetItemCount(itemName)>0){ loadout[slot]=Inventory::CopyItem(itemName)[0]; @@ -2399,7 +2419,7 @@ void Crawler::SetLoadoutItem(int slot,std::string itemName){ } } -bool Crawler::UseLoadoutItem(int slot){ +bool AiL::UseLoadoutItem(int slot){ if(slot<0||slot>loadout.size()-1)ERR("Invalid inventory slot "+std::to_string(slot)+", please choose a slot in range (0-"+std::to_string(loadout.size()-1)+")."); if(GetLoadoutItem(slot).lock()->Amt()>0){ Inventory::UseItem(GetLoadoutItem(slot).lock()->ActualName()); @@ -2409,7 +2429,7 @@ bool Crawler::UseLoadoutItem(int slot){ return false; } -void Crawler::ClearLoadoutItem(int slot){ +void AiL::ClearLoadoutItem(int slot){ if(slot<0||slot>loadout.size()-1)ERR("Invalid inventory slot "+std::to_string(slot)+", please choose a slot in range (0-"+std::to_string(loadout.size()-1)+")."); loadout[slot].reset(); InputGroup*inputGroup=nullptr; @@ -2452,7 +2472,7 @@ void Crawler::ClearLoadoutItem(int slot){ } } -void Crawler::RenderFadeout(){ +void AiL::RenderFadeout(){ uint8_t alpha=0; if(fadeOutDuration>0){ fadeOutDuration=std::max(0.f,fadeOutDuration-GetElapsedTime()); @@ -2468,16 +2488,16 @@ void Crawler::RenderFadeout(){ FillRectDecal({0,0},GetScreenSize(),{0,0,0,alpha}); } -bool Crawler::GamePaused(){ +bool AiL::GamePaused(){ return fadeOutDuration>0; } -void Crawler::EndGame(){ +void AiL::EndGame(){ gameEnd=true; } #ifndef __EMSCRIPTEN__ - ::discord::Result Crawler::SetupDiscord(){ + ::discord::Result AiL::SetupDiscord(){ auto result=::discord::Core::Create(1186719371750555780,DiscordCreateFlags_NoRequireDiscord,&Discord); if(result==::discord::Result::Ok){ Discord->SetLogHook( @@ -2493,21 +2513,21 @@ void Crawler::EndGame(){ } #endif -void Crawler::UpdateDiscordStatus(std::string levelName,std::string className){ +void AiL::UpdateDiscordStatus(std::string levelName,std::string className){ #ifndef __EMSCRIPTEN__ if(Discord){ ::discord::Activity newActivity{}; newActivity.SetDetails(levelName.c_str()); - newActivity.SetState(std::format("Level {} {}",player->Level(),className).c_str()); discord::ActivityTimestamps×tamps=newActivity.GetTimestamps(); timestamps.SetStart(gameStarted); newActivity.SetType(discord::ActivityType::Playing); discord::ActivityAssets&assets=newActivity.GetAssets(); - assets.SetLargeImage("heart_512"); + assets.SetLargeImage("ail_512"); assets.SetLargeText(game->sAppName.c_str()); - assets.SetSmallText(std::format("Level {} {}",player->Level(),className).c_str()); if(levelName!="Main Menu"){ + newActivity.SetState(std::format("Level {} {}",player->Level(),className).c_str()); + assets.SetSmallText(std::format("Level {} {}",player->Level(),className).c_str()); std::for_each(className.begin(),className.end(),[](char&c){c=std::tolower(c);}); assets.SetSmallImage(("nico-"+className+"_512").c_str()); } @@ -2526,10 +2546,43 @@ void Crawler::UpdateDiscordStatus(std::string levelName,std::string className){ #endif } -void Crawler::InitializePlayerLevelCap(){ +void AiL::InitializePlayerLevelCap(){ while(DATA["PlayerXP"].HasProperty(std::format("LEVEL[{}]",player->levelCap+1))){ player->levelCap++; } if(player->levelCap<=1)ERR("Could not detect level cap properly!") std::cout<<"Level cap detected as "<levelCap)<level=1; + player->stats.Reset(); + player->ResetAccumulatedXP(); + player->totalXPEarned=0; + player->SetMoney(100U); + for(int i=0;iClearLoadoutItem(i); + } + Unlock::unlocks.clear(); + Unlock::Initialize(); + State_OverworldMap::SetStageMarker("Stage I-I"); + State_OverworldMap::UpdateCurrentConnectionPoint(*State_OverworldMap::currentConnectionPoint); + SetChapter(1); + SaveFile::SetSaveFileName(""); +} + +void AiL::OnRequestCompleted(const std::string_view receivedData)const{ + responseCallback(receivedData); +} + +std::string operator ""_FS(const char*key,std::size_t len){ + AiL::OutputDebugInfo(key,len); + return DATA.GetProperty(std::string(key,len)).GetFullString(); } \ No newline at end of file diff --git a/Crawler/Crawler.h b/Adventures in Lestoria/AdventuresInLestoria.h similarity index 96% rename from Crawler/Crawler.h rename to Adventures in Lestoria/AdventuresInLestoria.h index 1d31dfaf..5b6f5ac6 100644 --- a/Crawler/Crawler.h +++ b/Adventures in Lestoria/AdventuresInLestoria.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -53,12 +53,15 @@ All rights reserved. #ifndef __EMSCRIPTEN__ #include "discord.h" #endif +#include "Audio.h" -class Crawler : public olc::PixelGameEngine +class AiL : public olc::PixelGameEngine { friend class GameState; friend class State_GameRun; + friend class SaveFile; friend class sig::Animation; + friend class Audio; std::unique_ptrplayer; public: Pathfinding pathfinder; @@ -114,13 +117,15 @@ private: bool gameEnd=false; std::vectormonstersToBeSpawned; time_t gameStarted; + std::functionresponseCallback; void ValidateGameStatus(); #ifndef __EMSCRIPTEN__ ::discord::Result SetupDiscord(); #endif + Audio audioEngine; public: - Crawler(); + AiL(); bool OnUserCreate() override; bool OnUserUpdate(float fElapsedTime) override; bool OnUserDestroy() override; @@ -206,6 +211,8 @@ public: void EndGame(); void UpdateDiscordStatus(std::string levelName,std::string className); void InitializePlayerLevelCap(); + void ResetGame(); + void OnRequestCompleted(const std::string_view receivedData)const override; struct TileGroupData{ vi2d tilePos; diff --git a/Crawler/Animation.cpp b/Adventures in Lestoria/Animation.cpp similarity index 99% rename from Crawler/Animation.cpp rename to Adventures in Lestoria/Animation.cpp index dc4cc46e..fae83459 100644 --- a/Crawler/Animation.cpp +++ b/Adventures in Lestoria/Animation.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,7 +36,7 @@ All rights reserved. */ #pragma endregion #include "Animation.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "safemap.h" diff --git a/Crawler/Animation.h b/Adventures in Lestoria/Animation.h similarity index 97% rename from Crawler/Animation.h rename to Adventures in Lestoria/Animation.h index f39f53f3..3c4c9a18 100644 --- a/Crawler/Animation.h +++ b/Adventures in Lestoria/Animation.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Arrow.cpp b/Adventures in Lestoria/Arrow.cpp similarity index 97% rename from Crawler/Arrow.cpp rename to Adventures in Lestoria/Arrow.cpp index 6886ddcb..aba0fa02 100644 --- a/Crawler/Arrow.cpp +++ b/Adventures in Lestoria/Arrow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "BulletTypes.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "util.h" #include "olcUTIL_Geometry2D.h" diff --git a/Crawler/Attributable.h b/Adventures in Lestoria/Attributable.h similarity index 98% rename from Crawler/Attributable.h rename to Adventures in Lestoria/Attributable.h index 129c26d3..44ab542e 100644 --- a/Crawler/Attributable.h +++ b/Adventures in Lestoria/Attributable.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/AttributableStat.cpp b/Adventures in Lestoria/AttributableStat.cpp similarity index 97% rename from Crawler/AttributableStat.cpp rename to Adventures in Lestoria/AttributableStat.cpp index a04c6721..3d5fd573 100644 --- a/Crawler/AttributableStat.cpp +++ b/Adventures in Lestoria/AttributableStat.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: @@ -173,4 +173,8 @@ const bool ItemAttribute::operator==(const ItemAttribute&rhs)const{ const bool ItemAttribute::ShowAsDecimal()const{ return showDecimal; +} + +const std::string_view ItemAttribute::ActualName()const{ + return originalName; } \ No newline at end of file diff --git a/Crawler/AttributableStat.h b/Adventures in Lestoria/AttributableStat.h similarity index 89% rename from Crawler/AttributableStat.h rename to Adventures in Lestoria/AttributableStat.h index 5af0d9e5..9a304f35 100644 --- a/Crawler/AttributableStat.h +++ b/Adventures in Lestoria/AttributableStat.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: @@ -30,7 +30,7 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Portions of this software are copyright © 2023 The FreeType +Portions of this software are copyright � 2023 The FreeType Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ @@ -49,7 +49,7 @@ class Player; class Monster; class ItemAttribute{ - friend class Crawler; + friend class AiL; std::string name; std::string originalName; bool isPct; @@ -62,6 +62,7 @@ public: ItemAttribute(std::string_view originalName,std::string_view name,bool isPct,bool showDecimal,std::string_view modifies=""sv); static ItemAttribute&Get(const std::string_view name,const std::optional>target={}); const std::string_view Name()const; + const std::string_view ActualName()const; const std::string_view Modifies()const; const bool DisplayAsPercent()const; const bool ShowAsDecimal()const; @@ -82,7 +83,7 @@ public: ItemAttributable&operator+=(Stats&rhs); //Returns a copy of all the attributes to be passed to a new instance easily / to sync values between both. - inline void copyTo(ItemAttributable&target){ + inline void copyTo(ItemAttributable&target)const{ target.attributes=attributes; } inline float&get(std::string_view a){ @@ -95,10 +96,20 @@ public: return get_readOnly(ItemAttribute::Get(a)); } inline const float&get_readOnly(const ItemAttribute&a)const{ + static float DEFAULT=0; if(attributes.count(a)){ return attributes.at(a); } - return 0; + return DEFAULT; + } + inline auto begin()const{ + return attributes.begin(); + } + inline auto end()const{ + return attributes.end(); + } + inline void clear(){ + attributes.clear(); } }; diff --git a/Adventures in Lestoria/Audio.cpp b/Adventures in Lestoria/Audio.cpp new file mode 100644 index 00000000..7f113b92 --- /dev/null +++ b/Adventures in Lestoria/Audio.cpp @@ -0,0 +1,247 @@ +#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 © 2023 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion +#include "Audio.h" +#include "AdventuresInLestoria.h" +#include "DEFINES.h" + +INCLUDE_game +INCLUDE_DATA + +float Audio::defaultFadeTime; + +void Audio::Initialize(){ + Engine().SetBackgroundPlay(true); + Self().events.insert("Default Volume"); + for(auto&[key,data]:DATA["Events"]){ + Self().events.insert(key); + } + for(auto&[songFileName,size]:DATA["BGM"]){ + auto&data=DATA["BGM"][songFileName]; + if(songFileName!="Default Fade Time"){ + int channelCounter=0; + + BGM&bgm=Self().bgm[songFileName]; + + bgm.SetFileName(songFileName); + bgm.SetName(data["Track Name"].GetString()); + + while(data.HasProperty(std::format("channel[{}]",channelCounter))){ + std::string channelName=data[std::format("channel[{}]",channelCounter)].GetString(); + if(!std::filesystem::exists("bgm_directory"_S+channelName))ERR(std::format("WARNING! Could not load file {} for track {}",channelName,songFileName)); + bgm.AddChannel(channelName); + channelCounter++; + } + + if(!data.HasProperty("Default Volume"))ERR(std::format("WARNING! Track {} does not have a Default Volume parameter!",bgm.GetName())); + if(data["Default Volume"].GetValueCount()!=bgm.GetChannelCount())ERR(std::format("WARNING! Default Volume parameters do not match channel count. {} != {}",data["Default Volume"].GetValueCount(),bgm.GetChannelCount())); + + VolumeList volumes; + for(int i=0;iaudioEngine.audioEngine; +} +void Audio::Play(const std::string_view sound){ + Engine().Play(std::string(sound)); +}; +void Audio::PlayBGM(const std::string_view sound,const bool loop){ + BGM&track=Self().bgm[std::string(sound)]; + StopBGM(); //Stop any currently playing track. + Self().playParams={std::string(sound),loop}; + Self().playBGMWaitTime=0.7f; +}; + +void Audio::StopBGM(){ + if(Self().BGMIsPlaying()){ + BGM¤tTrack=Self().bgm[Self().currentBGM]; + for(int trackID:currentTrack.GetChannelIDs()){ + Engine().Stop(trackID); + } + } +} + +const bool Audio::BGMIsPlaying(){ + return Self().currentBGM.length()>0; +} + +const Volume&Audio::BGM::GetVolume(const Event&eventName,const ChannelID&id)const{ + return eventVolumes.GetVolumes(eventName).at(id); +} + +void Audio::BGM::Load(){ + BGM&bgm=Self().bgm[Self().currentBGM]; + if(Self().BGMIsPlaying()){ + bgm.Unload(); + } + Self().currentBGM=songFileName; + BGM&newBgm=Self().bgm[songFileName]; + if(newBgm.channels.size()>0)ERR(std::format("WARNING! The size of the channels list is greater than zero! Size: {}",bgm.channels.size())); + for(const ChannelName&channel:newBgm.GetChannels()){ + ChannelID soundID=Engine().LoadSound("bgm_directory"_S+channel); + newBgm.channels.push_back(soundID); + } +} + +void Audio::BGM::Unload(){ + BGM&bgm=Self().bgm[Self().currentBGM]; + for(const ChannelID&id:channels){ + Engine().UnloadSound(id); + } + channels.clear(); + Self().currentBGM=""; +} + +const ChannelID&Audio::BGM::GetChannelID(const int index){ + return channels[index]; +} + +const ChannelIDList&Audio::BGM::GetChannelIDs()const{ + return channels; +} + +const std::vector&Audio::BGM::GetChannels()const{ + return channelNames; +} + +void Audio::BGM::SetFadeTime(const float fadeTime){ + this->fadeTime=fadeTime; +} + +void Audio::BGM::AddEventVolumes(const Event&eventName,const VolumeList&volumes){ + eventVolumes.AddEventInfo(eventName,volumes); +} + +const size_t Audio::BGM::GetChannelCount()const{ + return channelNames.size(); +} + +const SongName&Audio::BGM::GetName()const{ + return songName; +} + +void Audio::BGM::SetName(std::string_view name){ + songName=name; +} + +void Audio::BGM::SetFileName(std::string_view name){ + songFileName=name; +} + +void Audio::BGM::AddChannel(const ChannelName&name){ + channelNames.push_back(name); +} + +const VolumeList&Audio::EventData::GetVolumes(const Event&event)const{ + if(eventInfo.find(event)!=eventInfo.end())return eventInfo.at(event); + return eventInfo.at("Default Volume"); +} + +void Audio::EventData::AddEventInfo(const Event&eventName,const VolumeList&volumes){ + eventInfo[eventName]=volumes; +} + +Audio&Audio::Self(){ + return game->audioEngine; +} + +const Event&Audio::GetAudioEvent(){ + return Self().currentAudioEvent; +} +void Audio::SetAudioEvent(const Event&eventName){ + if(Self().events.find(eventName)==Self().events.end())ERR(std::format("WARNING! cannot find event {}",eventName)); + + Self().currentAudioEvent=eventName; + + if(Audio::BGMIsPlaying()){ + BGM¤tBgm=Self().bgm[Self().currentBGM]; + for(int currentTrackIndex=0;int trackID:currentBgm.GetChannelIDs()){ + Engine().SetVolume(trackID,currentBgm.GetVolume(eventName,currentTrackIndex)); + currentTrackIndex++; + } + } +} + +std::string operator""_SFX(const char*key,size_t length){ + return "sfx_directory"_S+std::string(key,length); +} + +const SongName&Audio::GetTrackName(){ + return Self().currentBGM; +} + +void Audio::Update(){ + if(Self().playBGMWaitTime>0.f){ + Self().playBGMWaitTime=std::max(Self().playBGMWaitTime-game->GetElapsedTime(),0.f); + if(Self().playBGMWaitTime==0.f){ + BGM&track=Self().bgm[Self().playParams.sound]; + track.Load(); + for(int channelListIndex=0;int trackID:track.GetChannelIDs()){ + Engine().SetVolume(trackID,track.GetVolume(Self().currentAudioEvent,channelListIndex)); + Engine().Play(trackID,Self().playParams.loop); + channelListIndex++; + } + } + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/Audio.h b/Adventures in Lestoria/Audio.h new file mode 100644 index 00000000..2e481745 --- /dev/null +++ b/Adventures in Lestoria/Audio.h @@ -0,0 +1,112 @@ +#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 © 2023 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion +#pragma once +#include "olcPGEX_MiniAudio.h" +#include "config.h" +#include + +using SongName=std::string; +using Event=std::string; +using ChannelName=std::string; +using ChannelID=int; +using ChannelIDList=std::vector; +using Volume=float; +using VolumeList=std::vector; + +class Audio{ +public: + static Audio&Self(); + static MiniAudio&Engine(); + static void Initialize(); + static void Update(); + static void Play(const std::string_view sound); + //Play a BGM given a name found in bgm.txt configuration file. + static void PlayBGM(const std::string_view sound,const bool loop=true); + static void StopBGM(); + static const Event&GetAudioEvent(); + static const SongName&GetTrackName(); + static void SetAudioEvent(const Event&eventName); + static const bool BGMIsPlaying(); +private: + struct BGMPlayParams{ + std::string sound; + bool loop; + }; + class EventData{ + public: + void AddEventInfo(const Event&eventName,const VolumeList&volumes); + const VolumeList&GetVolumes(const Event&event)const; + private: + std::mapeventInfo; + }; + class BGM{ + public: + void Load(); + const size_t GetChannelCount()const; + const std::vector&GetChannels()const; + const SongName&GetName()const; + const Volume&GetVolume(const Event&eventName,const ChannelID&id)const; + void SetName(std::string_view name); + void SetFileName(std::string_view name); + void AddChannel(const ChannelName&name); + void AddEventVolumes(const Event&eventName,const VolumeList&volumes); + void SetFadeTime(const float fadeTime); + const ChannelID&GetChannelID(const int index); + const ChannelIDList&GetChannelIDs()const; + private: + std::string songName; //Name of the track. + std::string songFileName; //Name of the key in bgm. + ChannelIDList channels; + std::vectorchannelNames; + EventData eventVolumes; + float fadeTime="BGM.Default Fade Time"_F; + void Unload(); + }; +private: + MiniAudio audioEngine; + SongName currentBGM=""; + std::mapbgm; + std::setevents; + static float defaultFadeTime; + Event currentAudioEvent="Default Volume"; + + float playBGMWaitTime=0.0f; + BGMPlayParams playParams; +}; + +std::string operator""_SFX(const char*key,size_t length); \ No newline at end of file diff --git a/Crawler/BitwiseEnum.h b/Adventures in Lestoria/BitwiseEnum.h similarity index 97% rename from Crawler/BitwiseEnum.h rename to Adventures in Lestoria/BitwiseEnum.h index a27b416d..f08614ed 100644 --- a/Crawler/BitwiseEnum.h +++ b/Adventures in Lestoria/BitwiseEnum.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/BlacksmithCraftingWindow.cpp b/Adventures in Lestoria/BlacksmithCraftingWindow.cpp similarity index 98% rename from Crawler/BlacksmithCraftingWindow.cpp rename to Adventures in Lestoria/BlacksmithCraftingWindow.cpp index e6e79d5a..5bb0c090 100644 --- a/Crawler/BlacksmithCraftingWindow.cpp +++ b/Adventures in Lestoria/BlacksmithCraftingWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Menu.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "MenuItemItemButton.h" #include "PlayerMoneyLabel.h" #include "RowInventoryScrollableWindowComponent.h" @@ -172,7 +172,7 @@ void Menu::InitializeBlacksmithCraftingWindow(){ auto moneyIcon=blacksmithWindow->ADD("Money Icon",MenuIconButton)({moneyIconPos,{24,24}},GFX["money.png"].Decal(),DO_NOTHING,IconButtonAttr::NOT_SELECTABLE|IconButtonAttr::NO_OUTLINE|IconButtonAttr::NO_BACKGROUND)END; std::string moneyText=std::to_string(game->GetPlayer()->GetMoney()); vf2d moneyTextSize=game->GetTextSizeProp(moneyText)*2; - auto moneyDisplay=blacksmithWindow->ADD("Money Label",PlayerMoneyLabel)({moneyIconPos-vf2d{2+moneyTextSize.x,-2},moneyTextSize},2,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN)END; + auto moneyDisplay=blacksmithWindow->ADD("Money Label",PlayerMoneyLabel)({moneyIconPos-vf2d{2+moneyTextSize.x,-2},moneyTextSize},2,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN|ComponentAttr::FIT_TO_LABEL)END; moneyDisplay->SetRightAlignment(true); Player::AddMoneyListener(moneyDisplay); #pragma endregion diff --git a/Crawler/Buff.h b/Adventures in Lestoria/Buff.h similarity index 94% rename from Crawler/Buff.h rename to Adventures in Lestoria/Buff.h index 9e820b08..d433b7ad 100644 --- a/Crawler/Buff.h +++ b/Adventures in Lestoria/Buff.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -48,7 +48,7 @@ enum BuffType{ RESTORATION_DURING_CAST, }; -class Crawler; +class AiL; struct Buff{ BuffType type; @@ -57,7 +57,7 @@ struct Buff{ float intensity=1; float nextTick=0; std::set attr; - std::functionrepeatAction; + std::functionrepeatAction; inline Buff(BuffType type,float duration,float intensity) :type(type),duration(duration),intensity(intensity){} inline Buff(BuffType type,float duration,float intensity,std::set attr) @@ -68,6 +68,6 @@ struct Buff{ this->attr.insert(ItemAttribute::attributes.at(s)); } } - inline Buff(BuffType type,float duration,float intensity,float timeBetweenTicks,std::functionrepeatAction) + inline Buff(BuffType type,float duration,float intensity,float timeBetweenTicks,std::functionrepeatAction) :type(type),duration(duration),intensity(intensity),nextTick(duration-timeBetweenTicks),timeBetweenTicks(timeBetweenTicks),repeatAction(repeatAction){} }; \ No newline at end of file diff --git a/Crawler/Bullet.cpp b/Adventures in Lestoria/Bullet.cpp similarity index 96% rename from Crawler/Bullet.cpp rename to Adventures in Lestoria/Bullet.cpp index faad9abb..1f955dbd 100644 --- a/Crawler/Bullet.cpp +++ b/Adventures in Lestoria/Bullet.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,7 +36,7 @@ All rights reserved. */ #pragma endregion #include "Bullet.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "safemap.h" diff --git a/Crawler/Bullet.h b/Adventures in Lestoria/Bullet.h similarity index 98% rename from Crawler/Bullet.h rename to Adventures in Lestoria/Bullet.h index d90a5ae6..492cef8c 100644 --- a/Crawler/Bullet.h +++ b/Adventures in Lestoria/Bullet.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -43,7 +43,7 @@ All rights reserved. #include "DEFINES.h" struct Bullet{ - friend class Crawler; + friend class AiL; vf2d vel; vf2d pos; float radius; diff --git a/Crawler/BulletTypes.h b/Adventures in Lestoria/BulletTypes.h similarity index 98% rename from Crawler/BulletTypes.h rename to Adventures in Lestoria/BulletTypes.h index 7cdc6dfc..0b455b6a 100644 --- a/Crawler/BulletTypes.h +++ b/Adventures in Lestoria/BulletTypes.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/BuyItemWindow.cpp b/Adventures in Lestoria/BuyItemWindow.cpp similarity index 98% rename from Crawler/BuyItemWindow.cpp rename to Adventures in Lestoria/BuyItemWindow.cpp index 0b0576c6..e0d130c9 100644 --- a/Crawler/BuyItemWindow.cpp +++ b/Adventures in Lestoria/BuyItemWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/C++ Header File (OLC-3).zip b/Adventures in Lestoria/C++ Header File (OLC-3).zip similarity index 81% rename from Crawler/C++ Header File (OLC-3).zip rename to Adventures in Lestoria/C++ Header File (OLC-3).zip index 55ab0c30..06791b1a 100644 Binary files a/Crawler/C++ Header File (OLC-3).zip and b/Adventures in Lestoria/C++ Header File (OLC-3).zip differ diff --git a/Crawler/C++ Source File (OLC-3).zip b/Adventures in Lestoria/C++ Source File (OLC-3).zip similarity index 81% rename from Crawler/C++ Source File (OLC-3).zip rename to Adventures in Lestoria/C++ Source File (OLC-3).zip index 8334de3e..30df570c 100644 Binary files a/Crawler/C++ Source File (OLC-3).zip and b/Adventures in Lestoria/C++ Source File (OLC-3).zip differ diff --git a/Crawler/C++/scripts/build.sh b/Adventures in Lestoria/C++/scripts/build.sh old mode 100755 new mode 100644 similarity index 100% rename from Crawler/C++/scripts/build.sh rename to Adventures in Lestoria/C++/scripts/build.sh diff --git a/Crawler/C++/scripts/commit.sh b/Adventures in Lestoria/C++/scripts/commit.sh old mode 100755 new mode 100644 similarity index 100% rename from Crawler/C++/scripts/commit.sh rename to Adventures in Lestoria/C++/scripts/commit.sh diff --git a/Crawler/C++/scripts/debug.sh b/Adventures in Lestoria/C++/scripts/debug.sh old mode 100755 new mode 100644 similarity index 100% rename from Crawler/C++/scripts/debug.sh rename to Adventures in Lestoria/C++/scripts/debug.sh diff --git a/Crawler/C++/scripts/filelist b/Adventures in Lestoria/C++/scripts/filelist similarity index 100% rename from Crawler/C++/scripts/filelist rename to Adventures in Lestoria/C++/scripts/filelist diff --git a/Crawler/C++/scripts/lines.sh b/Adventures in Lestoria/C++/scripts/lines.sh old mode 100755 new mode 100644 similarity index 100% rename from Crawler/C++/scripts/lines.sh rename to Adventures in Lestoria/C++/scripts/lines.sh diff --git a/Crawler/C++/scripts/md5 b/Adventures in Lestoria/C++/scripts/md5 similarity index 86% rename from Crawler/C++/scripts/md5 rename to Adventures in Lestoria/C++/scripts/md5 index 4e06ad7f..e5ca4867 100644 --- a/Crawler/C++/scripts/md5 +++ b/Adventures in Lestoria/C++/scripts/md5 @@ -4,4 +4,4 @@ debug.sh:8125f303032b6cbc137223df63d10096 - lines.sh:3b907786f7fc9204025993016c9080de - release.sh:b1ce8461a303e8e7aa9ed74259db3873 - temp:d41d8cd98f00b204e9800998ecf8427e - -web.sh:cd3b8a99e208244dee7576bc23c0dc80 - +web.sh:1adf54f3c200922572a24573a0998110 - diff --git a/Crawler/C++/scripts/release.sh b/Adventures in Lestoria/C++/scripts/release.sh old mode 100755 new mode 100644 similarity index 100% rename from Crawler/C++/scripts/release.sh rename to Adventures in Lestoria/C++/scripts/release.sh diff --git a/Crawler/C++/scripts/temp b/Adventures in Lestoria/C++/scripts/temp similarity index 100% rename from Crawler/C++/scripts/temp rename to Adventures in Lestoria/C++/scripts/temp diff --git a/Crawler/C++/scripts/web.sh b/Adventures in Lestoria/C++/scripts/web.sh old mode 100755 new mode 100644 similarity index 74% rename from Crawler/C++/scripts/web.sh rename to Adventures in Lestoria/C++/scripts/web.sh index 1097efb7..5122584d --- a/Crawler/C++/scripts/web.sh +++ b/Adventures in Lestoria/C++/scripts/web.sh @@ -12,12 +12,12 @@ source ../emsdk/emsdk_env.sh if [ ! -f "pixelGameEngine_wasm.o" ] then printf "Pixel Game Engine compile object missing. Compiling for the first time..." - em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -c pixelGameEngine.cpp -o pixelGameEngine_wasm.o + em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -s USE_FREETYPE=1 -c pixelGameEngine.cpp -o pixelGameEngine_wasm.o fi if [ -d "assets" ]; then - em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html --preload-file ./assets + em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -s USE_FREETYPE=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html --preload-file ./assets else - em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html + em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -s USE_FREETYPE=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html fi cp buildtemplate.html ${PROJECT_NAME}.html diff --git a/Crawler/CREDITS b/Adventures in Lestoria/CREDITS similarity index 100% rename from Crawler/CREDITS rename to Adventures in Lestoria/CREDITS diff --git a/Crawler/CharacterAbilityPreviewComponent.h b/Adventures in Lestoria/CharacterAbilityPreviewComponent.h similarity index 95% rename from Crawler/CharacterAbilityPreviewComponent.h rename to Adventures in Lestoria/CharacterAbilityPreviewComponent.h index d10c5ad5..ba82cfca 100644 --- a/Crawler/CharacterAbilityPreviewComponent.h +++ b/Adventures in Lestoria/CharacterAbilityPreviewComponent.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #pragma once #include "MenuLabel.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "util.h" #include "Ability.h" @@ -51,7 +51,7 @@ public: inline CharacterAbilityPreviewComponent(geom2d::rectrect,Ability*ability) :MenuLabel(rect,"",1,ComponentAttr::OUTLINE|ComponentAttr::BACKGROUND),ability(ability){} protected: - virtual void inline Update(Crawler*game)override{ + virtual void inline Update(AiL*game)override{ MenuLabel::Update(game); } virtual void inline DrawDecal(ViewPort&window,bool focused)override{ diff --git a/Crawler/CharacterInfoWindow.cpp b/Adventures in Lestoria/CharacterInfoWindow.cpp similarity index 98% rename from Crawler/CharacterInfoWindow.cpp rename to Adventures in Lestoria/CharacterInfoWindow.cpp index 9af1b068..57c16b48 100644 --- a/Crawler/CharacterInfoWindow.cpp +++ b/Adventures in Lestoria/CharacterInfoWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -35,7 +35,7 @@ Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "Menu.h" #include "CharacterRotatingDisplay.h" diff --git a/Crawler/CharacterMenuWindow.cpp b/Adventures in Lestoria/CharacterMenuWindow.cpp similarity index 75% rename from Crawler/CharacterMenuWindow.cpp rename to Adventures in Lestoria/CharacterMenuWindow.cpp index c9377f0e..c259ad70 100644 --- a/Crawler/CharacterMenuWindow.cpp +++ b/Adventures in Lestoria/CharacterMenuWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #include "PopupMenuLabel.h" #include "StatLabel.h" #include "CharacterRotatingDisplay.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "ClassInfo.h" #include "MenuItemItemButton.h" #include "EquipSlotButton.h" @@ -133,26 +133,37 @@ void Menu::InitializeCharacterMenuWindow(){ ScrollableWindowComponent*equipList=Component(data.component->parentMenu,"Equip List"); equipList->RemoveAllComponents(); for(int counter=0;const std::weak_ptrit:availableEquipment){ + const static auto OppositeRingSlotDoesNotMatchCurrentEquip=[](RowItemDisplay*comp){ + EquipSlot slot=EquipSlot(comp->I(Attribute::EQUIP_TYPE)); + std::weak_ptrotherItem; + if(slot==EquipSlot::RING1)otherItem=Inventory::GetEquip(EquipSlot::RING2); + else + if(slot==EquipSlot::RING2)otherItem=Inventory::GetEquip(EquipSlot::RING1); + return ISBLANK(otherItem)||(&*comp->GetItem().lock()!=&*otherItem.lock()); + }; + auto equip=equipList->ADD("Equip Item "+std::to_string(counter),RowItemDisplay)({{2,2+counter*29.f},{120-15,28}},it, [](MenuFuncData data){ RowItemDisplay*comp=DYNAMIC_CAST(data.component); if(comp!=nullptr){ - Inventory::EquipItem(comp->GetItem(),EquipSlot(comp->I(Attribute::EQUIP_TYPE))); - for(MenuComponent*button:((ScrollableWindowComponent*)data.parentComponent)->GetComponents()){ - RowItemDisplay*comp=DYNAMIC_CAST(button); - if(comp!=nullptr){ - comp->SetSelected(false); - }else{ - ERR("WARNING! Attempting to cast a button that isn't a RowItemDisplay!"); + if(OppositeRingSlotDoesNotMatchCurrentEquip(comp)){ //If we find that the opposite ring slot is equipped to us, this would be an item swap or the exact same ring, therefore no stat calculations apply. + Inventory::EquipItem(comp->GetItem(),EquipSlot(comp->I(Attribute::EQUIP_TYPE))); + for(MenuComponent*button:((ScrollableWindowComponent*)data.parentComponent)->GetComponents()){ + RowItemDisplay*comp=DYNAMIC_CAST(button); + if(comp!=nullptr){ + comp->SetSelected(false); + }else{ + ERR("WARNING! Attempting to cast a button that isn't a RowItemDisplay!"); + } } + comp->SetSelected(true); + for(int counter=0;const std::string&attribute:displayAttrs){ + StatLabel*statDisplayLabel=Component(CHARACTER_MENU,"Attribute "+std::string(ItemAttribute::Get(attribute).Name())+" Label"); + statDisplayLabel->SetStatChangeAmt(0); + } + MenuItemItemButton*equipButton=Component(CHARACTER_MENU,"Equip Slot "+slotNames[data.parentComponent->I(A::INDEXED_THEME)]); + equipButton->SetItem(comp->GetItem(),false); } - comp->SetSelected(true); - for(int counter=0;const std::string&attribute:displayAttrs){ - StatLabel*statDisplayLabel=Component(CHARACTER_MENU,"Attribute "+std::string(ItemAttribute::Get(attribute).Name())+" Label"); - statDisplayLabel->SetStatChangeAmt(0); - } - MenuItemItemButton*equipButton=Component(CHARACTER_MENU,"Equip Slot "+slotNames[data.parentComponent->I(A::INDEXED_THEME)]); - equipButton->SetItem(comp->GetItem()); }else{ ERR("WARNING! Attempting to cast a button that isn't a RowItemDisplay!"); } @@ -169,17 +180,29 @@ void Menu::InitializeCharacterMenuWindow(){ for(const std::string&attribute:displayAttrs){ statsBeforeEquip.push_back(game->GetPlayer()->GetStat(attribute)); } + std::weak_ptrequippedItem=Inventory::GetEquip(slot); - Inventory::EquipItem(buttonItem,slot); - for(int counter=0;const std::string&attribute:displayAttrs){ - StatLabel*statDisplayLabel=Component(CHARACTER_MENU,"Attribute "+std::string(ItemAttribute::Get(attribute).Name())+" Label"); - int statChangeAmt=game->GetPlayer()->GetStat(attribute)-statsBeforeEquip[counter]; - statDisplayLabel->SetStatChangeAmt(statChangeAmt); - counter++; - } - Inventory::UnequipItem(slot); - if(!ISBLANK(equippedItem)){ - Inventory::EquipItem(equippedItem,slot); + std::weak_ptrotherItem; + if(slot==EquipSlot::RING1)otherItem=Inventory::GetEquip(EquipSlot::RING2); + else + if(slot==EquipSlot::RING2)otherItem=Inventory::GetEquip(EquipSlot::RING1); + if(OppositeRingSlotDoesNotMatchCurrentEquip(button)){ //If we find that the opposite ring slot is equipped to us, this would be an item swap or the exact same ring, therefore no stat calculations apply. + Inventory::EquipItem(buttonItem,slot); + for(int counter=0;const std::string&attribute:displayAttrs){ + StatLabel*statDisplayLabel=Component(CHARACTER_MENU,"Attribute "+std::string(ItemAttribute::Get(attribute).Name())+" Label"); + int statChangeAmt=game->GetPlayer()->GetStat(attribute)-statsBeforeEquip[counter]; + statDisplayLabel->SetStatChangeAmt(statChangeAmt); + counter++; + } + Inventory::UnequipItem(slot); + if(!ISBLANK(equippedItem)){ + Inventory::EquipItem(equippedItem,slot); + } + if(!ISBLANK(otherItem)){ + if(slot==EquipSlot::RING1)Inventory::EquipItem(otherItem,EquipSlot::RING2); + else + if(slot==EquipSlot::RING2)Inventory::EquipItem(otherItem,EquipSlot::RING1); + } } }else{ ERR("WARNING! Attempting to cast a button that isn't a RowItemDisplay!"); @@ -216,12 +239,17 @@ void Menu::InitializeCharacterMenuWindow(){ equipmentWindowOpened=true; return true; },[](MenuFuncData data){//On Mouse Hover - if(Component(data.component->parentMenu,"Item Equip Description")->GetLabel()!=""){ + EquipSlot slot=DYNAMIC_CAST(data.component)->GetSlot(); + const std::weak_ptrequip=Inventory::GetEquip(slot); + if(!ISBLANK(equip)){ Component(data.component->parentMenu,"Character Rotating Display")->Enable(false); } return true; },[](MenuFuncData data){//On Mouse Out - if(Component(data.component->parentMenu,"Item Equip Description")->GetLabel()!=""&&!equipmentWindowOpened){ + if(!equipmentWindowOpened){ + Component(data.component->parentMenu,"Item Equip Description")->SetLabel(""); + Component(data.component->parentMenu,"Item Equip Name")->Enable(false); + Component(data.component->parentMenu,"Item Equip Description")->Enable(false); Component(data.component->parentMenu,"Character Rotating Display")->Enable(true); } return true; @@ -248,9 +276,9 @@ void Menu::InitializeCharacterMenuWindow(){ characterMenuWindow->ADD("Back button",MenuComponent)({{windowSize.x/2-64,windowSize.y},{128,12}},"Back",[](MenuFuncData data){Menu::stack.pop_back();return true;})END; - auto itemNameDisplay=characterMenuWindow->ADD("Item Name",MenuLabel)({{0,28},{120,12}},"",1,ComponentAttr::BACKGROUND|ComponentAttr::LEFT_ALIGN|ComponentAttr::OUTLINE|ComponentAttr::SHADOW)END; + auto itemNameDisplay=characterMenuWindow->ADD("Item Name",MenuLabel)({{0,28},{120,12}},"",1,ComponentAttr::BACKGROUND|ComponentAttr::LEFT_ALIGN|ComponentAttr::OUTLINE|ComponentAttr::SHADOW|ComponentAttr::FIT_TO_LABEL)END; auto itemDescriptionDisplay=characterMenuWindow->ADD("Item Description",MenuLabel)({{0,40},{120,windowSize.y-49}},"",1,ComponentAttr::BACKGROUND|ComponentAttr::LEFT_ALIGN|ComponentAttr::OUTLINE|ComponentAttr::SHADOW)END; - auto itemEquipNameDisplay=characterMenuWindow->ADD("Item Equip Name",MenuLabel)({{123,28},{120,12}},"",1,ComponentAttr::BACKGROUND|ComponentAttr::LEFT_ALIGN|ComponentAttr::OUTLINE|ComponentAttr::SHADOW)END; + auto itemEquipNameDisplay=characterMenuWindow->ADD("Item Equip Name",MenuLabel)({{123,28},{120,12}},"",1,ComponentAttr::BACKGROUND|ComponentAttr::LEFT_ALIGN|ComponentAttr::OUTLINE|ComponentAttr::SHADOW|ComponentAttr::FIT_TO_LABEL)END; auto itemEquipDescriptionDisplay=characterMenuWindow->ADD("Item Equip Description",MenuLabel)({{123,40},{120,windowSize.y-49}},"",1,ComponentAttr::BACKGROUND|ComponentAttr::LEFT_ALIGN|ComponentAttr::OUTLINE|ComponentAttr::SHADOW)END; itemNameDisplay->Enable(false); diff --git a/Crawler/CharacterRotatingDisplay.h b/Adventures in Lestoria/CharacterRotatingDisplay.h similarity index 95% rename from Crawler/CharacterRotatingDisplay.h rename to Adventures in Lestoria/CharacterRotatingDisplay.h index b78aeed1..9146d016 100644 --- a/Crawler/CharacterRotatingDisplay.h +++ b/Adventures in Lestoria/CharacterRotatingDisplay.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #pragma once #include "MenuComponent.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" INCLUDE_game @@ -55,7 +55,7 @@ public: this->icon=icon; } protected: - virtual inline void Update(Crawler*game)override{ + virtual inline void Update(AiL*game)override{ MenuComponent::Update(game); timer+=game->GetElapsedTime(); if(timer>=2*PI){ diff --git a/Crawler/ChargedArrow.cpp b/Adventures in Lestoria/ChargedArrow.cpp similarity index 96% rename from Crawler/ChargedArrow.cpp rename to Adventures in Lestoria/ChargedArrow.cpp index 909589b8..3cb867e3 100644 --- a/Crawler/ChargedArrow.cpp +++ b/Adventures in Lestoria/ChargedArrow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "BulletTypes.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "util.h" #include "olcUTIL_Geometry2D.h" diff --git a/Crawler/Class.h b/Adventures in Lestoria/Class.h similarity index 97% rename from Crawler/Class.h rename to Adventures in Lestoria/Class.h index 2e4a4a25..6a5c4087 100644 --- a/Crawler/Class.h +++ b/Adventures in Lestoria/Class.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/ClassDiagram2.cd b/Adventures in Lestoria/ClassDiagram2.cd similarity index 99% rename from Crawler/ClassDiagram2.cd rename to Adventures in Lestoria/ClassDiagram2.cd index 37e947b4..89f92d57 100644 --- a/Crawler/ClassDiagram2.cd +++ b/Adventures in Lestoria/ClassDiagram2.cd @@ -4,7 +4,7 @@ OihgwhJkUjgrCYAAVgEdFoQkBECSBhEDncMJIEmEYAg= - Crawler.h + AdventuresInLestoria.h @@ -548,7 +548,7 @@ AAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA= - Crawler.h + AdventuresInLestoria.h diff --git a/Crawler/ClassDiagram2.png b/Adventures in Lestoria/ClassDiagram2.png similarity index 100% rename from Crawler/ClassDiagram2.png rename to Adventures in Lestoria/ClassDiagram2.png diff --git a/Crawler/ClassInfo.h b/Adventures in Lestoria/ClassInfo.h similarity index 98% rename from Crawler/ClassInfo.h rename to Adventures in Lestoria/ClassInfo.h index d140161c..2773d060 100644 --- a/Crawler/ClassInfo.h +++ b/Adventures in Lestoria/ClassInfo.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/ClassSelectionWindow.cpp b/Adventures in Lestoria/ClassSelectionWindow.cpp similarity index 98% rename from Crawler/ClassSelectionWindow.cpp rename to Adventures in Lestoria/ClassSelectionWindow.cpp index 93a08238..d7d4fdf4 100644 --- a/Crawler/ClassSelectionWindow.cpp +++ b/Adventures in Lestoria/ClassSelectionWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -35,7 +35,7 @@ Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "Menu.h" #include "MenuLabel.h" diff --git a/Crawler/ConnectionPoint.cpp b/Adventures in Lestoria/ConnectionPoint.cpp similarity index 97% rename from Crawler/ConnectionPoint.cpp rename to Adventures in Lestoria/ConnectionPoint.cpp index 869ad004..bf81353e 100644 --- a/Crawler/ConnectionPoint.cpp +++ b/Adventures in Lestoria/ConnectionPoint.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/ConnectionPoint.h b/Adventures in Lestoria/ConnectionPoint.h similarity index 96% rename from Crawler/ConnectionPoint.h rename to Adventures in Lestoria/ConnectionPoint.h index 5cda4da5..c668b497 100644 --- a/Crawler/ConnectionPoint.h +++ b/Adventures in Lestoria/ConnectionPoint.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -39,6 +39,7 @@ All rights reserved. #include "olcUTIL_Geometry2D.h" struct ConnectionPoint{ + friend class State_OverworldMap; geom2d::rectrect; std::string type; std::string name; diff --git a/Crawler/ConsumableCraftItemWindow.cpp b/Adventures in Lestoria/ConsumableCraftItemWindow.cpp similarity index 99% rename from Crawler/ConsumableCraftItemWindow.cpp rename to Adventures in Lestoria/ConsumableCraftItemWindow.cpp index addfa138..0a25ad48 100644 --- a/Crawler/ConsumableCraftItemWindow.cpp +++ b/Adventures in Lestoria/ConsumableCraftItemWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/ConsumableCraftingWindow.cpp b/Adventures in Lestoria/ConsumableCraftingWindow.cpp similarity index 97% rename from Crawler/ConsumableCraftingWindow.cpp rename to Adventures in Lestoria/ConsumableCraftingWindow.cpp index 456e7993..5f4052fe 100644 --- a/Crawler/ConsumableCraftingWindow.cpp +++ b/Adventures in Lestoria/ConsumableCraftingWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Menu.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "MenuItemItemButton.h" #include "PlayerMoneyLabel.h" #include "RowInventoryScrollableWindowComponent.h" @@ -123,7 +123,7 @@ void Menu::InitializeConsumableCraftingWindow(){ auto moneyIcon=consumableCraftingWindow->ADD("Money Icon",MenuIconButton)({moneyIconPos,{24,24}},GFX["money.png"].Decal(),DO_NOTHING,IconButtonAttr::NOT_SELECTABLE|IconButtonAttr::NO_OUTLINE|IconButtonAttr::NO_BACKGROUND)END; std::string moneyText=std::to_string(game->GetPlayer()->GetMoney()); vf2d moneyTextSize=game->GetTextSizeProp(moneyText)*2; - auto moneyDisplay=consumableCraftingWindow->ADD("Money Label",PlayerMoneyLabel)({moneyIconPos-vf2d{2+moneyTextSize.x,-2},moneyTextSize},2,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN)END; + auto moneyDisplay=consumableCraftingWindow->ADD("Money Label",PlayerMoneyLabel)({moneyIconPos-vf2d{2+moneyTextSize.x,-2},moneyTextSize},2,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN|ComponentAttr::FIT_TO_LABEL)END; moneyDisplay->SetRightAlignment(true); Player::AddMoneyListener(moneyDisplay); #pragma endregion diff --git a/Crawler/CraftItemWindow.cpp b/Adventures in Lestoria/CraftItemWindow.cpp similarity index 98% rename from Crawler/CraftItemWindow.cpp rename to Adventures in Lestoria/CraftItemWindow.cpp index b12d1c57..b17d3e2d 100644 --- a/Crawler/CraftItemWindow.cpp +++ b/Adventures in Lestoria/CraftItemWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/CraftingRequirement.cpp b/Adventures in Lestoria/CraftingRequirement.cpp similarity index 97% rename from Crawler/CraftingRequirement.cpp rename to Adventures in Lestoria/CraftingRequirement.cpp index 02d08dc8..bc223cbf 100644 --- a/Crawler/CraftingRequirement.cpp +++ b/Adventures in Lestoria/CraftingRequirement.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/CraftingRequirement.h b/Adventures in Lestoria/CraftingRequirement.h similarity index 97% rename from Crawler/CraftingRequirement.h rename to Adventures in Lestoria/CraftingRequirement.h index 9927bfa7..b71e2103 100644 --- a/Crawler/CraftingRequirement.h +++ b/Adventures in Lestoria/CraftingRequirement.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Crawler_Slime_King_Encounter.txt b/Adventures in Lestoria/Crawler_Slime_King_Encounter.txt similarity index 100% rename from Crawler/Crawler_Slime_King_Encounter.txt rename to Adventures in Lestoria/Crawler_Slime_King_Encounter.txt diff --git a/Crawler/Crawler_System_Overview.txt b/Adventures in Lestoria/Crawler_System_Overview.txt similarity index 100% rename from Crawler/Crawler_System_Overview.txt rename to Adventures in Lestoria/Crawler_System_Overview.txt diff --git a/Crawler/DEFINES.h b/Adventures in Lestoria/DEFINES.h similarity index 97% rename from Crawler/DEFINES.h rename to Adventures in Lestoria/DEFINES.h index b4ad64f1..907a84fd 100644 --- a/Crawler/DEFINES.h +++ b/Adventures in Lestoria/DEFINES.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #define INCLUDE_MONSTER_LIST extern std::vectorMONSTER_LIST; #define INCLUDE_SPAWNER_LIST extern std::vectorSPAWNER_LIST; #define INCLUDE_DAMAGENUMBER_LIST extern std::vector>DAMAGENUMBER_LIST; -#define INCLUDE_game extern Crawler*game; +#define INCLUDE_game extern AiL*game; #define INCLUDE_MONSTER_DATA extern std::mapMONSTER_DATA; #define INCLUDE_BULLET_LIST extern std::vector>BULLET_LIST; #define INCLUDE_EMITTER_LIST extern std::vector>EMITTER_LIST; diff --git a/Crawler/DamageNumber.cpp b/Adventures in Lestoria/DamageNumber.cpp similarity index 97% rename from Crawler/DamageNumber.cpp rename to Adventures in Lestoria/DamageNumber.cpp index 6d024544..bba0b4b1 100644 --- a/Crawler/DamageNumber.cpp +++ b/Adventures in Lestoria/DamageNumber.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/DamageNumber.h b/Adventures in Lestoria/DamageNumber.h similarity index 97% rename from Crawler/DamageNumber.h rename to Adventures in Lestoria/DamageNumber.h index 7748bd7a..098cad90 100644 --- a/Crawler/DamageNumber.h +++ b/Adventures in Lestoria/DamageNumber.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Effect.cpp b/Adventures in Lestoria/Effect.cpp similarity index 97% rename from Crawler/Effect.cpp rename to Adventures in Lestoria/Effect.cpp index 4945f610..ccd77fd3 100644 --- a/Crawler/Effect.cpp +++ b/Adventures in Lestoria/Effect.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "DEFINES.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "safemap.h" INCLUDE_ANIMATION_DATA diff --git a/Crawler/Effect.h b/Adventures in Lestoria/Effect.h similarity index 97% rename from Crawler/Effect.h rename to Adventures in Lestoria/Effect.h index d2ae5ad4..baee10a3 100644 --- a/Crawler/Effect.h +++ b/Adventures in Lestoria/Effect.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -41,7 +41,7 @@ All rights reserved. #include "olcUTIL_Animate2D.h" struct Effect{ - friend class Crawler; + friend class AiL; vf2d pos={0,0}; float lifetime=0; float fadeout=0; diff --git a/Crawler/Emitter.cpp b/Adventures in Lestoria/Emitter.cpp similarity index 97% rename from Crawler/Emitter.cpp rename to Adventures in Lestoria/Emitter.cpp index 285438e8..87cf0fd0 100644 --- a/Crawler/Emitter.cpp +++ b/Adventures in Lestoria/Emitter.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Emitter.h b/Adventures in Lestoria/Emitter.h similarity index 96% rename from Crawler/Emitter.h rename to Adventures in Lestoria/Emitter.h index 7e1543dc..3f097476 100644 --- a/Crawler/Emitter.h +++ b/Adventures in Lestoria/Emitter.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -39,7 +39,7 @@ All rights reserved. #include "olcPixelGameEngine.h" struct Emitter{ - friend class Crawler; + friend class AiL; float frequency; float timer; float lastEmit=0; diff --git a/Crawler/EncountersSpawnListScrollableWindowComponent.h b/Adventures in Lestoria/EncountersSpawnListScrollableWindowComponent.h similarity index 97% rename from Crawler/EncountersSpawnListScrollableWindowComponent.h rename to Adventures in Lestoria/EncountersSpawnListScrollableWindowComponent.h index 0e028d94..face93f4 100644 --- a/Crawler/EncountersSpawnListScrollableWindowComponent.h +++ b/Adventures in Lestoria/EncountersSpawnListScrollableWindowComponent.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -39,7 +39,7 @@ All rights reserved. #include "State_OverworldMap.h" #include "Menu.h" #include "SpawnEncounterLabel.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "ScrollableWindowComponent.h" #include "DEFINES.h" #include "Error.h" diff --git a/Crawler/EnergyBolt.cpp b/Adventures in Lestoria/EnergyBolt.cpp similarity index 97% rename from Crawler/EnergyBolt.cpp rename to Adventures in Lestoria/EnergyBolt.cpp index ead5dcc3..8f5906d3 100644 --- a/Crawler/EnergyBolt.cpp +++ b/Adventures in Lestoria/EnergyBolt.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "BulletTypes.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "util.h" diff --git a/Crawler/EnhancementStatsLabel.h b/Adventures in Lestoria/EnhancementStatsLabel.h similarity index 99% rename from Crawler/EnhancementStatsLabel.h rename to Adventures in Lestoria/EnhancementStatsLabel.h index b9c2b2d8..4a0c6197 100644 --- a/Crawler/EnhancementStatsLabel.h +++ b/Adventures in Lestoria/EnhancementStatsLabel.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/EquipSlotButton.h b/Adventures in Lestoria/EquipSlotButton.h similarity index 92% rename from Crawler/EquipSlotButton.h rename to Adventures in Lestoria/EquipSlotButton.h index c65d8563..3f9359e7 100644 --- a/Crawler/EquipSlotButton.h +++ b/Adventures in Lestoria/EquipSlotButton.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #pragma once #include "MenuItemItemButton.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" INCLUDE_game INCLUDE_ITEM_DATA @@ -53,10 +53,13 @@ public: const std::weak_ptrequip=Inventory::GetEquip(slot); if(!ISBLANK(equip)){ icon=const_cast(equip.lock()->Decal()); - SetItem(equip); + itemRef=equip; }else{ icon=nullptr; - SetItem(Item::BLANK); + itemRef=Item::BLANK; } } + inline const EquipSlot GetSlot()const{ + return slot; + } }; \ No newline at end of file diff --git a/Crawler/Error.h b/Adventures in Lestoria/Error.h similarity index 98% rename from Crawler/Error.h rename to Adventures in Lestoria/Error.h index a5cd24a2..66e8124c 100644 --- a/Crawler/Error.h +++ b/Adventures in Lestoria/Error.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/FallingDebris.h b/Adventures in Lestoria/FallingDebris.h similarity index 97% rename from Crawler/FallingDebris.h rename to Adventures in Lestoria/FallingDebris.h index bf5fccf8..d715fe98 100644 --- a/Crawler/FallingDebris.h +++ b/Adventures in Lestoria/FallingDebris.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/FireBolt.cpp b/Adventures in Lestoria/FireBolt.cpp similarity index 98% rename from Crawler/FireBolt.cpp rename to Adventures in Lestoria/FireBolt.cpp index e925f19c..e6c23e0a 100644 --- a/Crawler/FireBolt.cpp +++ b/Adventures in Lestoria/FireBolt.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "BulletTypes.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "util.h" diff --git a/Crawler/FunctionPriming.h b/Adventures in Lestoria/FunctionPriming.h similarity index 98% rename from Crawler/FunctionPriming.h rename to Adventures in Lestoria/FunctionPriming.h index 1c90ecba..ecd653b5 100644 --- a/Crawler/FunctionPriming.h +++ b/Adventures in Lestoria/FunctionPriming.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/GameState.cpp b/Adventures in Lestoria/GameState.cpp similarity index 96% rename from Crawler/GameState.cpp rename to Adventures in Lestoria/GameState.cpp index bfb55f3a..d12f9512 100644 --- a/Crawler/GameState.cpp +++ b/Adventures in Lestoria/GameState.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -35,7 +35,7 @@ Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "GameState.h" #include "State_GameRun.h" #include "State_OverworldMap.h" diff --git a/Crawler/GameState.h b/Adventures in Lestoria/GameState.h similarity index 93% rename from Crawler/GameState.h rename to Adventures in Lestoria/GameState.h index f35a9fe8..63af0cd0 100644 --- a/Crawler/GameState.h +++ b/Adventures in Lestoria/GameState.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #include #include "Error.h" -class Crawler; +class AiL; namespace States{ enum State{ @@ -53,7 +53,7 @@ namespace States{ }; class GameState{ - friend class Crawler; + friend class AiL; private: static void _ChangeState(States::State newState); public: @@ -62,7 +62,7 @@ public: virtual ~GameState(); static void Initialize(); virtual void OnStateChange(GameState*prevState)=0; - virtual void OnUserUpdate(Crawler*game)=0; - virtual void Draw(Crawler*game)=0; + virtual void OnUserUpdate(AiL*game)=0; + virtual void Draw(AiL*game)=0; static void ChangeState(States::State newState,float fadeOutDuration=0); }; \ No newline at end of file diff --git a/Crawler/InitialConcept.txt b/Adventures in Lestoria/InitialConcept.txt similarity index 100% rename from Crawler/InitialConcept.txt rename to Adventures in Lestoria/InitialConcept.txt diff --git a/Crawler/InventoryConsumableWindow.cpp b/Adventures in Lestoria/InventoryConsumableWindow.cpp similarity index 98% rename from Crawler/InventoryConsumableWindow.cpp rename to Adventures in Lestoria/InventoryConsumableWindow.cpp index 70bb1571..88750bc0 100644 --- a/Crawler/InventoryConsumableWindow.cpp +++ b/Adventures in Lestoria/InventoryConsumableWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -35,7 +35,7 @@ Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "olcPixelGameEngine.h" #include "safemap.h" #include "Item.h" diff --git a/Crawler/InventoryCreator.cpp b/Adventures in Lestoria/InventoryCreator.cpp similarity index 99% rename from Crawler/InventoryCreator.cpp rename to Adventures in Lestoria/InventoryCreator.cpp index cbdef3f7..8c7e27c7 100644 --- a/Crawler/InventoryCreator.cpp +++ b/Adventures in Lestoria/InventoryCreator.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/InventoryCreator.h b/Adventures in Lestoria/InventoryCreator.h similarity index 97% rename from Crawler/InventoryCreator.h rename to Adventures in Lestoria/InventoryCreator.h index 8b7844d8..d1090671 100644 --- a/Crawler/InventoryCreator.h +++ b/Adventures in Lestoria/InventoryCreator.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/InventoryScrollableWindowComponent.h b/Adventures in Lestoria/InventoryScrollableWindowComponent.h similarity index 97% rename from Crawler/InventoryScrollableWindowComponent.h rename to Adventures in Lestoria/InventoryScrollableWindowComponent.h index c7f26019..71777c7a 100644 --- a/Crawler/InventoryScrollableWindowComponent.h +++ b/Adventures in Lestoria/InventoryScrollableWindowComponent.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -39,7 +39,7 @@ All rights reserved. #include "Menu.h" #include "MenuComponent.h" #include "MenuItemButton.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "ScrollableWindowComponent.h" #include "InventoryCreator.h" @@ -77,7 +77,7 @@ public: inline InventoryScrollableWindowComponent(geom2d::rectrect,std::string itemNameLabelName,std::string itemDescriptionLabelName,std::functioninventoryButtonClickAction,std::functioninventoryButtonHoverAction,std::functioninventoryButtonMouseOutAction,const InventoryCreator&creator,InventoryWindowOptions options={.padding=8,.size={24,24}},bool inventoryButtonsActive=true,ComponentAttr attributes=ComponentAttr::BACKGROUND|ComponentAttr::OUTLINE) :ScrollableWindowComponent(rect,attributes),inventoryButtonHoverAction(inventoryButtonHoverAction),inventoryButtonMouseOutAction(inventoryButtonMouseOutAction),itemNameLabelName(itemNameLabelName),itemDescriptionLabelName(itemDescriptionLabelName), options(options),inventoryButtonClickAction(inventoryButtonClickAction),inventoryButtonsActive(inventoryButtonsActive),addButtonOnSlotUpdate(creator.AddButtonOnSlotUpdate),onInventorySlotsUpdate(creator.InventorySlotsUpdate){} - virtual inline void Update(Crawler*game)override{ + virtual inline void Update(AiL*game)override{ ScrollableWindowComponent::Update(game); bool noneHovered=true; for(MenuComponent*component:components){ diff --git a/Crawler/InventoryWindow.cpp b/Adventures in Lestoria/InventoryWindow.cpp similarity index 98% rename from Crawler/InventoryWindow.cpp rename to Adventures in Lestoria/InventoryWindow.cpp index 0fc14499..0e2fd053 100644 --- a/Crawler/InventoryWindow.cpp +++ b/Adventures in Lestoria/InventoryWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -35,7 +35,7 @@ Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "Menu.h" #include "MenuLabel.h" @@ -127,7 +127,7 @@ void Menu::InitializeInventoryWindow(){ auto moneyIcon=inventoryWindow->ADD("Money Icon",MenuIconButton)({moneyIconPos,{24,24}},GFX["money.png"].Decal(),DO_NOTHING,IconButtonAttr::NOT_SELECTABLE|IconButtonAttr::NO_OUTLINE|IconButtonAttr::NO_BACKGROUND)END; std::string moneyText=std::to_string(game->GetPlayer()->GetMoney()); vf2d moneyTextSize=game->GetTextSizeProp(moneyText)*2; - auto moneyDisplay=inventoryWindow->ADD("Money Label",PlayerMoneyLabel)({moneyIconPos-vf2d{2+moneyTextSize.x,-2},moneyTextSize},2,SHADOW|LEFT_ALIGN)END; + auto moneyDisplay=inventoryWindow->ADD("Money Label",PlayerMoneyLabel)({moneyIconPos-vf2d{2+moneyTextSize.x,-2},moneyTextSize},2,SHADOW|LEFT_ALIGN|FIT_TO_LABEL)END; moneyDisplay->SetRightAlignment(true); Player::AddMoneyListener(moneyDisplay); #pragma endregion diff --git a/Crawler/Item.cpp b/Adventures in Lestoria/Item.cpp similarity index 87% rename from Crawler/Item.cpp rename to Adventures in Lestoria/Item.cpp index 709838f3..21b197c0 100644 --- a/Crawler/Item.cpp +++ b/Adventures in Lestoria/Item.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,11 +38,12 @@ All rights reserved. #include "Item.h" #include "safemap.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "Menu.h" #include "Ability.h" #include "AttributableStat.h" #include +#include "util.h" INCLUDE_game INCLUDE_DATA @@ -105,6 +106,8 @@ void ItemInfo::InitializeItems(){ std::vectorstatValueList; uint32_t sellValue=0; uint32_t buyValue=0; + Stats minStats; + Stats maxStats; bool useDuringCast=false; for(auto&[itemKey,itemValue]:data[key].GetKeys()){ std::string keyName=itemKey; @@ -121,7 +124,7 @@ void ItemInfo::InitializeItems(){ castTime=float(data[key][keyName].GetReal()); }else if(keyName=="Cooldown Time"){ - castTime=float(data[key][keyName].GetReal()); + cooldownTime=float(data[key][keyName].GetReal()); }else if(keyName=="Slot"){ for(auto&val:data[key][keyName].GetValues()){ @@ -129,7 +132,7 @@ void ItemInfo::InitializeItems(){ } }else if(keyName=="StatValues"){ - for(int i=0;i0){ + if(data[key].HasProperty("StatValues[0]")){ //This means this has enhancement levels. EnhancementInfo enhancementStats; for(int enhancementLevel=0;enhancementLevel<=10;enhancementLevel++){ uint8_t availableChapter=1; datafile&dat=data[key]["StatValues["+std::to_string(enhancementLevel)+"]"]; - int attrIndex=0; - for(ItemAttribute&attr:statValueList){ + for(int attrIndex=0;ItemAttribute&attr:statValueList){ enhancementStats.SetAttribute(enhancementLevel,attr,dat.GetReal(attrIndex)); attrIndex++; } @@ -191,6 +193,22 @@ void ItemInfo::InitializeItems(){ it.enhancement.SetAttribute(1,ItemAttribute::Get("Attack"),0.f); it.enhancement.SetCraftingRequirements(1,itemsRequired,goldCost,availableChapter); } + + if(data[key].HasProperty("MinStats")){ + if(data[key]["MinStats"].GetValueCount()!=statValueList.size())ERR(std::format("MinStats attribute count does not match statValueList attribute count {}!={}",data[key]["MinStats"].GetValueCount(),statValueList.size())); + for(int attrCount=0;ItemAttribute&attr:statValueList){ + minStats.A(attr)=data[key]["MinStats"].GetReal(attrCount); + attrCount++; + } + } + if(data[key].HasProperty("MaxStats")){ + if(data[key]["MaxStats"].GetValueCount()!=statValueList.size())ERR(std::format("MaxStats attribute count does not match statValueList attribute count {}!={}",data[key]["MaxStats"].GetValueCount(),statValueList.size())); + for(int attrCount=0;ItemAttribute&attr:statValueList){ + maxStats.A(attr)=data[key]["MaxStats"].GetReal(attrCount); + attrCount++; + } + } + if(data[key].HasProperty("MinStats")^data[key].HasProperty("MaxStats"))ERR("Only one of MinStats/MaxStats was provided! Both are required!"); if(scriptName!=""){ if(scriptName=="RestoreDuringCast"){ @@ -228,6 +246,8 @@ void ItemInfo::InitializeItems(){ props.customProps=&data[key]; } it.useFunc=scriptName; + it.minStats=minStats; + it.maxStats=maxStats; #pragma region Equipment Category Verification Tests int equipmentCategories=0; @@ -287,24 +307,24 @@ const uint32_t ItemProps::PropCount(const std::string&prop)const{ void ItemInfo::InitializeScripts(){ - ITEM_SCRIPTS["Restore"]=[](Crawler*game,ItemProps props){ - auto ParseItemScriptData=[&](const std::string&propName,std::functionaction){ + ITEM_SCRIPTS["Restore"]=[](AiL*game,ItemProps props){ + auto ParseItemScriptData=[&](const std::string&propName,std::functionaction){ int restoreAmt=props.GetIntProp(propName); action(game,restoreAmt); if(restoreAmt>0&&props.PropCount(propName)==3){ game->GetPlayer()->AddBuff(RESTORATION,props.GetFloatProp(propName,2),restoreAmt,props.GetFloatProp(propName,1),action); } }; - ParseItemScriptData("HP Restore",[&](Crawler*game,int restoreAmt){ + ParseItemScriptData("HP Restore",[&](AiL*game,int restoreAmt){ game->GetPlayer()->Heal(restoreAmt); }); - ParseItemScriptData("HP % Restore",[&](Crawler*game,int restoreAmt){ + ParseItemScriptData("HP % Restore",[&](AiL*game,int restoreAmt){ game->GetPlayer()->Heal(int(game->GetPlayer()->GetMaxHealth()*restoreAmt/100.0f)); }); - ParseItemScriptData("MP Restore",[&](Crawler*game,int restoreAmt){ + ParseItemScriptData("MP Restore",[&](AiL*game,int restoreAmt){ game->GetPlayer()->RestoreMana(restoreAmt); }); - ParseItemScriptData("MP % Restore",[&](Crawler*game,int restoreAmt){ + ParseItemScriptData("MP % Restore",[&](AiL*game,int restoreAmt){ game->GetPlayer()->RestoreMana(int(game->GetPlayer()->GetMaxMana()*props.GetIntProp("MP % Restore")/100.f)); }); return true; @@ -316,7 +336,7 @@ void ItemInfo::InitializeScripts(){ } } - ITEM_SCRIPTS["Buff"]=[](Crawler*game,ItemProps props){ + ITEM_SCRIPTS["Buff"]=[](AiL*game,ItemProps props){ for(auto&[key,value]:ItemAttribute::attributes){ float intensity=props.GetFloatProp(key,0); if(ItemAttribute::Get(key).DisplayAsPercent())intensity/=100; @@ -324,24 +344,24 @@ void ItemInfo::InitializeScripts(){ } return true; }; - ITEM_SCRIPTS["RestoreDuringCast"]=[&](Crawler*game,ItemProps props){ - auto ParseItemScriptData=[&](const std::string&propName,std::functionaction){ + ITEM_SCRIPTS["RestoreDuringCast"]=[&](AiL*game,ItemProps props){ + auto ParseItemScriptData=[&](const std::string&propName,std::functionaction){ int restoreAmt=props.GetIntProp(propName); action(game,restoreAmt); if(restoreAmt>0&&props.PropCount(propName)==3){ game->GetPlayer()->AddBuff(RESTORATION_DURING_CAST,props.GetFloatProp(propName,2),restoreAmt,props.GetFloatProp(propName,1),action); } }; - ParseItemScriptData("HP Restore",[&](Crawler*game,int restoreAmt){ + ParseItemScriptData("HP Restore",[&](AiL*game,int restoreAmt){ game->GetPlayer()->Heal(restoreAmt); }); - ParseItemScriptData("HP % Restore",[&](Crawler*game,int restoreAmt){ + ParseItemScriptData("HP % Restore",[&](AiL*game,int restoreAmt){ game->GetPlayer()->Heal(int(game->GetPlayer()->GetMaxHealth()*restoreAmt/100.0f)); }); - ParseItemScriptData("MP Restore",[&](Crawler*game,int restoreAmt){ + ParseItemScriptData("MP Restore",[&](AiL*game,int restoreAmt){ game->GetPlayer()->RestoreMana(restoreAmt); }); - ParseItemScriptData("MP % Restore",[&](Crawler*game,int restoreAmt){ + ParseItemScriptData("MP % Restore",[&](AiL*game,int restoreAmt){ game->GetPlayer()->RestoreMana(int(game->GetPlayer()->GetMaxMana()*props.GetIntProp("MP % Restore")/100.f)); }); return true; @@ -357,30 +377,38 @@ Item::Item() Item::Item(uint32_t amt,IT item,uint8_t enhancementLevel) :amt(amt),it(&ITEM_DATA.at(item)),enhancementLevel(enhancementLevel){} -void Inventory::AddItem(IT it,uint32_t amt,bool monsterDrop){ +std::weak_ptrInventory::AddItem(IT it,uint32_t amt,bool monsterDrop){ if(!ITEM_DATA.count(it))ERR("Item "<itemPtr; + if(ITEM_DATA[it].IsEquippable()){ //Do not stack equips! for(uint32_t i=0;i(amt,it)})).second); + std::shared_ptrnewItem=(*_inventory.insert({it,std::make_shared(1,it)})).second; + newItem->RandomizeStats(); + InsertIntoSortedInv(newItem); + itemPtr=newItem; } goto SkipAddingStackableItem; } else //There are two places to manipulate items in (Both the sorted inventory and the actual inventory) if(!_inventory.count(it)){ - InsertIntoSortedInv((*_inventory.insert({it,std::make_shared(amt,it)})).second); + std::shared_ptrnewItem=(*_inventory.insert({it,std::make_shared(amt,it)})).second; + InsertIntoSortedInv(newItem); + itemPtr=newItem; }else{ auto inventory=_inventory.equal_range(it); - std::accumulate(inventory.first,inventory.second,0,[&](int counter,std::pair>item){ + if(std::accumulate(inventory.first,inventory.second,0, + [&](int counter,std::pair>item){ (*item.second).amt+=amt; - if(counter>=1)ERR("WARNING! We should not have more than 1 instance of a stackable item!"); - return counter+1; - }); + itemPtr=item.second; + return counter+1;})>1)ERR("WARNING! We should not have more than 1 instance of a stackable item!"); } SkipAddingStackableItem: InsertIntoStageInventoryCategory(it,amt,monsterDrop); + return itemPtr; } std::vector>Inventory::CopyItem(IT it){ @@ -422,6 +450,7 @@ bool Inventory::UseItem(IT it,uint32_t amt){ //Returns true if the item has been consumed completely and there are 0 remaining of that type in our inventory. bool Inventory::RemoveItem(std::weak_ptritemRef,ITCategory inventory,uint32_t amt){ + if(amt==0)ERR("WARNING! Trying to remove zero of an item makes no sense."); #pragma region Calculate Inventory to Manipulate std::vector>&inv=sortedInv.at(inventory); bool eraseFromLootWindow=false; @@ -446,7 +475,7 @@ bool Inventory::RemoveItem(std::weak_ptritemRef,ITCategory inventory,uint3 } //There are two places to manipulate items in (Both the sorted inventory and the actual inventory) - if (!itemAmt)return false; + if(!itemAmt)return false; if (amt>=itemAmt){ inv.erase(inv.begin()+count); //Clears it from the detected sorted inventory as well! @@ -458,8 +487,19 @@ bool Inventory::RemoveItem(std::weak_ptritemRef,ITCategory inventory,uint3 Menu::InventorySlotsUpdated(inventory); return true; }else{ - if(!eraseFromLootWindow){ - itemRef.lock()->amt-=amt; + if(itemRef.lock()->IsEquippable()){ //Since equipment doesn't stack, if we have more than one piece we have to still remove that piece. + bool found=false; + size_t erased=std::erase_if(_inventory,[&](const std::pair>data){ + if(!found&&data.second==itemRef){ + found=true; + return true; + } + return false; + }); + if(erased!=1)ERR(std::format("Did not erase a single element, instead erased {} elements.",erased)); + inv.erase(inv.begin()+count); //Clears it from the detected sorted inventory as well! + Menu::InventorySlotsUpdated(inventory); + return true; }else{ itemRef.lock()->amt-=amt; //Don't touch the sorted inventory unless this is monster loot or stage loot because there's only "1" of this item in the entry list. } @@ -543,6 +583,10 @@ const bool Item::IsEquippable()const{ const std::string Item::Description(CompactText compact)const{ std::string description=it->Description(); if(IsEquippable()){ + if(HasRandomizedStats()){ + description+='\n'; + description+=randomizedStats.GetStatsString(); + } description+='\n'; description+=GetStats().GetStatsString(compact); if(ItemSet()){ @@ -627,11 +671,7 @@ const bool Item::IsBlank()const{ void Inventory::Clear(ITCategory itemCategory){ std::vector>itemList=get(itemCategory); //We have to make a copy here because RemoveItem() will modify the list provided by get() inline. for(std::shared_ptr&item:itemList){ - size_t itemQuantity=GetItemCount(item->ActualName());//Normally we want to clear all the items that are actually in our inventory...But... - if(itemCategory=="Monster Loot"||itemCategory=="Stage Loot"){//These do not affect the actual inventory, we just clear the lists. - itemQuantity=item->Amt(); - } - RemoveItem(item,itemCategory,uint32_t(itemQuantity)); + RemoveItem(item,itemCategory,item->Amt()); } } @@ -769,7 +809,7 @@ void ItemInfo::InitializeSets(){ } } -const Stats&ItemInfo::GetStats(int enhancementLevel)const{ +const Stats ItemInfo::GetStats(int enhancementLevel)const{ if(enhancement.size()<=enhancementLevel){ return {}; } @@ -893,7 +933,7 @@ void Item::SetAmt(uint32_t newAmt){ } const std::weak_ptrInventory::GetInventorySlot(ITCategory itemCategory,size_t slot){ - return GetItem(get(itemCategory).at(slot)->ActualName())[0]; + return get(itemCategory).at(slot); } bool Item::IsBlank(std::shared_ptritem){ @@ -993,13 +1033,13 @@ const bool EnhancementInfo::CanBeEnhanced()const{ const bool ItemInfo::IsWeapon()const{ - return slot==EquipSlot::WEAPON; + return slot&EquipSlot::WEAPON; } const bool ItemInfo::IsArmor()const{ return IsEquippable()&&!IsWeapon()&&!IsAccessory(); } const bool ItemInfo::IsAccessory()const{ - return slot==EquipSlot::RING1||slot==EquipSlot::RING2; + return slot&EquipSlot::RING1||slot&EquipSlot::RING2; } const bool Item::IsWeapon()const{ @@ -1026,4 +1066,34 @@ const bool Item::EnhancementIsPossible()const{ const uint8_t EnhancementInfo::AvailableChapter()const{ return availableChapter; +} + +const Stats&Item::RandomStats()const{ + return randomizedStats; +}; +void Item::RandomizeStats(){ + randomizedStats=it->RandomizeStats(); +}; + +const Stats ItemInfo::GetMinStats()const{ + return minStats; +} +const Stats ItemInfo::GetMaxStats()const{ + return maxStats; +} +Stats ItemInfo::RandomizeStats(){ + Stats randomRolls; + for(auto&[attr,minVal]:minStats){ + float diff=maxStats.A(attr)-minVal; + if(attr.ShowAsDecimal()){ + randomRolls.A(attr)=util::random(diff)+minVal; + }else{ + randomRolls.A(attr)=floor(util::random(diff+1)+minVal); //We must add 1 because we are going to floor the value to prevent the edges from having half as likely probability as all other numbers. + } + } + return randomRolls; +} + +const bool Item::HasRandomizedStats()const{ + return randomizedStats.size()>0; } \ No newline at end of file diff --git a/Crawler/Item.h b/Adventures in Lestoria/Item.h similarity index 92% rename from Crawler/Item.h rename to Adventures in Lestoria/Item.h index a4b0c6c4..d776b649 100644 --- a/Crawler/Item.h +++ b/Adventures in Lestoria/Item.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -48,14 +48,14 @@ All rights reserved. #include "CraftingRequirement.h" #include "FunctionPriming.h" -class Crawler; +class AiL; class ItemInfo; class ItemProps; using IT=std::string; using ITCategory=std::string; -using ItemScript=std::function; +using ItemScript=std::function; enum class EquipSlot{ HELMET= 0b0000'0001, @@ -102,7 +102,11 @@ public: auto end()const{ return attributes.end(); } + const size_t size()const{ + return attributes.size(); + } const std::string GetStatsString(CompactText compact=NON_COMPACT)const; + friend const bool operator==(const Stats&lhs,const Stats&rhs){return lhs.attributes==rhs.attributes;} }; class Stats; @@ -150,8 +154,9 @@ public: class Item{ friend class Inventory; - friend class Crawler; + friend class AiL; friend class Menu; + friend class SaveFile; friend void Merchant::PurchaseItem(IT item,uint32_t amt); friend void Merchant::SellItem(std::weak_ptr,uint32_t amt); private: @@ -159,10 +164,12 @@ private: uint32_t amt; uint8_t enhancementLevel; ItemInfo*it; + Stats randomizedStats; + void SetAmt(uint32_t newAmt); + static ItemEnhancementFunctionPrimingData enhanceFunctionPrimed; static int IsBlankStaticCallCounter; const bool _IsBlank()const; - static ItemEnhancementFunctionPrimingData enhanceFunctionPrimed; public: Item(); Item(uint32_t amt,IT item,uint8_t enhancementLevel=0); @@ -200,14 +207,17 @@ public: const uint32_t SellValue()const; const bool CanBeSold()const; const bool CanBePurchased()const; + const Stats&RandomStats()const; + void RandomizeStats(); + const bool HasRandomizedStats()const; const EnhancementInfo&GetEnhancementInfo()const; //Use ISBLANK macro instead!! This should not be called directly!! static bool IsBlank(std::shared_ptritem); //Use ISBLANK macro instead!! This should not be called directly!! static bool IsBlank(std::weak_ptritem); - friend const bool operator==(std::shared_ptrlhs,std::shared_ptrrhs){return lhs->it==rhs->it;}; + friend const bool operator==(std::shared_ptrlhs,std::shared_ptrrhs){return lhs->it==rhs->it&&lhs->randomizedStats==rhs->randomizedStats;}; friend const bool operator==(std::shared_ptrlhs,const IT&rhs){return lhs->ActualName()==rhs;}; - friend const bool operator==(std::weak_ptrlhs,std::weak_ptrrhs){return !lhs.expired()&&!rhs.expired()&&lhs.lock()->it==rhs.lock()->it;}; + friend const bool operator==(std::weak_ptrlhs,std::weak_ptrrhs){return !lhs.expired()&&!rhs.expired()&&lhs.lock()->it==rhs.lock()->it&&lhs.lock()->randomizedStats==rhs.lock()->randomizedStats;}; friend const bool operator==(std::weak_ptrlhs,const IT&rhs){return !lhs.expired()&&lhs.lock()->ActualName()==rhs;}; friend const bool operator==(const IT&lhs,std::weak_ptrrhs){return operator==(rhs,lhs);}; friend const bool operator==(const IT&lhs,std::shared_ptrrhs){return operator==(rhs,lhs);}; @@ -216,10 +226,11 @@ public: class Inventory{ friend class ItemInfo; friend class Item; + friend class SaveFile; public: - static void AddItem(IT it,uint32_t amt=1,bool monsterDrop=false); + static std::weak_ptrAddItem(IT it,uint32_t amt=1,bool monsterDrop=false); //Returns the actual amount available in your main inventory. - static uint32_t GetItemCount(IT it); + [[nodiscard]] static uint32_t GetItemCount(IT it); static std::vector>CopyItem(IT it); static std::vector>GetItem(IT it); //Auto-executes its use function and removes the amt specified from the inventory. Multiple amounts will cause the item to execute its useFunc multiple times. @@ -284,6 +295,8 @@ class ItemInfo{ uint32_t sellValue=0; //If true, this item's action is activated at the beginning of the cast instead of after the cast completes. bool useDuringCast=false; + Stats minStats; + Stats maxStats; private: static void InitializeScripts(); static void InitializeSets(); @@ -300,7 +313,7 @@ public: For the useFunc, return true if the item can be used, false otherwise. */ const ItemScript&OnUseAction()const; - const Stats&GetStats(int enhancementLevel)const; + const Stats GetStats(int enhancementLevel)const; const float CastTime()const; const float CooldownTime()const; const EquipSlot Slot()const; @@ -317,6 +330,9 @@ public: const bool IsWeapon()const; const bool IsArmor()const; const bool IsAccessory()const; + const Stats GetMinStats()const; + const Stats GetMaxStats()const; + Stats RandomizeStats(); }; class ItemOverlay{ diff --git a/Crawler/ItemDrop.cpp b/Adventures in Lestoria/ItemDrop.cpp similarity index 98% rename from Crawler/ItemDrop.cpp rename to Adventures in Lestoria/ItemDrop.cpp index 195cf601..50424fc4 100644 --- a/Crawler/ItemDrop.cpp +++ b/Adventures in Lestoria/ItemDrop.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "ItemDrop.h" #include "olcUTIL_Geometry2D.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" INCLUDE_game INCLUDE_GFX diff --git a/Crawler/ItemDrop.h b/Adventures in Lestoria/ItemDrop.h similarity index 95% rename from Crawler/ItemDrop.h rename to Adventures in Lestoria/ItemDrop.h index d40bab5a..391be907 100644 --- a/Crawler/ItemDrop.h +++ b/Adventures in Lestoria/ItemDrop.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,10 +38,10 @@ All rights reserved. #include "olcPixelGameEngine.h" #include "Item.h" #include "util.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" class ItemDrop{ - friend class Crawler; + friend class AiL; vf2d pos; vf2d speed{}; float zSpeed=0; diff --git a/Crawler/ItemLoadoutWindow.cpp b/Adventures in Lestoria/ItemLoadoutWindow.cpp similarity index 98% rename from Crawler/ItemLoadoutWindow.cpp rename to Adventures in Lestoria/ItemLoadoutWindow.cpp index b02680bf..7be5001e 100644 --- a/Crawler/ItemLoadoutWindow.cpp +++ b/Adventures in Lestoria/ItemLoadoutWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -35,7 +35,7 @@ Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "Menu.h" #include "MenuLabel.h" diff --git a/Crawler/ItemMenuLabel.h b/Adventures in Lestoria/ItemMenuLabel.h similarity index 97% rename from Crawler/ItemMenuLabel.h rename to Adventures in Lestoria/ItemMenuLabel.h index 33b5513a..c86af792 100644 --- a/Crawler/ItemMenuLabel.h +++ b/Adventures in Lestoria/ItemMenuLabel.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/Key.cpp b/Adventures in Lestoria/Key.cpp similarity index 98% rename from Crawler/Key.cpp rename to Adventures in Lestoria/Key.cpp index 3b424fe5..d7fe9835 100644 --- a/Crawler/Key.cpp +++ b/Adventures in Lestoria/Key.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Key.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" INCLUDE_game diff --git a/Crawler/Key.h b/Adventures in Lestoria/Key.h similarity index 98% rename from Crawler/Key.h rename to Adventures in Lestoria/Key.h index e6f4e5c7..ffec02c6 100644 --- a/Crawler/Key.h +++ b/Adventures in Lestoria/Key.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/LICENSE b/Adventures in Lestoria/LICENSE similarity index 100% rename from Crawler/LICENSE rename to Adventures in Lestoria/LICENSE diff --git a/Crawler/LICENSE_FT.txt b/Adventures in Lestoria/LICENSE_FT.txt similarity index 100% rename from Crawler/LICENSE_FT.txt rename to Adventures in Lestoria/LICENSE_FT.txt diff --git a/Crawler/LICENSE_OLC-3.txt b/Adventures in Lestoria/LICENSE_OLC-3.txt similarity index 100% rename from Crawler/LICENSE_OLC-3.txt rename to Adventures in Lestoria/LICENSE_OLC-3.txt diff --git a/Crawler/LevelCompleteWindow.cpp b/Adventures in Lestoria/LevelCompleteWindow.cpp similarity index 98% rename from Crawler/LevelCompleteWindow.cpp rename to Adventures in Lestoria/LevelCompleteWindow.cpp index 859322ed..16bf286a 100644 --- a/Crawler/LevelCompleteWindow.cpp +++ b/Adventures in Lestoria/LevelCompleteWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,7 +36,7 @@ All rights reserved. */ #pragma endregion #include "Menu.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "MenuLabel.h" #include "MenuComponent.h" #include "InventoryScrollableWindowComponent.h" diff --git a/Crawler/LightningBolt.cpp b/Adventures in Lestoria/LightningBolt.cpp similarity index 98% rename from Crawler/LightningBolt.cpp rename to Adventures in Lestoria/LightningBolt.cpp index c27c17a3..20c601ab 100644 --- a/Crawler/LightningBolt.cpp +++ b/Adventures in Lestoria/LightningBolt.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "BulletTypes.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "Emitter.h" #include "util.h" @@ -56,7 +56,7 @@ void LightningBolt::Update(float fElapsedTime){ if(lastParticleSpawn==0){ lastParticleSpawn="Wizard.Ability 2.ParticleFrequency"_F; uint8_t brightness=uint8_t("Wizard.Ability 2.ParticleColorRange"_FRange); - switch(rand()%4){ + switch(util::random()%4){ case 0:{ game->AddEffect(std::make_unique(pos+vf2d{"Wizard.Ability 2.ParticleSpawnRadiusRange"_FRange,"Wizard.Ability 2.ParticleSpawnRadiusRange"_FRange},"Wizard.Ability 2.ParticleLifetimeRange"_FRange,"lightning_bolt_part1.png",upperLevel,"Wizard.Ability 2.ParticleSizeRange"_FRange,"Wizard.Ability 2.ParticleFadeoutTime"_F,vel*"Wizard.Ability 2.ParticleSpeedMultRange"_FRange,Pixel{brightness,brightness,brightness})); }break; diff --git a/Crawler/LightningBoltEmitter.cpp b/Adventures in Lestoria/LightningBoltEmitter.cpp similarity index 94% rename from Crawler/LightningBoltEmitter.cpp rename to Adventures in Lestoria/LightningBoltEmitter.cpp index b6353f3d..6d214d4a 100644 --- a/Crawler/LightningBoltEmitter.cpp +++ b/Adventures in Lestoria/LightningBoltEmitter.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #include "Emitter.h" #include "olcUTIL_Geometry2D.h" #include "util.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" INCLUDE_game @@ -56,7 +56,7 @@ void LightningBoltEmitter::DrawLightningBolt(){ const int MAX_ITERATIONS=100; geom2d::linelineToTarget=geom2d::line(startPos,endPos); float targetAngle=atan2(lineToTarget.vector().y,lineToTarget.vector().x); - float targetDist=lineToTarget.length()*util::random(0.5); + float targetDist=lineToTarget.length()*util::random(0.5f); targetAngle+=util::random((PI/2))-PI/4; geom2d::linelightningLine=geom2d::line(currentPos,currentPos+vf2d{cos(targetAngle)*targetDist,sin(targetAngle)*targetDist}); game->AddEffect(std::make_unique(lightningLine.upoint(0),0,"chain_lightning.png",upperLevel,vf2d{lightningLine.length(),0.2f},0.2f,vf2d{},WHITE,targetAngle,0,true)); @@ -65,7 +65,7 @@ void LightningBoltEmitter::DrawLightningBolt(){ while(iterations(currentPos,endPos).length()>1){ geom2d::linelineToTarget=geom2d::line(currentPos,endPos); float targetAngle=atan2(lineToTarget.vector().y,lineToTarget.vector().x); - float targetDist=lineToTarget.length()*util::random(0.5); + float targetDist=lineToTarget.length()*util::random(0.5f); targetAngle+=util::random((PI/2))-PI/4; geom2d::linelightningLine=geom2d::line(currentPos,currentPos+vf2d{cos(targetAngle)*targetDist,sin(targetAngle)*targetDist}); game->AddEffect(std::make_unique(lightningLine.upoint(0),0,"chain_lightning.png",upperLevel,vf2d{lightningLine.length(),0.2f},0.2f,vf2d{},WHITE,targetAngle,0,true)); diff --git a/Adventures in Lestoria/LoadFileButton.h b/Adventures in Lestoria/LoadFileButton.h new file mode 100644 index 00000000..eda20a27 --- /dev/null +++ b/Adventures in Lestoria/LoadFileButton.h @@ -0,0 +1,103 @@ +#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 © 2023 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion +#pragma once + +#include "MenuComponent.h" +#include "ClassInfo.h" + +INCLUDE_ANIMATION_DATA + +class LoadFileButton:public MenuComponent{ + double playTime=-1; + int chapter=-1; + int level=-1; + std::string className=""; + std::string saveFileName=""; + int saveFileID=-1; + float animationTime=0; +public: + inline LoadFileButton(geom2d::rectrect,const utils::datafile&metadata,const int saveFileID,MenuFunc onClick,ButtonAttr attributes) + :MenuComponent(rect,"",onClick,attributes),playTime(metadata.GetReal(0U)),chapter(metadata.GetInt(1U)),level(metadata.GetInt(2U)),className(metadata.GetString(3U)),saveFileName(metadata.GetString(4U)),saveFileID(saveFileID){ + showDefaultLabel=false; + } + + inline void Update(AiL*game)override{ + MenuComponent::Update(game); + if(playTime==-1){ + grayedOut=true; + } + animationTime+=game->GetElapsedTime(); + } + + inline void DrawDecal(ViewPort&window,bool focused)override{ + MenuComponent::DrawDecal(window,focused); + + if(playTime==-1){ + window.DrawShadowStringPropDecal(rect.pos+vf2d{2,2},"UNKNOWN"); + }else{ + window.DrawShadowStringPropDecal(rect.pos+vf2d{2,2},saveFileName); + + const std::mapclassAnimations={ + {Warrior::name,Warrior::walk_s}, + {Ranger::name,Ranger::walk_s}, + {Wizard::name,Wizard::walk_s}, + {Thief::name,Thief::walk_s}, + {Trapper::name,Trapper::walk_s}, + {Witch::name,Witch::walk_s}, + }; + + std::string chapterText=std::format("Ch.{}",chapter); + vf2d chapterTextSize=game->GetTextSize(chapterText); + window.DrawShadowStringDecal(rect.pos+vf2d{rect.size.x-chapterTextSize.x-2,2},chapterText); + + const Animate2D::Frame&frame=ANIMATION_DATA[classAnimations.at(className)].GetFrame(animationTime); + geom2d::rectsprRect=frame.GetSourceRect(); + window.DrawPartialDecal(rect.pos+vf2d{rect.size.x-26,rect.size.y-36},sprRect.size,frame.GetSourceImage()->Decal(),sprRect.pos,sprRect.size); + std::string levelClassText=std::format("Lv{} {}",level,className); + vf2d levelClassTextSize=game->GetTextSize(levelClassText); + window.DrawShadowStringDecal(rect.pos+vf2d{rect.size.x-levelClassTextSize.x-2,rect.size.y-10},levelClassText); + + window.DrawShadowStringDecal(rect.pos+vf2d{2,12},util::timerStr(playTime)); + + } + } + + inline const int&getSaveFileID()const{ + return saveFileID; + } +}; \ No newline at end of file diff --git a/Crawler/MainMenuWindow.cpp b/Adventures in Lestoria/LoadGameWindow.cpp similarity index 72% rename from Crawler/MainMenuWindow.cpp rename to Adventures in Lestoria/LoadGameWindow.cpp index 7951860f..200ba9a2 100644 --- a/Crawler/MainMenuWindow.cpp +++ b/Adventures in Lestoria/LoadGameWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -30,19 +30,19 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Portions of this software are copyright © 2023 The FreeType +Portions of this software are copyright © 2023 The FreeType Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" -#include "DEFINES.h" -#include "Menu.h" -#include "MenuLabel.h" - -INCLUDE_game -using A=Attribute; -void Menu::InitializeMainMenuWindow(){ - Menu*mainMenuWindow=CreateMenu(MAIN_MENU,CENTERED,game->GetScreenSize()-vi2d{4,4}); +#include "Menu.h" +#include "ScrollableWindowComponent.h" + +void Menu::InitializeLoadGameWindow(){ + Menu*loadGameWindow=CreateMenu(LOAD_GAME,CENTERED,vi2d{96,120}); + + loadGameWindow->ADD("Game Files Label",MenuLabel)({{-8,-12},{112,12}},"Load Game",1.0f,ComponentAttr::SHADOW|ComponentAttr::OUTLINE|ComponentAttr::BACKGROUND)END; + loadGameWindow->ADD("Game Files List",ScrollableWindowComponent)({{-8,4},{112,116}})END; + loadGameWindow->ADD("Go Back Button",MenuComponent)({{24,124},{48,12}},"Back",[](MenuFuncData menu){Menu::CloseMenu();return true;})END; } \ No newline at end of file diff --git a/Adventures in Lestoria/MainMenuWindow.cpp b/Adventures in Lestoria/MainMenuWindow.cpp new file mode 100644 index 00000000..89578e58 --- /dev/null +++ b/Adventures in Lestoria/MainMenuWindow.cpp @@ -0,0 +1,84 @@ +#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 © 2023 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion +#include "AdventuresInLestoria.h" +#include "DEFINES.h" +#include "Menu.h" +#include "MenuComponent.h" +#include "SaveFile.h" + +INCLUDE_game +using A=Attribute; + +void Menu::InitializeMainMenuWindow(){ + Menu*mainMenuWindow=CreateMenu(MAIN_MENU,vi2d{132,120},vi2d{96,96}); + + mainMenuWindow->ADD("New Game Button",MenuComponent)({{12,4},{72,24}},"New Game",[&](MenuFuncData data){ + game->TextEntryEnable(true); + #ifdef __EMSCRIPTEN__ + data.menu.S(A::NEXT_MENU)="New Game"; + if(SaveFile::GetUserID().length()==0){ + Menu::OpenMenu(USER_ID); + }else{ + Menu::OpenMenu(SAVE_FILE_NAME); + } + #else + Menu::OpenMenu(SAVE_FILE_NAME); + #endif + return true; + })END; + mainMenuWindow->ADD("Load Game Button",MenuComponent)({{12,36},{72,24}},"Load Game",[](MenuFuncData data){ + #ifdef __EMSCRIPTEN__ + data.menu.S(A::NEXT_MENU)="Load Game"; + if(SaveFile::GetUserID().length()==0){ + game->TextEntryEnable(true); + Menu::OpenMenu(USER_ID); + }else{ + SaveFile::UpdateSaveGameData(); + Menu::OpenMenu(LOAD_GAME); + } + #else + SaveFile::UpdateSaveGameData(); + Menu::OpenMenu(LOAD_GAME); + #endif + return true; + })END; + mainMenuWindow->ADD("Quit Game Button",MenuComponent)({{12,68},{72,24}},"Quit Game",[](MenuFuncData data){ + game->EndGame(); + return true; + })END; +} \ No newline at end of file diff --git a/Crawler/Map.cpp b/Adventures in Lestoria/Map.cpp similarity index 97% rename from Crawler/Map.cpp rename to Adventures in Lestoria/Map.cpp index d5d397bc..8cc43ac0 100644 --- a/Crawler/Map.cpp +++ b/Adventures in Lestoria/Map.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,7 +36,7 @@ All rights reserved. */ #pragma endregion #include "Map.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "safemap.h" INCLUDE_game diff --git a/Crawler/Map.h b/Adventures in Lestoria/Map.h similarity index 98% rename from Crawler/Map.h rename to Adventures in Lestoria/Map.h index b1c5156e..75daf8e5 100644 --- a/Crawler/Map.h +++ b/Adventures in Lestoria/Map.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Menu.cpp b/Adventures in Lestoria/Menu.cpp similarity index 94% rename from Crawler/Menu.cpp rename to Adventures in Lestoria/Menu.cpp index 4f47dbee..5e237d48 100644 --- a/Crawler/Menu.cpp +++ b/Adventures in Lestoria/Menu.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -35,7 +35,7 @@ Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "MenuComponent.h" #include "DEFINES.h" #include "safemap.h" @@ -111,6 +111,9 @@ void Menu::InitializeMenus(){ InitializeCraftItemWindow(); InitializeConsumableCraftingWindow(); InitializeConsumableCraftItemWindow(); + InitializeSaveFileWindow(); + InitializeLoadGameWindow(); + InitializeUserIDWindow(); for(MenuType type=MenuType(int(MenuType::ENUM_START)+1);typeGetMouse(Mouse::LEFT).bReleased||game->GetKey(SPACE).bReleased||game->GetKey(ENTER).bReleased){ MenuSelect(game); } } -void Menu::HoverMenuSelect(Crawler*game){ +void Menu::HoverMenuSelect(AiL*game){ if(!game->IsFocused()||selection==vi2d{-1,-1}||buttons[selection.y][selection.x]->disabled)return; if(buttons[selection.y][selection.x]->draggable){ if(buttonHoldTime<"ThemeGlobal.MenuHoldTime"_F){ @@ -167,7 +170,7 @@ void Menu::HoverMenuSelect(Crawler*game){ } } -void Menu::MenuSelect(Crawler*game){ +void Menu::MenuSelect(AiL*game){ if(!game->IsFocused()||selection==vi2d{-1,-1}||(buttons[selection.y][selection.x]->disabled||buttons[selection.y][selection.x]->grayedOut))return; bool buttonStillValid=buttons[selection.y][selection.x]->onClick(MenuFuncData{*this,game,buttons[selection.y][selection.x],(ScrollableWindowComponent*)buttons[selection.y][selection.x]->parentComponent}); if(buttonStillValid){ @@ -181,7 +184,8 @@ void Menu::MenuSelect(Crawler*game){ } } -void Menu::Update(Crawler*game){ +void Menu::Update(AiL*game){ + if(buttons.count(selection.y)==0)selection={-1,-1}; if(selection.x<0||selection.x>=buttons[selection.y].size()){selection={-1,-1};} if(draggingComponent==nullptr){ @@ -203,9 +207,11 @@ void Menu::Update(Crawler*game){ bool itemHovered=false; if(!UsingMouseNavigation()){ - if(selection!=vi2d{-1,-1}){ - buttons[selection.y][selection.x]->hovered=true; - itemHovered=true; + if(!game->IsTextEntryEnabled()){ + if(selection!=vi2d{-1,-1}){ + buttons[selection.y][selection.x]->hovered=true; + itemHovered=true; + } } }else{ selection={-1,-1}; @@ -244,12 +250,14 @@ void Menu::Update(Crawler*game){ }; if(!UsingMouseNavigation()){ - if(game->GetKey(ENTER).bReleased||game->GetKey(SPACE).bReleased){ - if(selectedComponent==nullptr){//Dropping over an empty area. - ClearDraggingComponent(); - }else - if(selectedComponent->DropDraggableItem(draggingComponent)){ - ClearDraggingComponent(); + if(!game->IsTextEntryEnabled()){ + if(game->GetKey(ENTER).bReleased||game->GetKey(SPACE).bReleased){ + if(selectedComponent==nullptr){//Dropping over an empty area. + ClearDraggingComponent(); + }else + if(selectedComponent->DropDraggableItem(draggingComponent)){ + ClearDraggingComponent(); + } } } }else{ @@ -263,8 +271,10 @@ void Menu::Update(Crawler*game){ } } } - - KeyboardButtonNavigation(game,pos); + + if(!game->IsTextEntryEnabled()){ + KeyboardButtonNavigation(game,pos); + } for(auto&[key,value]:buttons){ for(auto&button:value){ @@ -292,7 +302,7 @@ void Menu::Update(Crawler*game){ } }; -void Menu::Draw(Crawler*game){ +void Menu::Draw(AiL*game){ if(GetCurrentTheme().IsScaled()){ DrawScaledWindowBackground(game,pos,size,GetRenderColor()); }else{ @@ -341,7 +351,7 @@ void Menu::OpenMenu(MenuType menu,bool cover){ stack.push_back(menus[menu]); } -void Menu::KeyboardButtonNavigation(Crawler*game,vf2d menuPos){ +void Menu::KeyboardButtonNavigation(AiL*game,vf2d menuPos){ vi2d prevSelection=selection; if(game->GetKey(RIGHT).bPressed){ if(selection==vi2d{-1,-1})return; @@ -479,7 +489,7 @@ void Menu::KeyboardButtonNavigation(Crawler*game,vf2d menuPos){ } } -void Menu::DrawScaledWindowBorder(Crawler*game,vf2d menuPos,vf2d size,Pixel renderColor){ +void Menu::DrawScaledWindowBorder(AiL*game,vf2d menuPos,vf2d size,Pixel renderColor){ vf2d patchSize={"Interface.9PatchSize"_f[0],"Interface.9PatchSize"_f[1]}; //Upper-Left @@ -500,7 +510,7 @@ void Menu::DrawScaledWindowBorder(Crawler*game,vf2d menuPos,vf2d size,Pixel rend game->DrawPartialDecal(menuPos+vf2d{0,size.y},vf2d{size.x,patchSize.y},GetPatchPart(1,2).Decal(),{patchSize.x*1,patchSize.y*2},patchSize,renderColor); } -void Menu::DrawTiledWindowBorder(Crawler*game,vf2d menuPos,vf2d size,Pixel renderColor){ +void Menu::DrawTiledWindowBorder(AiL*game,vf2d menuPos,vf2d size,Pixel renderColor){ vf2d patchSize={"Interface.9PatchSize"_f[0],"Interface.9PatchSize"_f[1]}; //Upper-Left @@ -521,7 +531,7 @@ void Menu::DrawTiledWindowBorder(Crawler*game,vf2d menuPos,vf2d size,Pixel rende game->DrawPartialDecal(menuPos+vf2d{0,size.y},vf2d{size.x,patchSize.y},GetPatchPart(1,2).Decal(),{0,0},vf2d{size.x,patchSize.y},renderColor); } -void Menu::DrawScaledWindowBackground(Crawler*game,vf2d menuPos,vf2d size,Pixel renderColor){ +void Menu::DrawScaledWindowBackground(AiL*game,vf2d menuPos,vf2d size,Pixel renderColor){ vf2d patchSize={"Interface.9PatchSize"_f[0],"Interface.9PatchSize"_f[1]}; //Center @@ -533,7 +543,7 @@ void Menu::DrawScaledWindowBackground(Crawler*game,vf2d menuPos,vf2d size,Pixel } } -void Menu::DrawTiledWindowBackground(Crawler*game,vf2d menuPos,vf2d size,Pixel renderColor){ +void Menu::DrawTiledWindowBackground(AiL*game,vf2d menuPos,vf2d size,Pixel renderColor){ vf2d patchSize={"Interface.9PatchSize"_f[0],"Interface.9PatchSize"_f[1]}; //Center @@ -695,7 +705,7 @@ void Menu::RecalculateComponentCount(){ componentCount=displayComponents.size()+buttons.size(); } -MenuType Menu::GetType(){ +const MenuType Menu::GetType()const{ return type; } @@ -709,4 +719,8 @@ void Menu::AddChapterListener(MenuComponent*component){ ERR("WARNING! Component "<name<<" has already been added to the Chapter listener list! There should not be any duplicates!!") } chapterListeners.push_back(component); -} \ No newline at end of file +} + + +MenuFuncData::MenuFuncData(Menu&menu,AiL*const game,MenuComponent*const component,ScrollableWindowComponent*const parentComponent) + :menu(menu),game(game),component(component),parentComponent(parentComponent){} \ No newline at end of file diff --git a/Crawler/Menu.h b/Adventures in Lestoria/Menu.h similarity index 90% rename from Crawler/Menu.h rename to Adventures in Lestoria/Menu.h index 233e99ab..4f535bf0 100644 --- a/Crawler/Menu.h +++ b/Adventures in Lestoria/Menu.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -44,7 +44,7 @@ All rights reserved. #include "olcUTIL_Geometry2D.h" #include "olcPGEX_ViewPort.h" -class Crawler; +class AiL; class MenuComponent; class ScrollableWindowComponent; @@ -57,11 +57,9 @@ class ScrollableWindowComponent; #define STARTING_DEPTH 999999 enum MenuType{ - #pragma region Enum Start //DO NOT REMOVE /////////////////////////////////////////////////////////// /*DO NOT REMOVE!!*/ENUM_START,/////////////////////////////// /////////////////////////////////////////////////////////// - #pragma endregion INVENTORY_CONSUMABLES, CLASS_INFO, CLASS_SELECTION, @@ -79,11 +77,12 @@ enum MenuType{ CRAFT_ITEM, CRAFT_CONSUMABLE, CONSUMABLE_CRAFT_ITEM, - #pragma region Enum End //DO NOT REMOVE + SAVE_FILE_NAME, + LOAD_GAME, + USER_ID, /////////////////////////////////////////////////////////// /*DO NOT REMOVE!!*/ENUM_END//////////////////////////////// /////////////////////////////////////////////////////////// - #pragma endregion }; class Menu:public IAttributable{ @@ -104,8 +103,11 @@ class Menu:public IAttributable{ static void InitializeCraftItemWindow(); static void InitializeConsumableCraftingWindow(); static void InitializeConsumableCraftItemWindow(); + static void InitializeSaveFileWindow(); + static void InitializeLoadGameWindow(); + static void InitializeUserIDWindow(); - friend class Crawler; + friend class AiL; friend struct Player; friend class ItemInfo; friend class EntityStats; @@ -113,7 +115,7 @@ class Menu:public IAttributable{ float buttonHoldTime=0; vi2d selection={-1,-1}; vi2d lastActiveMousePos={}; - int componentCount; + int componentCount=0; MenuComponent*draggingComponent=nullptr; ViewPort window; @@ -181,8 +183,8 @@ public: return component; } - void Update(Crawler*game); - void Draw(Crawler*game); + void Update(AiL*game); + void Draw(AiL*game); static void InitializeMenuListenerCategory(const std::string&category); static void InitializeMenus(); static void LockInListeners(); @@ -196,7 +198,7 @@ public: static std::vectorunhandledComponents; //This list contains MenuComponents that are created and haven't been assigned via _AddComponent. If we get to the end of menu initialization and there are any components in this vector, we have leaked memory and will report this. static const vf2d CENTERED; static bool IsMenuOpen(); - MenuType GetType(); + const MenuType GetType()const; safemapcomponents; //A friendly way to interrogate any component we are interested in. std::vectordisplayComponents; //Components that are only for displaying purposes. static std::mapmenus; @@ -228,17 +230,17 @@ private: Menu(vf2d pos,vf2d size); static MenuType lastMenuTypeCreated; static std::string lastRegisteredComponent; - void HoverMenuSelect(Crawler*game); - void MenuSelect(Crawler*game); - void CheckClickAndPerformMenuSelect(Crawler*game); + void HoverMenuSelect(AiL*game); + void MenuSelect(AiL*game); + void CheckClickAndPerformMenuSelect(AiL*game); //Mandatory before any menu operations! This creates and sets up the menu in memory. static Menu*CreateMenu(MenuType type,vf2d pos,vf2d size); - void KeyboardButtonNavigation(Crawler*game,vf2d menuPos); - static void DrawScaledWindowBackground(Crawler*game,vf2d menuPos,vf2d size,Pixel renderColor); - static void DrawTiledWindowBackground(Crawler*game,vf2d menuPos,vf2d size,Pixel renderColor); - static void DrawScaledWindowBorder(Crawler*game,vf2d menuPos,vf2d size,Pixel renderColor); - static void DrawTiledWindowBorder(Crawler*game,vf2d menuPos,vf2d size,Pixel renderColor); + void KeyboardButtonNavigation(AiL*game,vf2d menuPos); + static void DrawScaledWindowBackground(AiL*game,vf2d menuPos,vf2d size,Pixel renderColor); + static void DrawTiledWindowBackground(AiL*game,vf2d menuPos,vf2d size,Pixel renderColor); + static void DrawScaledWindowBorder(AiL*game,vf2d menuPos,vf2d size,Pixel renderColor); + static void DrawTiledWindowBorder(AiL*game,vf2d menuPos,vf2d size,Pixel renderColor); //This triggers if we use a keyboard/controller input to try and select some off-screen menu item. We should ideally follow the menu cursor. bool HandleOutsideDisabledButtonSelection(MenuComponent*disabledButton); @@ -258,9 +260,10 @@ T*Component(MenuType menu,std::string componentName){ struct MenuFuncData{ Menu&menu; - Crawler*game; - MenuComponent*component; - ScrollableWindowComponent*parentComponent; + AiL*const game; + MenuComponent*const component; + ScrollableWindowComponent*const parentComponent=nullptr; + MenuFuncData(Menu&menu,AiL*const game,MenuComponent*const component,ScrollableWindowComponent*const parentComponent=nullptr); }; using MenuFunc=std::function; \ No newline at end of file diff --git a/Crawler/MenuAnimatedIconButton.h b/Adventures in Lestoria/MenuAnimatedIconButton.h similarity index 96% rename from Crawler/MenuAnimatedIconButton.h rename to Adventures in Lestoria/MenuAnimatedIconButton.h index 7d5347c7..123eba86 100644 --- a/Crawler/MenuAnimatedIconButton.h +++ b/Adventures in Lestoria/MenuAnimatedIconButton.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -51,7 +51,7 @@ public: inline MenuAnimatedIconButton(geom2d::rectrect,std::string animation,MenuFunc onClick,IconButtonAttr attributes=IconButtonAttr::SELECTABLE) :MenuIconButton(rect,nullptr,onClick,attributes),animation(animation){} protected: - virtual inline void Update(Crawler*game)override{ + virtual inline void Update(AiL*game)override{ MenuIconButton::Update(game); animationTime+=game->GetElapsedTime(); } diff --git a/Crawler/MenuAnimatedIconToggleButton.h b/Adventures in Lestoria/MenuAnimatedIconToggleButton.h similarity index 95% rename from Crawler/MenuAnimatedIconToggleButton.h rename to Adventures in Lestoria/MenuAnimatedIconToggleButton.h index 8924d2bd..213d025a 100644 --- a/Crawler/MenuAnimatedIconToggleButton.h +++ b/Adventures in Lestoria/MenuAnimatedIconToggleButton.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #pragma once #include "MenuAnimatedIconButton.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "Toggleable.h" INCLUDE_game @@ -57,7 +57,7 @@ public: return true; }),_onClick(onClick){} protected: - virtual inline void Update(Crawler*game)override{ + virtual inline void Update(AiL*game)override{ MenuAnimatedIconButton::Update(game); if(IsSelected()){ hoverEffect="ThemeGlobal.HighlightTime"_F; //A hack that allows us to make it look like we have this selected. diff --git a/Crawler/MenuComponent.cpp b/Adventures in Lestoria/MenuComponent.cpp similarity index 92% rename from Crawler/MenuComponent.cpp rename to Adventures in Lestoria/MenuComponent.cpp index f827628c..e4834552 100644 --- a/Crawler/MenuComponent.cpp +++ b/Adventures in Lestoria/MenuComponent.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -35,7 +35,7 @@ Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "MenuComponent.h" #include "drawutil.h" #include "util.h" @@ -77,13 +77,13 @@ MenuComponent::~MenuComponent(){ void MenuComponent::AfterCreate(){} -void MenuComponent::_BeforeUpdate(Crawler*game){ +void MenuComponent::_BeforeUpdate(AiL*game){ _OnMouseOut(); BeforeUpdate(game); } -void MenuComponent::BeforeUpdate(Crawler*game){} +void MenuComponent::BeforeUpdate(AiL*game){} -void MenuComponent::Update(Crawler*game){ +void MenuComponent::Update(AiL*game){ if(hovered){ hoverEffect=std::min("ThemeGlobal.HighlightTime"_F,hoverEffect+game->GetElapsedTime()); }else{ @@ -91,7 +91,7 @@ void MenuComponent::Update(Crawler*game){ } } -void MenuComponent::_Update(Crawler*game){ +void MenuComponent::_Update(AiL*game){ if(!disabled){ _OnHover(); Update(game); @@ -154,7 +154,7 @@ bool MenuComponent::DropDraggableItem(MenuComponent*draggable){ return false; } -bool MenuComponent::GetHoverState(Crawler*game){ +bool MenuComponent::GetHoverState(AiL*game){ if(parentComponent!=nullptr){ return parentComponent->GetHoverState(game,this); }else{ @@ -163,7 +163,7 @@ bool MenuComponent::GetHoverState(Crawler*game){ } } -bool MenuComponent::GetHoverState(Crawler*game,MenuComponent*child){ +bool MenuComponent::GetHoverState(AiL*game,MenuComponent*child){ return false; } @@ -191,7 +191,11 @@ vf2d MenuComponent::GetPos(){ return rect.pos; } -std::string MenuComponent::GetLabel(){ +const vf2d&MenuComponent::GetSize()const{ + return rect.size; +} + +const std::string&MenuComponent::GetLabel()const{ return label; } @@ -252,4 +256,8 @@ void MenuComponent::SetGrayedOut(bool grayedOut){ void MenuComponent::OnPlayerMoneyUpdate(uint32_t newMoney){} -void MenuComponent::OnChapterUpdate(uint8_t newChapter){} \ No newline at end of file +void MenuComponent::OnChapterUpdate(uint8_t newChapter){} + +void MenuComponent::Click(){ + onClick(MenuFuncData{*Menu::menus[parentMenu],game,this}); +} \ No newline at end of file diff --git a/Crawler/MenuComponent.h b/Adventures in Lestoria/MenuComponent.h similarity index 94% rename from Crawler/MenuComponent.h rename to Adventures in Lestoria/MenuComponent.h index 6b069adc..f421c23e 100644 --- a/Crawler/MenuComponent.h +++ b/Adventures in Lestoria/MenuComponent.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -82,11 +82,11 @@ class MenuComponent:public IAttributable{ bool hoverState=false; bool runHoverFunctions=false; private: - virtual bool GetHoverState(Crawler*game); + virtual bool GetHoverState(AiL*game); std::pairmemoryLeakInfo; //Used to identify memory leak hints for this component. - void _BeforeUpdate(Crawler*game); - virtual void BeforeUpdate(Crawler*game); - void _Update(Crawler*game); + void _BeforeUpdate(AiL*game); + virtual void BeforeUpdate(AiL*game); + void _Update(AiL*game); void _DrawDecal(ViewPort&window,bool focused); void _OnMouseOut(); void _OnHover(); @@ -114,9 +114,9 @@ protected: bool grayedOut=false; //If turned on, a button will appear grayed out and unresponsive. int inventoryIndex=0; vf2d labelScaling={1,1}; - virtual void Update(Crawler*game); + virtual void Update(AiL*game); virtual void DrawDecal(ViewPort&window,bool focused); - virtual bool GetHoverState(Crawler*game,MenuComponent*child); + virtual bool GetHoverState(AiL*game,MenuComponent*child); virtual void AfterCreate(); //Called after the creation of all menus finish. //CALL THIS FOR A PARENT to check a child's DrawDecal validity! virtual bool PointWithinParent(MenuComponent*child,vi2d drawPos); @@ -132,6 +132,7 @@ public: MenuComponent(geom2d::rectrect,std::string label,MenuType menuDest,MenuFunc onClick,vf2d labelScaling,ButtonAttr attributes=ButtonAttr::NONE); virtual ~MenuComponent(); vf2d GetPos(); + const vf2d&GetSize()const; //We picked up a draggable component, we should make a copy and return it here. If a nullptr is returned here, the pickup is not allowed. //WARNING!!! This allocates a brand new component when successful!!! Be prepared to clear it! virtual MenuComponent*PickUpDraggableItem(); @@ -141,7 +142,7 @@ public: virtual bool HandleOutsideDisabledButtonSelection(MenuComponent*disabledButton); //Called whenever equipment and base stats are updated, notifying a component that numbers that may be displayed have changed. virtual void OnEquipStatsUpdate(); - std::string GetLabel(); + virtual const std::string&GetLabel()const; std::string GetName(); virtual void SetSelected(bool selected)final; virtual void SetSelectionType(SelectionType selectionType)final; @@ -152,4 +153,5 @@ public: void SetGrayedOut(bool grayedOut); virtual void OnPlayerMoneyUpdate(uint32_t newMoney); virtual void OnChapterUpdate(uint8_t newChapter); + virtual void Click(); }; \ No newline at end of file diff --git a/Crawler/MenuIconButton.h b/Adventures in Lestoria/MenuIconButton.h similarity index 96% rename from Crawler/MenuIconButton.h rename to Adventures in Lestoria/MenuIconButton.h index c2b9dec3..21ea7da3 100644 --- a/Crawler/MenuIconButton.h +++ b/Adventures in Lestoria/MenuIconButton.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #pragma once #include "MenuComponent.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" INCLUDE_game @@ -63,7 +63,7 @@ public: background=!(attributes&IconButtonAttr::NO_BACKGROUND); } protected: - virtual inline void Update(Crawler*game)override{ + virtual inline void Update(AiL*game)override{ MenuComponent::Update(game); } virtual inline void DrawDecal(ViewPort&window,bool focused)override{ diff --git a/Crawler/MenuItemButton.h b/Adventures in Lestoria/MenuItemButton.h similarity index 98% rename from Crawler/MenuItemButton.h rename to Adventures in Lestoria/MenuItemButton.h index 4ac7c179..7c024169 100644 --- a/Crawler/MenuItemButton.h +++ b/Adventures in Lestoria/MenuItemButton.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #include "MenuLabel.h" #include "MenuIconButton.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "Item.h" #include "safemap.h" #include "drawutil.h" @@ -84,7 +84,7 @@ public: inline void SetCompactDescriptions(CompactText compact){ this->compact=compact; } - inline virtual void Update(Crawler*game)override{ + inline virtual void Update(AiL*game)override{ MenuIconButton::Update(game); valid=invRef.size()>inventoryIndex&&ITEM_DATA.count(invRef[inventoryIndex]->ActualName())&&invRef[inventoryIndex]->Amt()>0; if(!valid){ diff --git a/Crawler/MenuItemItemButton.h b/Adventures in Lestoria/MenuItemItemButton.h similarity index 96% rename from Crawler/MenuItemItemButton.h rename to Adventures in Lestoria/MenuItemItemButton.h index f0d1c8eb..2bf98a36 100644 --- a/Crawler/MenuItemItemButton.h +++ b/Adventures in Lestoria/MenuItemItemButton.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #include "MenuLabel.h" #include "MenuItemButton.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "Item.h" #include "safemap.h" @@ -49,12 +49,13 @@ INCLUDE_ITEM_DATA class MenuItemItemButton:public MenuIconButton{ private: - std::weak_ptritemRef; std::string itemNameLabelName; std::string itemDescriptionLabelName; bool hideQty=false; CompactText compact=COMPACT; bool hideDetails=false; +protected: + std::weak_ptritemRef; public: inline MenuItemItemButton(geom2d::rectrect,const std::weak_ptritemRef,MenuType menuDest,MenuFunc onClick,std::string itemNameLabelName,std::string itemDescriptionLabelName,IconButtonAttr attributes=IconButtonAttr::SELECTABLE) :MenuIconButton(rect,!ISBLANK(itemRef)?const_cast(itemRef.lock()->Decal()):nullptr,menuDest,onClick,attributes),itemRef(itemRef),itemNameLabelName(itemNameLabelName),itemDescriptionLabelName(itemDescriptionLabelName){ @@ -72,10 +73,12 @@ public: inline const std::weak_ptrGetItem(){ return itemRef; } - inline const std::weak_ptrSetItem(const std::weak_ptrnewItem){ + inline const std::weak_ptrSetItem(const std::weak_ptrnewItem,bool labelUpdate=true){ itemRef=newItem; + if(labelUpdate){ + UpdateLabel(); + } UpdateIcon(); - UpdateLabel(); return itemRef; } inline void SetShowQuantity(bool show){ @@ -139,7 +142,7 @@ protected: Component(parentMenu,itemDescriptionLabelName)->Enable(true); } } - virtual inline void Update(Crawler*game)override{ + virtual inline void Update(AiL*game)override{ MenuIconButton::Update(game); valid=!ISBLANK(itemRef); diff --git a/Crawler/MenuLabel.h b/Adventures in Lestoria/MenuLabel.h similarity index 90% rename from Crawler/MenuLabel.h rename to Adventures in Lestoria/MenuLabel.h index 6b121f46..da97aba7 100644 --- a/Crawler/MenuLabel.h +++ b/Adventures in Lestoria/MenuLabel.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,7 +36,7 @@ All rights reserved. */ #pragma endregion #pragma once -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "MenuComponent.h" #include "DEFINES.h" #include "olcPGEX_ViewPort.h" @@ -70,7 +70,7 @@ public: if(runOnLabelChangeFunc)onLabelChangeFunc(text); } protected: - inline virtual void Update(Crawler*game)override{ + inline virtual void Update(AiL*game)override{ MenuComponent::Update(game); } inline virtual void DrawDecal(ViewPort&window,bool focused)override{ @@ -78,21 +78,22 @@ protected: vf2d adjustedScale={scale,scale}; vf2d labelTextSize= proportional? - vf2d(game->GetWrappedTextSizeProp(label,rect.size.x,adjustedScale)): - vf2d(game->GetWrappedTextSize(label,rect.size.x,adjustedScale)); + vf2d(game->GetWrappedTextSizeProp(label,rect.size.x-2,adjustedScale)): + vf2d(game->GetWrappedTextSize(label,rect.size.x-2,adjustedScale)); if(fitToLabel){ - float sizeRatio=((labelTextSize*adjustedScale).x)/(rect.size.x-2); - if(sizeRatio>1){ - adjustedScale.x/=sizeRatio; - } labelTextSize= proportional? vf2d(game->GetTextSizeProp(label)*adjustedScale): vf2d(game->GetTextSize(label)*adjustedScale); + float sizeRatio=(labelTextSize.x)/(rect.size.x-2); + if(sizeRatio>1){ + adjustedScale.x/=sizeRatio; + labelTextSize.x/=sizeRatio; + } } - vf2d drawPos=rect.middle()-vf2d{labelTextSize}/2; //Assume centered. + vf2d drawPos=vf2d{-1,0}+rect.middle()-vf2d{labelTextSize}/2; //Assume centered. if(!centered){ drawPos=vf2d{rect.pos.x+2,rect.middle().y-labelTextSize.y/2}; //We should at least vertically align here. } diff --git a/Crawler/Merchant's Items.txt b/Adventures in Lestoria/Merchant's Items.txt similarity index 100% rename from Crawler/Merchant's Items.txt rename to Adventures in Lestoria/Merchant's Items.txt diff --git a/Crawler/Merchant.cpp b/Adventures in Lestoria/Merchant.cpp similarity index 95% rename from Crawler/Merchant.cpp rename to Adventures in Lestoria/Merchant.cpp index a9e9d6fe..dfa55eb6 100644 --- a/Crawler/Merchant.cpp +++ b/Adventures in Lestoria/Merchant.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: @@ -38,7 +38,8 @@ All rights reserved. #include "Menu.h" #include "Merchant.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" +#include "util.h" INCLUDE_game INCLUDE_ITEM_CATEGORIES @@ -50,7 +51,7 @@ MerchantFunctionPrimingData Merchant::sellFunctionPrimed("CanSellItem()"); Merchant Merchant::travelingMerchant; const Merchant&Merchant::GetRandomMerchant(Chapter chapter){ - const Merchant&newMerchant=merchants[chapter][rand()%(merchants[chapter].size()-1)]; + const Merchant&newMerchant=merchants[chapter][util::random()%(merchants[chapter].size()-1)]; return newMerchant; } @@ -148,14 +149,12 @@ bool Merchant::CanPurchaseItem(IT item,uint32_t amt)const{ !foundItem.expired()&& game->GetPlayer()->GetMoney()>=foundItem.lock()->BuyValue()*amt; }; -bool Merchant::CanSellItem(IT item,uint32_t amt)const{ - const ItemInfo&it=ITEM_DATA[item]; - +bool Merchant::CanSellItem(std::weak_ptritem,uint32_t amt)const{ sellFunctionPrimed.amt=amt; - sellFunctionPrimed.item=item; + sellFunctionPrimed.item=item.lock()->ActualName(); return sellFunctionPrimed= - it.CanBeSold()&& - Inventory::GetItemCount(item)>=amt; + item.lock()->CanBeSold()&& + item.lock()->Amt()>=amt; }; void Merchant::PurchaseItem(IT item,uint32_t amt){ purchaseFunctionPrimed.Validate(item,amt); diff --git a/Crawler/Merchant.h b/Adventures in Lestoria/Merchant.h similarity index 96% rename from Crawler/Merchant.h rename to Adventures in Lestoria/Merchant.h index 3c75c708..3ac903a9 100644 --- a/Crawler/Merchant.h +++ b/Adventures in Lestoria/Merchant.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: @@ -53,7 +53,7 @@ public: const static std::vector>&GetShopItems(ITCategory category); void AddItem(IT item,uint32_t amt=1,uint8_t enhancementLevel=0U); bool CanPurchaseItem(IT item,uint32_t amt=1U)const; - bool CanSellItem(IT item,uint32_t amt=1U)const; + bool CanSellItem(std::weak_ptrIT,uint32_t amt=1U)const; void PurchaseItem(IT item,uint32_t amt=1U); void SellItem(std::weak_ptr,uint32_t amt=1U); public: diff --git a/Crawler/MerchantWindow.cpp b/Adventures in Lestoria/MerchantWindow.cpp similarity index 97% rename from Crawler/MerchantWindow.cpp rename to Adventures in Lestoria/MerchantWindow.cpp index 4066e6c4..218fe2e2 100644 --- a/Crawler/MerchantWindow.cpp +++ b/Adventures in Lestoria/MerchantWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Menu.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "RowInventoryScrollableWindowComponent.h" #include "MenuItemItemButton.h" #include "MenuComponent.h" @@ -159,13 +159,13 @@ void Menu::InitializeMerchantWindow(){ Component(SELL_ITEM,"Amount to sell Amount Label")->SetLabel("1"); Component(SELL_ITEM,"Total Price Amount Label")->SetLabel(std::to_string(item->GetItem().lock()->SellValue())); Merchant&merchant=Merchant::GetCurrentTravelingMerchant(); - bool canPurchase=merchant.CanSellItem(item->GetItem().lock()->ActualName(),1); + bool canPurchase=merchant.CanSellItem(item->GetItem(),1); std::string colorCode=""; if(!canPurchase)colorCode="#FF0000"; Component(SELL_ITEM,"Total Price Amount Label")->SetLabel(colorCode+std::to_string(item->GetItem().lock()->SellValue())); Component(SELL_ITEM,"Item Sell Header")->SetLabel("Selling "+item->GetItem().lock()->DisplayName()); - Component(SELL_ITEM,"Sell Button")->SetGrayedOut(!merchant.CanSellItem(item->GetItem().lock()->ActualName(),1)); + Component(SELL_ITEM,"Sell Button")->SetGrayedOut(!merchant.CanSellItem(item->GetItem(),1)); Menu::OpenMenu(SELL_ITEM); } return true; @@ -209,7 +209,7 @@ void Menu::InitializeMerchantWindow(){ auto moneyIcon=merchantWindow->ADD("Money Icon",MenuIconButton)({moneyIconPos,{24,24}},GFX["money.png"].Decal(),DO_NOTHING,IconButtonAttr::NOT_SELECTABLE|IconButtonAttr::NO_OUTLINE|IconButtonAttr::NO_BACKGROUND)END; std::string moneyText=std::to_string(game->GetPlayer()->GetMoney()); vf2d moneyTextSize=game->GetTextSizeProp(moneyText)*2; - auto moneyDisplay=merchantWindow->ADD("Money Label",PlayerMoneyLabel)({moneyIconPos-vf2d{2+moneyTextSize.x,-2},moneyTextSize},2,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN)END; + auto moneyDisplay=merchantWindow->ADD("Money Label",PlayerMoneyLabel)({moneyIconPos-vf2d{2+moneyTextSize.x,-2},moneyTextSize},2,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN|ComponentAttr::FIT_TO_LABEL)END; moneyDisplay->SetRightAlignment(true); Player::AddMoneyListener(moneyDisplay); #pragma endregion diff --git a/Crawler/Meteor.cpp b/Adventures in Lestoria/Meteor.cpp similarity index 98% rename from Crawler/Meteor.cpp rename to Adventures in Lestoria/Meteor.cpp index 8039da10..2cb1da16 100644 --- a/Crawler/Meteor.cpp +++ b/Adventures in Lestoria/Meteor.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Effect.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "util.h" #include "safemap.h" diff --git a/Crawler/Monster.cpp b/Adventures in Lestoria/Monster.cpp similarity index 97% rename from Crawler/Monster.cpp rename to Adventures in Lestoria/Monster.cpp index 9d86e091..9d35045f 100644 --- a/Crawler/Monster.cpp +++ b/Adventures in Lestoria/Monster.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Monster.h" #include "DamageNumber.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "Bullet.h" #include "BulletTypes.h" #include "DEFINES.h" @@ -72,7 +72,7 @@ Monster::Monster(vf2d pos,MonsterData data,bool upperLevel,bool bossMob): stats.A("Health")=data.GetHealth(); stats.A("Attack")=data.GetAttack(); stats.A("Move Spd %")=data.GetMoveSpdMult(); - randomFrameOffset=(rand()%1000)/1000.f; + randomFrameOffset=(util::random()%1000)/1000.f; } vf2d&Monster::GetPos(){ return pos; @@ -154,9 +154,9 @@ bool Monster::Update(float fElapsedTime){ iframe_timer=std::max(0.f,iframe_timer-fElapsedTime); if(size!=targetSize){ if(size>targetSize){ - size=std::max(targetSize,size-Crawler::SIZE_CHANGE_SPEED*fElapsedTime); + size=std::max(targetSize,size-AiL::SIZE_CHANGE_SPEED*fElapsedTime); }else{ - size=std::min(targetSize,size+Crawler::SIZE_CHANGE_SPEED*fElapsedTime); + size=std::min(targetSize,size+AiL::SIZE_CHANGE_SPEED*fElapsedTime); } } if(IsAlive()){ @@ -455,7 +455,7 @@ void Monster::SetZ(float z){ this->z=z; } -void Monster::SetStrategyDrawFunction(std::functionfunc){ +void Monster::SetStrategyDrawFunction(std::functionfunc){ strategyDraw=func; } diff --git a/Crawler/Monster.h b/Adventures in Lestoria/Monster.h similarity index 96% rename from Crawler/Monster.h rename to Adventures in Lestoria/Monster.h index 028b0fcc..f8cfb684 100644 --- a/Crawler/Monster.h +++ b/Adventures in Lestoria/Monster.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -50,7 +50,7 @@ INCLUDE_ITEM_DATA struct DamageNumber; struct Player; -class Crawler; +class AiL; enum class Attribute; @@ -123,7 +123,7 @@ public: void UpdateAnimation(std::string state); bool Update(float fElapsedTime); //Returns true when damage is actually dealt. Provide whether or not the attack is on the upper level or not. Monsters must be on the same level to get hit by it. (there is a death check and level check here.) - //If you need to hurt multiple enemies try Crawler::HurtEnemies() + //If you need to hurt multiple enemies try AiL::HurtEnemies() bool Hurt(int damage,bool onUpperLevel,float z); bool IsAlive(); vf2d&GetTargetPos(); @@ -157,8 +157,8 @@ public: void SetZ(float z); const std::function&GetStrategy()const; void SetSize(float newSize,bool immediate=true); - void SetStrategyDrawFunction(std::functionfunc); - std::functionstrategyDraw=[](Crawler*pge){}; + void SetStrategyDrawFunction(std::functionfunc); + std::functionstrategyDraw=[](AiL*pge){}; const ItemAttributable&GetStats()const; private: std::string name; diff --git a/Crawler/MonsterAttribute.h b/Adventures in Lestoria/MonsterAttribute.h similarity index 94% rename from Crawler/MonsterAttribute.h rename to Adventures in Lestoria/MonsterAttribute.h index f3bb0d69..cb6a4e88 100644 --- a/Crawler/MonsterAttribute.h +++ b/Adventures in Lestoria/MonsterAttribute.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -75,4 +75,5 @@ enum class Attribute{ ITEM_NAME, ITEM_QUANTITY, LAST_INVENTORY_TYPE_OPENED, + NEXT_MENU, //Set to 0 for New Game, Set to 1 for Load Game Menu. This is used for the username checks }; \ No newline at end of file diff --git a/Crawler/MonsterData.cpp b/Adventures in Lestoria/MonsterData.cpp similarity index 99% rename from Crawler/MonsterData.cpp rename to Adventures in Lestoria/MonsterData.cpp index 1b9a53b3..1d969188 100644 --- a/Crawler/MonsterData.cpp +++ b/Adventures in Lestoria/MonsterData.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/MonsterStrategyHelpers.h b/Adventures in Lestoria/MonsterStrategyHelpers.h similarity index 97% rename from Crawler/MonsterStrategyHelpers.h rename to Adventures in Lestoria/MonsterStrategyHelpers.h index 5d527af7..402cdfee 100644 --- a/Crawler/MonsterStrategyHelpers.h +++ b/Adventures in Lestoria/MonsterStrategyHelpers.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/NewClasses.txt b/Adventures in Lestoria/NewClasses.txt similarity index 100% rename from Crawler/NewClasses.txt rename to Adventures in Lestoria/NewClasses.txt diff --git a/Crawler/OverworldMapLevelWindow.cpp b/Adventures in Lestoria/OverworldMapLevelWindow.cpp similarity index 92% rename from Crawler/OverworldMapLevelWindow.cpp rename to Adventures in Lestoria/OverworldMapLevelWindow.cpp index b5da6627..b3020961 100644 --- a/Crawler/OverworldMapLevelWindow.cpp +++ b/Adventures in Lestoria/OverworldMapLevelWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -35,7 +35,7 @@ Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "Menu.h" #include "EncountersSpawnListScrollableWindowComponent.h" @@ -53,11 +53,9 @@ void Menu::InitializeOverworldMapLevelWindow(){ vf2d windowSize={game->GetScreenSize().x/3.f-24,float(game->GetScreenSize().y)-48}; Menu*levelSelectWindow=CreateMenu(OVERWORLD_LEVEL_SELECT,{game->GetScreenSize().x-game->GetScreenSize().x/3.f,24},windowSize); - State_OverworldMap*overworldMap=(State_OverworldMap*)GameState::states[States::OVERWORLD_MAP]; //HACK ALERT!! We're going to make an assumption that we are in the overworld map state. - levelSelectWindow->ADD("Panel 1 Back",MenuLabel)({{0,0},{windowSize.x-1,44}},"",1,ComponentAttr::BACKGROUND|ComponentAttr::OUTLINE)END; - levelSelectWindow->ADD("Chapter Label",MenuLabel)({{0,4},{windowSize.x,16}},"Chapter",1,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN)END; - levelSelectWindow->ADD("Stage Label",MenuLabel)({{0,24},{windowSize.x,16}},"Stage",1,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN)END; + levelSelectWindow->ADD("Chapter Label",MenuLabel)({{0,4},{windowSize.x,16}},"Chapter",1,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN)DEPTH -1 END; + levelSelectWindow->ADD("Stage Label",MenuLabel)({{0,24},{windowSize.x,16}},"Stage",1,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN)DEPTH -1 END; levelSelectWindow->ADD("Panel 2 Back",MenuLabel)({{0,52},{windowSize.x-1,96}},"",1,ComponentAttr::BACKGROUND|ComponentAttr::OUTLINE)END; levelSelectWindow->ADD("Encounters Label",MenuLabel)({{0,52},{windowSize.x-1,12}},"Encounters:",1,ComponentAttr::SHADOW|ComponentAttr::LEFT_ALIGN)END; diff --git a/Crawler/OverworldMenuWindow.cpp b/Adventures in Lestoria/OverworldMenuWindow.cpp similarity index 92% rename from Crawler/OverworldMenuWindow.cpp rename to Adventures in Lestoria/OverworldMenuWindow.cpp index 6386e026..57fc7975 100644 --- a/Crawler/OverworldMenuWindow.cpp +++ b/Adventures in Lestoria/OverworldMenuWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,9 +37,10 @@ All rights reserved. #pragma endregion #include "Menu.h" #include "MenuComponent.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "CharacterRotatingDisplay.h" #include "ClassInfo.h" +#include "SaveFile.h" INCLUDE_game INCLUDE_GFX @@ -56,5 +57,10 @@ void Menu::InitializeOverworldMenuWindow(){ })END; overworldMenuWindow->ADD("Inventory Button",MenuComponent)({{4,12+28*2},{88,24}},"Inventory",[](MenuFuncData data){Menu::OpenMenu(INVENTORY);return true;})END; overworldMenuWindow->ADD("Settings Button",MenuComponent)({{4,12+28*3},{88,24}},"Settings",[](MenuFuncData data){/*Menu::OpenMenu(SETTINGS_MENU);*/return true;})END; - overworldMenuWindow->ADD("Quit Button",MenuComponent)({{4,12+28*4},{88,24}},"Quit Game",[](MenuFuncData data){game->EndGame();return true;})END; + overworldMenuWindow->ADD("Quit Button",MenuComponent)({{4,12+28*4},{88,24}},"Quit Game",[](MenuFuncData data){ + Menu::CloseAllMenus(); + SaveFile::SaveGame(); + game->ResetGame(); + return true; + })END; } \ No newline at end of file diff --git a/Crawler/Pathfinding.cpp b/Adventures in Lestoria/Pathfinding.cpp similarity index 99% rename from Crawler/Pathfinding.cpp rename to Adventures in Lestoria/Pathfinding.cpp index 6fdaec4a..a550d4cb 100644 --- a/Crawler/Pathfinding.cpp +++ b/Adventures in Lestoria/Pathfinding.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Pathfinding.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" INCLUDE_game diff --git a/Crawler/Pathfinding.h b/Adventures in Lestoria/Pathfinding.h similarity index 98% rename from Crawler/Pathfinding.h rename to Adventures in Lestoria/Pathfinding.h index 7dab2fc3..11c861fe 100644 --- a/Crawler/Pathfinding.h +++ b/Adventures in Lestoria/Pathfinding.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Player.cpp b/Adventures in Lestoria/Player.cpp similarity index 98% rename from Crawler/Player.cpp rename to Adventures in Lestoria/Player.cpp index aaac87fe..417e554f 100644 --- a/Crawler/Player.cpp +++ b/Adventures in Lestoria/Player.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Monster.h" #include "Player.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DamageNumber.h" #include "Bullet.h" #include "BulletTypes.h" @@ -437,7 +437,7 @@ void Player::Update(float fElapsedTime){ if(Menu::stack.empty()){ - if(CanAct()&&attack_cooldown_timer==0&&Crawler::KEY_ATTACK.Held()){ + if(CanAct()&&attack_cooldown_timer==0&&AiL::KEY_ATTACK.Held()){ AutoAttack(); } @@ -753,7 +753,7 @@ void Player::AddBuff(BuffType type,float duration,float intensity,std::setattr){ buffList.push_back(Buff{type,duration,intensity,attr}); } -void Player::AddBuff(BuffType type,float duration,float intensity,float timeBetweenTicks,std::functionrepeatAction){ +void Player::AddBuff(BuffType type,float duration,float intensity,float timeBetweenTicks,std::functionrepeatAction){ buffList.push_back(Buff{type,duration,intensity,timeBetweenTicks,repeatAction}); } @@ -932,6 +932,7 @@ void EntityStats::RecalculateEquipStats(){ if(ISBLANK(equip))continue; for(auto&[key,size]:ItemAttribute::attributes){ equipStats.A(key)+=equip.lock()->GetStats().A_Read(key); + equipStats.A(key)+=equip.lock()->RandomStats().A_Read(key); } } @@ -1031,6 +1032,14 @@ const ItemAttributable&Player::GetStats()const{ return stats.GetStats(); }; +const ItemAttributable&EntityStats::GetBaseStats()const{ + return baseStats; +}; + +const ItemAttributable&Player::GetBaseStats()const{ + return stats.GetBaseStats(); +}; + ItemAttribute&Player::Get(std::string_view attr){ return ItemAttribute::Get(attr,this); } @@ -1156,4 +1165,9 @@ const uint32_t Player::GetAccumulatedXP()const{ const float Player::GetAttackRecoveryRateReduction()const{ return GetStat("Attack Spd"); +} + +void EntityStats::Reset(){ + equipStats.clear(); + baseStats.clear(); } \ No newline at end of file diff --git a/Crawler/Player.h b/Adventures in Lestoria/Player.h similarity index 98% rename from Crawler/Player.h rename to Adventures in Lestoria/Player.h index 8aad377a..f2535774 100644 --- a/Crawler/Player.h +++ b/Adventures in Lestoria/Player.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -56,9 +56,9 @@ class MenuComponent; struct CastInfo{ std::string name="???"; - float castTimer; - float castTotalTime; - vf2d castPos; + float castTimer=0.f; + float castTotalTime=0.f; + vf2d castPos{}; }; class EntityStats{ @@ -68,16 +68,18 @@ class EntityStats{ public: void RecalculateEquipStats(); //Called when equipment is updated. const ItemAttributable&GetStats()const; + const ItemAttributable&GetBaseStats()const; const float&GetStat(ItemAttribute stat)const; //Get stats with equipment applied. const float&GetStat(std::string_view stat)const; //Get stats with equipment applied. const float&GetBaseStat(ItemAttribute stat)const; const float&GetBaseStat(std::string_view stat)const; void SetBaseStat(ItemAttribute a,float val); void SetBaseStat(std::string_view a,float val); + void Reset(); }; struct Player{ - friend class Crawler; + friend class AiL; friend class sig::Animation; friend struct Warrior; friend struct Thief; @@ -88,6 +90,7 @@ struct Player{ friend class State_GameRun; friend class Inventory; friend void ItemOverlay::Draw(); + friend class SaveFile; public: Player(); //So this is rather fascinating and only exists because we have the ability to change classes which means we need to initialize a class @@ -153,7 +156,7 @@ public: void AddBuff(BuffType type,float duration,float intensity); void AddBuff(BuffType type,float duration,float intensity,std::setattr); void AddBuff(BuffType type,float duration,float intensity,std::setattr); - void AddBuff(BuffType type,float duration,float intensity,float timeBetweenTicks,std::functionrepeatAction); + void AddBuff(BuffType type,float duration,float intensity,float timeBetweenTicks,std::functionrepeatAction); const std::vectorGetBuffs(BuffType buff)const; const std::vectorGetStatBuffs(const std::vector&attr)const; void RemoveBuff(BuffType type); //Removes the first buff found. @@ -221,6 +224,7 @@ public: void CancelCast(); const ItemAttributable&GetStats()const; + const ItemAttributable&GetBaseStats()const; void ResetAccumulatedXP(); const uint32_t GetAccumulatedXP()const; void AddAccumulatedXP(const uint32_t xpGain); diff --git a/Crawler/PlayerMoneyLabel.h b/Adventures in Lestoria/PlayerMoneyLabel.h similarity index 94% rename from Crawler/PlayerMoneyLabel.h rename to Adventures in Lestoria/PlayerMoneyLabel.h index 13747d04..39f2b574 100644 --- a/Crawler/PlayerMoneyLabel.h +++ b/Adventures in Lestoria/PlayerMoneyLabel.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "MenuLabel.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" INCLUDE_game @@ -51,7 +51,7 @@ public: inline virtual void OnPlayerMoneyUpdate(uint32_t newMoney)final{ SetLabel(std::to_string(newMoney)); std::string moneyText=std::to_string(newMoney); - vf2d moneyTextSize=game->GetTextSizeProp(moneyText)*scale; + vf2d moneyTextSize=game->GetTextSizeProp(moneyText)*scale; rect.pos.x=anchorPointX-moneyTextSize.x; rect.size=moneyTextSize; } diff --git a/Crawler/PopupMenuLabel.h b/Adventures in Lestoria/PopupMenuLabel.h similarity index 96% rename from Crawler/PopupMenuLabel.h rename to Adventures in Lestoria/PopupMenuLabel.h index af1e7fe0..6db31fa5 100644 --- a/Crawler/PopupMenuLabel.h +++ b/Adventures in Lestoria/PopupMenuLabel.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #pragma once #include "MenuLabel.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "util.h" INCLUDE_game @@ -54,7 +54,7 @@ public: :MenuLabel(rect,label,1,attributes),scale(scale){ } protected: - virtual void inline Update(Crawler*game)override{ + virtual void inline Update(AiL*game)override{ MenuLabel::Update(game); } virtual void inline DrawDecal(ViewPort&window,bool focused)override{ diff --git a/Crawler/PulsatingFire.cpp b/Adventures in Lestoria/PulsatingFire.cpp similarity index 98% rename from Crawler/PulsatingFire.cpp rename to Adventures in Lestoria/PulsatingFire.cpp index a7d2f37a..948598ef 100644 --- a/Crawler/PulsatingFire.cpp +++ b/Adventures in Lestoria/PulsatingFire.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Effect.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "util.h" #include "safemap.h" diff --git a/Crawler/RCa12948 b/Adventures in Lestoria/RCa12948 similarity index 100% rename from Crawler/RCa12948 rename to Adventures in Lestoria/RCa12948 diff --git a/Crawler/RUN_STRATEGY.cpp b/Adventures in Lestoria/RUN_STRATEGY.cpp similarity index 98% rename from Crawler/RUN_STRATEGY.cpp rename to Adventures in Lestoria/RUN_STRATEGY.cpp index 150923ed..26a088e6 100644 --- a/Crawler/RUN_STRATEGY.cpp +++ b/Adventures in Lestoria/RUN_STRATEGY.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Ranger.cpp b/Adventures in Lestoria/Ranger.cpp similarity index 98% rename from Crawler/Ranger.cpp rename to Adventures in Lestoria/Ranger.cpp index 51c0c3c4..0fe85653 100644 --- a/Crawler/Ranger.cpp +++ b/Adventures in Lestoria/Ranger.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #include "DEFINES.h" #include "Player.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "BulletTypes.h" #include "util.h" #include "config.h" diff --git a/Crawler/RequiredMaterialsList.h b/Adventures in Lestoria/RequiredMaterialsList.h similarity index 98% rename from Crawler/RequiredMaterialsList.h rename to Adventures in Lestoria/RequiredMaterialsList.h index 4ca86958..844e3e70 100644 --- a/Crawler/RequiredMaterialsList.h +++ b/Adventures in Lestoria/RequiredMaterialsList.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/RowInventoryScrollableWindowComponent.h b/Adventures in Lestoria/RowInventoryScrollableWindowComponent.h similarity index 98% rename from Crawler/RowInventoryScrollableWindowComponent.h rename to Adventures in Lestoria/RowInventoryScrollableWindowComponent.h index a27b9d9b..f8212bcd 100644 --- a/Crawler/RowInventoryScrollableWindowComponent.h +++ b/Adventures in Lestoria/RowInventoryScrollableWindowComponent.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: diff --git a/Crawler/RowItemDisplay.h b/Adventures in Lestoria/RowItemDisplay.h similarity index 96% rename from Crawler/RowItemDisplay.h rename to Adventures in Lestoria/RowItemDisplay.h index 46437eb5..85a20ec1 100644 --- a/Crawler/RowItemDisplay.h +++ b/Adventures in Lestoria/RowItemDisplay.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #pragma once #include "Item.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "MenuLabel.h" INCLUDE_game @@ -68,7 +68,7 @@ public: } virtual inline void DrawDecal(ViewPort&window,bool focused)override{ bool canEnhance=itemRef.lock()->CanEnhanceItem(); - bool locked=itemRef.lock()->EnhancementIsPossible()&&itemRef.lock()->GetEnhancementInfo().AvailableChapter()>game->GetCurrentChapter(); + bool locked=fadeOutIfMissingRequirements&&itemRef.lock()->EnhancementIsPossible()&&itemRef.lock()->GetEnhancementInfo().AvailableChapter()>game->GetCurrentChapter(); MenuComponent::DrawDecal(window,focused); @@ -139,7 +139,7 @@ public: window.DrawShadowStringDecal(rect.pos+vf2d{2,2}+iconSize-vf2d{8,8},"E",GREEN,VERY_DARK_GREEN); } } - virtual inline void Update(Crawler*game)override{ + virtual inline void Update(AiL*game)override{ MenuComponent::Update(game); valid=!ISBLANK(itemRef)&&itemRef.lock()->Amt()>0; diff --git a/Crawler/RunAway.cpp b/Adventures in Lestoria/RunAway.cpp similarity index 97% rename from Crawler/RunAway.cpp rename to Adventures in Lestoria/RunAway.cpp index 9d71ff38..8f01a7e0 100644 --- a/Crawler/RunAway.cpp +++ b/Adventures in Lestoria/RunAway.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Monster.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "MonsterStrategyHelpers.h" INCLUDE_BULLET_LIST diff --git a/Crawler/RunTowards.cpp b/Adventures in Lestoria/RunTowards.cpp similarity index 97% rename from Crawler/RunTowards.cpp rename to Adventures in Lestoria/RunTowards.cpp index 1207a974..8155a3f9 100644 --- a/Crawler/RunTowards.cpp +++ b/Adventures in Lestoria/RunTowards.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Monster.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "MonsterStrategyHelpers.h" INCLUDE_game diff --git a/Adventures in Lestoria/SaveFile.cpp b/Adventures in Lestoria/SaveFile.cpp new file mode 100644 index 00000000..eb4ef523 --- /dev/null +++ b/Adventures in Lestoria/SaveFile.cpp @@ -0,0 +1,333 @@ +#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 © 2023 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion +#include +#include "config.h" +#include "Item.h" +#include "AdventuresInLestoria.h" +#include "Unlock.h" +#include "State_OverworldMap.h" +#include "SaveFile.h" +#include "ClassInfo.h" +#include "ScrollableWindowComponent.h" +#include "LoadFileButton.h" + +INCLUDE_game + +size_t SaveFile::saveFileID=0; +std::string SaveFile::saveFileName=""; +std::string SaveFile::username=""; + +const size_t SaveFile::GetSaveFileCount(){ + std::filesystem::create_directories("save_file_path"_S); + size_t count=0; + if(std::filesystem::exists("save_file_path"_S+"metadata.dat")){ + utils::datafile metadata; + utils::datafile::Read(metadata,"save_file_path"_S+"metadata.dat"); + return metadata.GetKeys().size(); + } + return count; +} + +const void SaveFile::SaveGame(){ + std::filesystem::create_directories("save_file_path"_S); + utils::datafile saveFile; + utils::datafile::INITIAL_SETUP_COMPLETE=false; + for(size_t itemCount=0;auto&[cat,items]:Inventory::sortedInv){ + for(std::shared_ptr&item:items){ + saveFile["Items"][std::format("Item[{}]",itemCount)]["Amt"].SetInt(item->Amt()); + saveFile["Items"][std::format("Item[{}]",itemCount)]["Enhancement Level"].SetInt(item->EnhancementLevel()); + saveFile["Items"][std::format("Item[{}]",itemCount)]["Item Name"].SetString(item->ActualName()); + saveFile["Items"][std::format("Item[{}]",itemCount)]["Equip Slot"].SetInt(int(Inventory::GetSlotEquippedIn(item))); + uint8_t loadoutSlotNumber=255; + for(int i=0;iloadout.size();i++){ + if(item==game->GetLoadoutItem(i)){loadoutSlotNumber=i;break;} + } + saveFile["Items"][std::format("Item[{}]",itemCount)]["LoadoutSlot"].SetInt(loadoutSlotNumber); + for(const auto&[attr,val]:item->RandomStats()){ + saveFile["Items"][std::format("Item[{}]",itemCount)]["Attributes"][std::string(attr.ActualName())].SetReal(val); + } + itemCount++; + } + } + saveFile["Player"]["Class"].SetString(game->GetPlayer()->GetClassName()); + saveFile["Player"]["Level"].SetInt(game->GetPlayer()->Level()); + saveFile["Player"]["Money"].SetInt(game->GetPlayer()->GetMoney()); + saveFile["Player"]["Current EXP"].SetInt(game->GetPlayer()->CurrentXP()); + saveFile["Player"]["Total EXP"].SetInt(game->GetPlayer()->TotalXP()); + for(const auto&[attr,val]:game->GetPlayer()->GetBaseStats()){ + saveFile["Player"]["Base Stats"][std::string(attr.ActualName())].SetReal(val); + } + for(const std::string&unlockName:Unlock::unlocks){ + saveFile["Unlocks"][unlockName].SetString("True"); + } + saveFile["Overworld Map Location"].SetString(State_OverworldMap::GetCurrentConnectionPoint().name); + saveFile["Chapter"].SetInt(game->GetCurrentChapter()); + saveFile["Save Name"].SetString(std::string(GetSaveFileName())); + saveFile["Game Time"].SetReal(game->GetRuntime()); + utils::datafile::Write(saveFile,"save_file_path"_S+std::format("save.{:04}",saveFileID)); + + utils::datafile metadata; + if(std::filesystem::exists("save_file_path"_S+"metadata.dat")){ + utils::datafile::Read(metadata,"save_file_path"_S+"metadata.dat"); + } + metadata.GetProperty(std::format("save{}",saveFileID)).SetReal(game->GetRuntime(),0U); + metadata.GetProperty(std::format("save{}",saveFileID)).SetInt(game->GetCurrentChapter(),1U); + metadata.GetProperty(std::format("save{}",saveFileID)).SetInt(game->GetPlayer()->Level(),2U); + metadata.GetProperty(std::format("save{}",saveFileID)).SetString(game->GetPlayer()->GetClassName(),3U); + metadata.GetProperty(std::format("save{}",saveFileID)).SetString(std::string(SaveFile::GetSaveFileName()),4U); + utils::datafile::Write(metadata,"save_file_path"_S+"metadata.dat"); + + utils::datafile::INITIAL_SETUP_COMPLETE=true; + #ifdef __EMSCRIPTEN__ + std::functionRetryResponse; + RetryResponse=[&](std::string_view response){ + if(response!="ERR"){ + Server_SaveFile([](std::string_view response){ + if(response=="ERR"){ + std::cout<<"WARNING! Could not save data to server!"<ResetGame(); + for(auto&[key,data]:loadFile["Items"].GetOrderedKeys()){ + std::weak_ptrnewItem=Inventory::AddItem(data["Item Name"].GetString(),data["Amt"].GetInt()); + newItem.lock()->enhancementLevel=data["Enhancement Level"].GetInt(); + if(loadFile.GetProperty(std::format("Items.{}",key)).HasProperty("Attributes")){ + for(auto&[attr,data]:loadFile.GetProperty(std::format("Items.{}.Attributes",key)).GetOrderedKeys()){ + newItem.lock()->randomizedStats.A(attr)=data.GetReal(); + } + } + if(data.HasProperty("LoadoutSlot")){ + uint8_t loadoutSlot=data["LoadoutSlot"].GetInt(); + if(loadoutSlot!=255){ + game->SetLoadoutItem(loadoutSlot,newItem.lock()->ActualName()); + } + } + + EquipSlot slot=EquipSlot(loadFile.GetProperty(std::format("Items.{}.Equip Slot",key)).GetInt()); + if(slot!=EquipSlot::NONE){ //This should be equipped somewhere! + Inventory::EquipItem(newItem,slot); + } + } + game->ChangePlayerClass(classutils::StringToClass(loadFile["Player"]["Class"].GetString())); + game->GetPlayer()->level=loadFile["Player"]["Level"].GetInt(); + game->GetPlayer()->SetMoney(loadFile["Player"]["Money"].GetInt()); + game->GetPlayer()->currentLevelXP=loadFile["Player"]["Current EXP"].GetInt(); + game->GetPlayer()->totalXPEarned=loadFile["Player"]["Total EXP"].GetInt(); + for(auto&[key,data]:loadFile["Player"]["Base Stats"].GetOrderedKeys()){ + game->GetPlayer()->SetBaseStat(key,data.GetReal()); + } + for(const auto&[key,data]:loadFile["Unlocks"].GetOrderedKeys()){ + Unlock::UnlockArea(key); + } + State_OverworldMap::SetStageMarker(loadFile["Overworld Map Location"].GetString()); + State_OverworldMap::UpdateCurrentConnectionPoint(const_cast(State_OverworldMap::GetCurrentConnectionPoint())); + game->SetChapter(loadFile["Chapter"].GetInt()); + SaveFile::SetSaveFileName(loadFile["Save Name"].GetString()); + game->SetRuntime(loadFile["Game Time"].GetReal()); + game->GetPlayer()->RecalculateEquipStats(); + + GameState::ChangeState(States::OVERWORLD_MAP,0.5f); + }else{ + std::cout<(LOAD_GAME,"Game Files List"); + gameFilesList->RemoveAllComponents(); + const size_t saveFileCount=GetSaveFileCount(); + utils::datafile metadata; + utils::datafile::Read(metadata,"save_file_path"_S+"metadata.dat"); + float offsetY=0; + for(size_t i=0;iADD(std::format("Load File Button - Save {}",i),LoadFileButton)({{0,offsetY},{gameFilesList->GetSize().x-13,48}},metadata[std::format("save{}",i)],i,[](MenuFuncData data){ + LoadFileButton*comp=DYNAMIC_CAST(data.component); + saveFileID=comp->getSaveFileID(); + SaveFile::LoadGame(); + return true; + },ButtonAttr::NONE)END; + offsetY+=49; + } + } + }; + + LoadMetadataFile(); + + #ifdef __EMSCRIPTEN__ + Server_GetLoadInfo([&](std::string_view response){ + if(response!="ERR"){ + std::ofstream file("save_file_path"_S+"metadata.dat"); + std::stringstream str; + file<='A'&&c<='Z'||c>='a'&&c<='z'||c>='0'&&c<='9'||std::find(uriReserved.begin(),uriReserved.end(),c)!=uriReserved.end())return std::move(str)+c; + + std::string convertedChar=std::format("%{:02x}",c); + std::for_each(convertedChar.begin(),convertedChar.end(),[](char&c){c=char(std::toupper(c));}); + return std::move(str)+convertedChar; + }); + }; + std::string dataString=std::format("\"username\":\"{}\"",EncodeURI(username)); + std::string operationName=""; + switch(operation){ + case SaveFileOperation::GET_LOAD_FILES:{ + operationName=std::format("GET_LOAD_FILES"); + //Data should be blank. + }break; + case SaveFileOperation::GET_FILE:{ + operationName=std::format("GET_FILE"); + //Data should contain the file ID we want. + }break; + case SaveFileOperation::SAVE_FILE:{ + operationName=std::format("SAVE_FILE"); + //Data should contain the entire contents of our save file. + }break; + case SaveFileOperation::SAVE_METADATA_FILE:{ + operationName=std::format("SAVE_METADATA_FILE"); + //Data should contain the entire contents of our metadata save file. + }break; + } + dataString+=",\"operation\":\""+EncodeURI(operationName)+"\""; + dataString+=",\"checksum\":\""+EncodeURI(std::to_string(CalculateChecksum(operationName,data)))+"\""; + dataString+=",\"data\":\""+EncodeURI(std::string(data))+"\""; + return "{"+dataString+"}"; +} +const void SaveFile::Server_GetLoadInfo(std::functionrespCallbackFunc){ + game->SendRequest("save_server"_S,CreateServerRequest(SaveFileOperation::GET_LOAD_FILES,"0")); + game->responseCallback=respCallbackFunc; +} +const void SaveFile::Server_GetFile(std::functionrespCallbackFunc){ + game->SendRequest("save_server"_S,CreateServerRequest(SaveFileOperation::GET_FILE,std::to_string(saveFileID))); + game->responseCallback=respCallbackFunc; +} +const void SaveFile::Server_SaveFile(std::functionrespCallbackFunc){ + std::stringstream fileContents; + std::ifstream file("save_file_path"_S+std::format("save.{:04}",saveFileID)); + while(file.good()){ + int val=file.get(); + if(val!=-1){ + fileContents<SendRequest("save_server"_S,CreateServerRequest(SaveFileOperation::SAVE_FILE,std::to_string(saveFileID)+"|"+fileContents.str())); + game->responseCallback=respCallbackFunc; +} +const void SaveFile::Server_SaveMetadataFile(std::functionrespCallbackFunc){ + std::stringstream fileContents; + std::ifstream file("save_file_path"_S+"metadata.dat"); + while(file.good()){ + int val=file.get(); + if(val!=-1){ + fileContents<SendRequest("save_server"_S,CreateServerRequest(SaveFileOperation::SAVE_METADATA_FILE,fileContents.str())); + game->responseCallback=respCallbackFunc; +} + +const std::string_view SaveFile::GetUserID(){ + return SaveFile::username; +} +const void SaveFile::SetUserID(std::string_view userID){ + SaveFile::username=userID; +} \ No newline at end of file diff --git a/Adventures in Lestoria/SaveFile.h b/Adventures in Lestoria/SaveFile.h new file mode 100644 index 00000000..df4dd9d5 --- /dev/null +++ b/Adventures in Lestoria/SaveFile.h @@ -0,0 +1,71 @@ +#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 © 2023 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion +#pragma once + +#undef GetSaveFileName(); //Stupid Windows + +namespace SaveFileOperation{ + enum Operation{ + GET_LOAD_FILES, + GET_FILE, + SAVE_METADATA_FILE, + SAVE_FILE, + }; +}; + +class SaveFile{ + static size_t saveFileID; + static std::string saveFileName; + static std::string username; +public: + static const std::string_view GetSaveFileName(); + static const void SetSaveFileName(std::string_view saveFileName); + static const size_t GetSaveFileCount(); + static const std::string_view GetUserID(); + static const void SetUserID(std::string_view userID); + static const void SaveGame(); + static const void LoadGame(); + static const void SetSaveFileID(size_t saveFileID); + //Called whenever the save game data is updated. + static const void UpdateSaveGameData(); + static const std::string CreateServerRequest(const SaveFileOperation::Operation operation,std::string_view data); + static const void Server_GetLoadInfo(std::functionrespCallbackFunc); + static const void Server_GetFile(std::functionrespCallbackFunc); + static const void Server_SaveFile(std::functionrespCallbackFunc); + static const void Server_SaveMetadataFile(std::functionrespCallbackFunc); +}; \ No newline at end of file diff --git a/Adventures in Lestoria/SaveFileWindow.cpp b/Adventures in Lestoria/SaveFileWindow.cpp new file mode 100644 index 00000000..e34553b3 --- /dev/null +++ b/Adventures in Lestoria/SaveFileWindow.cpp @@ -0,0 +1,55 @@ +#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 © 2023 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion +#include "Menu.h" +#include "TextEntryLabel.h" +#include "MenuComponent.h" +#include "SaveFile.h" + +void Menu::InitializeSaveFileWindow(){ + Menu*saveFileWindow=CreateMenu(SAVE_FILE_NAME,CENTERED,vi2d{96,96}); + saveFileWindow->ADD("Save File Name Entry Label",MenuLabel)({{-8,0},{112,36}},"Save File Name:",1.0f,ComponentAttr::SHADOW)END; + saveFileWindow->ADD("Save File Name Text Entry",TextEntryLabel)({{-8,36},{112,24}},TEXTCHANGE_DONOTHING,false,16U,2.f,ComponentAttr::FIT_TO_LABEL|ComponentAttr::OUTLINE|ComponentAttr::SHADOW|ComponentAttr::BACKGROUND)END; + saveFileWindow->ADD("Back Button",MenuComponent)({{-8,68},{48,12}},"Back",[](MenuFuncData data){Menu::CloseMenu();game->TextEntryEnable(false);return true;})END; + saveFileWindow->ADD("Continue Button",MenuComponent)({{56,68},{48,12}},"Begin",MenuType::CLASS_SELECTION,[](MenuFuncData data){ + SaveFile::SetSaveFileName(game->TextEntryGetString()); + SaveFile::SetSaveFileID(SaveFile::GetSaveFileCount()); + game->TextEntryEnable(false); + SaveFile::SaveGame(); + return true; + })END; +} \ No newline at end of file diff --git a/Crawler/ScrollableWindowComponent.h b/Adventures in Lestoria/ScrollableWindowComponent.h similarity index 96% rename from Crawler/ScrollableWindowComponent.h rename to Adventures in Lestoria/ScrollableWindowComponent.h index 43511964..67d2df58 100644 --- a/Crawler/ScrollableWindowComponent.h +++ b/Adventures in Lestoria/ScrollableWindowComponent.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -39,7 +39,7 @@ All rights reserved. #include "Menu.h" #include "MenuComponent.h" #include "MenuItemButton.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" using A=Attribute; @@ -115,13 +115,13 @@ protected: if(upButton){upButton->Enable(!disabled);} if(downButton){downButton->Enable(!disabled);} } - virtual inline void BeforeUpdate(Crawler*game)override{ + virtual inline void BeforeUpdate(AiL*game)override{ MenuComponent::BeforeUpdate(game); for(MenuComponent*component:components){ component->_BeforeUpdate(game); } } - virtual inline void Update(Crawler*game)override{ + virtual inline void Update(AiL*game)override{ MenuComponent::Update(game); vf2d windowAbsPos=Menu::menus[parentMenu]->pos+rect.pos; @@ -130,7 +130,7 @@ protected: if(mouseOverScrollbar||scrollBarSelected){ scrollBarHoverTime=std::min(scrollBarHoverTime+game->GetElapsedTime(),"ThemeGlobal.HighlightTime"_F); - if(game->GetMouse(0).bPressed){ + if(game->GetMouse(0).bPressed&&!geom2d::contains(rect,bounds)){ scrollBarSelected=true; } if(game->GetMouse(0).bReleased){ @@ -201,9 +201,11 @@ protected: for(MenuComponent*component:components){ component->_DrawDecal(subWindow,focused); } - DrawScrollbar(window,{},focused); + if(!geom2d::contains(rect,bounds)){ + DrawScrollbar(window,{},focused); + } } - virtual bool GetHoverState(Crawler*game,MenuComponent*child)override{ + virtual bool GetHoverState(AiL*game,MenuComponent*child)override{ return geom2d::overlaps(geom2d::rect{Menu::menus[parentMenu]->pos+rect.pos,rect.size},game->GetMousePos())&& //Make sure the mouse is inside the parent window component first.... geom2d::overlaps(geom2d::rect{Menu::menus[parentMenu]->pos+rect.pos+child->rect.pos,child->rect.size},game->GetMousePos()); } diff --git a/Crawler/SellItemWindow.cpp b/Adventures in Lestoria/SellItemWindow.cpp similarity index 97% rename from Crawler/SellItemWindow.cpp rename to Adventures in Lestoria/SellItemWindow.cpp index 4e726843..047e4d95 100644 --- a/Crawler/SellItemWindow.cpp +++ b/Adventures in Lestoria/SellItemWindow.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2022 OneLoneCoder.com +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: @@ -53,7 +53,7 @@ void Menu::InitializeSellItemWindow(){ Merchant&merchant=Merchant::GetCurrentTravelingMerchant(); const std::weak_ptritem=Component(SELL_ITEM,"Item Sell Header")->GetItem(); - bool canSell=merchant.CanSellItem(item.lock()->ActualName(),GetQuantity()); + bool canSell=merchant.CanSellItem(item,GetQuantity()); std::string colorCode=""; if(!canSell)colorCode="#FF0000"; diff --git a/Crawler/ShootAfar.cpp b/Adventures in Lestoria/ShootAfar.cpp similarity index 98% rename from Crawler/ShootAfar.cpp rename to Adventures in Lestoria/ShootAfar.cpp index ae6cb0d2..680ac7b2 100644 --- a/Crawler/ShootAfar.cpp +++ b/Adventures in Lestoria/ShootAfar.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Monster.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "MonsterStrategyHelpers.h" INCLUDE_BULLET_LIST diff --git a/Crawler/SlimeKing.cpp b/Adventures in Lestoria/SlimeKing.cpp similarity index 98% rename from Crawler/SlimeKing.cpp rename to Adventures in Lestoria/SlimeKing.cpp index 4463221a..1346fe0b 100644 --- a/Crawler/SlimeKing.cpp +++ b/Adventures in Lestoria/SlimeKing.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #include "Monster.h" #include "MonsterStrategyHelpers.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "util.h" #include "safemap.h" #include "Effect.h" @@ -208,10 +208,10 @@ void Monster::STRATEGY::SLIMEKING(Monster&m,float fElapsedTime,std::string strat } m.SetZ(0); Landed(m.phase); - m.SetStrategyDrawFunction([](Crawler*game){}); + m.SetStrategyDrawFunction([](AiL*game){}); } else if(m.F(A::JUMP_LANDING_TIMER)<=ConfigFloat("JumpWarningIndicatorTime")){ - m.SetStrategyDrawFunction([&](Crawler*game){ + m.SetStrategyDrawFunction([&](AiL*game){ Decal*dec=ANIMATION_DATA["range_indicator.png"].GetFrame(game->GetElapsedTime()).GetSourceImage()->Decal(); game->view.DrawRotatedDecal(m.GetPos(),dec,0,dec->sprite->Size()/2,vf2d{m.GetSizeMult(),m.GetSizeMult()},RED); }); @@ -256,7 +256,7 @@ void Monster::STRATEGY::SLIMEKING(Monster&m,float fElapsedTime,std::string strat m.F(A::SHOOT_RING_DELAY)=ConfigFloat("Phase1.ShootRingDelay"); ShootBulletRing(m.F(A::SHOOT_RING_OFFSET)); m.F(A::SHOOT_RING_TIMER)=ConfigFloat("Phase1.ShootRepeatTime"); - m.B(A::SHOOT_RING_RIGHT)=bool(rand()%2); + m.B(A::SHOOT_RING_RIGHT)=bool(util::random()%2); m.I(A::PATTERN_REPEAT_COUNT)++; } if(m.I(A::SHOOT_RING_COUNTER)>0){ diff --git a/Crawler/Slime_King_Encounter.txt b/Adventures in Lestoria/Slime_King_Encounter.txt similarity index 100% rename from Crawler/Slime_King_Encounter.txt rename to Adventures in Lestoria/Slime_King_Encounter.txt diff --git a/Crawler/SpawnEncounterLabel.h b/Adventures in Lestoria/SpawnEncounterLabel.h similarity index 96% rename from Crawler/SpawnEncounterLabel.h rename to Adventures in Lestoria/SpawnEncounterLabel.h index 8157842c..0f996d58 100644 --- a/Crawler/SpawnEncounterLabel.h +++ b/Adventures in Lestoria/SpawnEncounterLabel.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #pragma once #include "MenuLabel.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "util.h" INCLUDE_game @@ -60,7 +60,7 @@ public: } protected: - virtual void inline Update(Crawler*game)override{ + virtual void inline Update(AiL*game)override{ MenuComponent::Update(game); anim.UpdateState(state,game->GetElapsedTime()); } diff --git a/Crawler/StatCalculations.txt b/Adventures in Lestoria/StatCalculations.txt similarity index 100% rename from Crawler/StatCalculations.txt rename to Adventures in Lestoria/StatCalculations.txt diff --git a/Crawler/StatLabel.h b/Adventures in Lestoria/StatLabel.h similarity index 97% rename from Crawler/StatLabel.h rename to Adventures in Lestoria/StatLabel.h index 5405984b..1b9890ea 100644 --- a/Crawler/StatLabel.h +++ b/Adventures in Lestoria/StatLabel.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #pragma once #include "MenuLabel.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "util.h" INCLUDE_game diff --git a/Crawler/State.h b/Adventures in Lestoria/State.h similarity index 97% rename from Crawler/State.h rename to Adventures in Lestoria/State.h index e29edd2f..c90aa686 100644 --- a/Crawler/State.h +++ b/Adventures in Lestoria/State.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/State_GameRun.cpp b/Adventures in Lestoria/State_GameRun.cpp similarity index 96% rename from Crawler/State_GameRun.cpp rename to Adventures in Lestoria/State_GameRun.cpp index 23c051aa..bce27994 100644 --- a/Crawler/State_GameRun.cpp +++ b/Adventures in Lestoria/State_GameRun.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,7 +36,7 @@ All rights reserved. */ #pragma endregion #include "State_GameRun.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "Menu.h" #include "ItemDrop.h" @@ -67,7 +67,7 @@ void State_GameRun::OnStateChange(GameState*prevState){ r.Decal()->Update(); } } -void State_GameRun::OnUserUpdate(Crawler*game){ +void State_GameRun::OnUserUpdate(AiL*game){ game->bossDisplayTimer=std::max(0.f,game->bossDisplayTimer-game->GetElapsedTime()); if(game->encounterStarted&&game->totalBossEncounterMobs>0){ game->encounterDuration+=game->GetElapsedTime(); @@ -89,7 +89,7 @@ void State_GameRun::OnUserUpdate(Crawler*game){ game->UpdateBullets(game->GetElapsedTime()); game->UpdateCamera(game->GetElapsedTime()); } -void State_GameRun::Draw(Crawler*game){ +void State_GameRun::Draw(AiL*game){ game->RenderHud(); //FontTest(); //Enable to test font coloring. //FontSpriteTest(); //Enable to test font coloring. diff --git a/Crawler/State_GameRun.h b/Adventures in Lestoria/State_GameRun.h similarity index 92% rename from Crawler/State_GameRun.h rename to Adventures in Lestoria/State_GameRun.h index 0d78ed6e..eeb63b1c 100644 --- a/Crawler/State_GameRun.h +++ b/Adventures in Lestoria/State_GameRun.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -43,8 +43,8 @@ class State_GameRun:public GameState{ ViewPort port; Renderable r; virtual void OnStateChange(GameState*prevState)override final; - virtual void OnUserUpdate(Crawler*game)override final; - virtual void Draw(Crawler*game)override final; + virtual void OnUserUpdate(AiL*game)override final; + virtual void Draw(AiL*game)override final; void FontTest(); void FontSpriteTest(); }; \ No newline at end of file diff --git a/Crawler/State_LevelComplete.cpp b/Adventures in Lestoria/State_LevelComplete.cpp similarity index 91% rename from Crawler/State_LevelComplete.cpp rename to Adventures in Lestoria/State_LevelComplete.cpp index 349a4b94..1cd082cb 100644 --- a/Crawler/State_LevelComplete.cpp +++ b/Adventures in Lestoria/State_LevelComplete.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,10 +36,11 @@ All rights reserved. */ #pragma endregion #include "State_LevelComplete.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "Menu.h" #include "MenuLabel.h" +#include "SaveFile.h" INCLUDE_MONSTER_LIST INCLUDE_game @@ -51,10 +52,11 @@ void State_LevelComplete::OnStateChange(GameState*prevState){ Component(MenuType::LEVEL_COMPLETE,"Level EXP Gain Outline")->SetLabel(std::format("+{} Exp",game->GetPlayer()->GetAccumulatedXP())); game->GetPlayer()->AddXP(game->GetPlayer()->GetAccumulatedXP()); game->GetPlayer()->SetState(State::NORMAL); + SaveFile::SaveGame(); Menu::OpenMenu(LEVEL_COMPLETE); }; -void State_LevelComplete::OnUserUpdate(Crawler*game){ +void State_LevelComplete::OnUserUpdate(AiL*game){ }; -void State_LevelComplete::Draw(Crawler*game){ +void State_LevelComplete::Draw(AiL*game){ game->RenderHud(); }; \ No newline at end of file diff --git a/Crawler/State_LevelComplete.h b/Adventures in Lestoria/State_LevelComplete.h similarity index 92% rename from Crawler/State_LevelComplete.h rename to Adventures in Lestoria/State_LevelComplete.h index 716d1e26..cd558193 100644 --- a/Crawler/State_LevelComplete.h +++ b/Adventures in Lestoria/State_LevelComplete.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,6 +40,6 @@ All rights reserved. class State_LevelComplete:public GameState{ virtual void OnStateChange(GameState*prevState)override final; - virtual void OnUserUpdate(Crawler*game)override final; - virtual void Draw(Crawler*game)override final; + virtual void OnUserUpdate(AiL*game)override final; + virtual void Draw(AiL*game)override final; }; \ No newline at end of file diff --git a/Crawler/State_MainMenu.cpp b/Adventures in Lestoria/State_MainMenu.cpp similarity index 82% rename from Crawler/State_MainMenu.cpp rename to Adventures in Lestoria/State_MainMenu.cpp index 4fe65cbd..c320de26 100644 --- a/Crawler/State_MainMenu.cpp +++ b/Adventures in Lestoria/State_MainMenu.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,15 +36,23 @@ All rights reserved. */ #pragma endregion #include "State_MainMenu.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "Menu.h" +#include "TitleScreen.h" +#include "Key.h" + +INCLUDE_game void State_MainMenu::OnStateChange(GameState*prevState){ - Menu::OpenMenu(MenuType::CLASS_SELECTION); + TitleScreen::Reset(); + game->UpdateDiscordStatus("Main Menu",""); }; -void State_MainMenu::OnUserUpdate(Crawler*game){ - +void State_MainMenu::OnUserUpdate(AiL*game){ + TitleScreen::Update(); + if(AiL::KEY_CONFIRM.Pressed()){ + TitleScreen::Skip(); + } }; -void State_MainMenu::Draw(Crawler*game){ - +void State_MainMenu::Draw(AiL*game){ + TitleScreen::Draw(); }; \ No newline at end of file diff --git a/Crawler/State_MainMenu.h b/Adventures in Lestoria/State_MainMenu.h similarity index 92% rename from Crawler/State_MainMenu.h rename to Adventures in Lestoria/State_MainMenu.h index 134bcbda..96e5906e 100644 --- a/Crawler/State_MainMenu.h +++ b/Adventures in Lestoria/State_MainMenu.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -39,6 +39,6 @@ All rights reserved. class State_MainMenu:public GameState{ virtual void OnStateChange(GameState*prevState)override final; - virtual void OnUserUpdate(Crawler*game)override final; - virtual void Draw(Crawler*game)override final; + virtual void OnUserUpdate(AiL*game)override final; + virtual void Draw(AiL*game)override final; }; \ No newline at end of file diff --git a/Crawler/State_OverworldMap.cpp b/Adventures in Lestoria/State_OverworldMap.cpp similarity index 71% rename from Crawler/State_OverworldMap.cpp rename to Adventures in Lestoria/State_OverworldMap.cpp index 0df7257c..bdd96e7e 100644 --- a/Crawler/State_OverworldMap.cpp +++ b/Adventures in Lestoria/State_OverworldMap.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -35,7 +35,7 @@ Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" #include "Menu.h" #include "Unlock.h" @@ -46,11 +46,14 @@ All rights reserved. #include "EncountersSpawnListScrollableWindowComponent.h" #include "VisualNovel.h" #include "State_OverworldMap.h" +#include "SaveFile.h" +#include "Audio.h" INCLUDE_MONSTER_LIST INCLUDE_game std::vectorState_OverworldMap::connections; +ConnectionPoint*State_OverworldMap::currentConnectionPoint=nullptr; State_OverworldMap::State_OverworldMap(){ SetStageMarker("Stage I-I"); //Eventually we will load the game from a file and this will not be necessary. We just set it to this for now. @@ -73,7 +76,7 @@ void State_OverworldMap::OnStateChange(GameState*prevState){ Menu::OpenMenu(OVERWORLD_LEVEL_SELECT,false); game->UpdateDiscordStatus("Overworld Map",game->GetPlayer()->GetClassName()); }; -void State_OverworldMap::OnUserUpdate(Crawler*game){ +void State_OverworldMap::OnUserUpdate(AiL*game){ if(Menu::stack.size()>1)return; game->camera.SetTarget(currentConnectionPoint->rect.middle()+vf2d{game->GetScreenSize().x/6.0f,0}); @@ -88,7 +91,7 @@ void State_OverworldMap::OnUserUpdate(Crawler*game){ } } - if(Menu::stack.size()==1&&Crawler::KEY_MENU.Pressed()){ + if(Menu::stack.size()==1&&AiL::KEY_MENU.Pressed()){ Menu::OpenMenu(OVERWORLD_MENU); } @@ -103,6 +106,39 @@ void State_OverworldMap::OnUserUpdate(Crawler*game){ Menu::OpenMenu(CRAFT_CONSUMABLE); } + #pragma region Audio Test + if(game->GetKey(K1).bPressed){ + Audio::Play("sfx100v2_loop_water_01.mp3"_SFX); + } + if(game->GetKey(F1).bPressed){ + Audio::PlayBGM("foresty1_1"); + lastAudioTime=0.f; + }else + if(game->GetKey(F2).bPressed){ + Audio::PlayBGM("foresty0"); + lastAudioTime=0.f; + } + if(game->GetKey(K2).bPressed){ + Audio::SetAudioEvent("Default Volume"); + lastEventTime=0.f; + } + if(game->GetKey(K3).bPressed){ + Audio::SetAudioEvent("LowHealth"); + lastEventTime=0.f; + } + if(game->GetKey(K4).bPressed){ + Audio::SetAudioEvent("InCombat"); + lastEventTime=0.f; + } + if(game->GetKey(K5).bPressed){ + Audio::SetAudioEvent("Underwater"); + lastEventTime=0.f; + } + + lastEventTime=std::clamp(lastEventTime+game->GetElapsedTime(),0.f,5.0f); + lastAudioTime=std::clamp(lastAudioTime+game->GetElapsedTime(),0.f,5.0f); + #pragma endregion + #pragma region Handle Connection Point Clicking and Movement for(ConnectionPoint&cp:connections){ if(game->GetMouse(Mouse::LEFT).bPressed&&geom2d::overlaps(game->GetWorldMousePos(),cp.rect)){ @@ -110,7 +146,7 @@ void State_OverworldMap::OnUserUpdate(Crawler*game){ if(neighborInd==-1)continue; ConnectionPoint&neighbor=ConnectionPointFromIndex(neighborInd); if(Unlock::IsUnlocked(neighbor.unlockCondition)&&&cp==&neighbor){ - currentConnectionPoint=&neighbor; + UpdateCurrentConnectionPoint(neighbor); playerTargetPos=currentConnectionPoint->rect.pos+currentConnectionPoint->rect.size/2+vf2d{0,16}; float angleTo=util::angleTo(game->GetPlayer()->GetPos(),playerTargetPos); if(angleTo>=-3*PI/4&&angleTo<-PI/4){ @@ -124,10 +160,6 @@ void State_OverworldMap::OnUserUpdate(Crawler*game){ }else{ game->GetPlayer()->UpdateWalkingAnimation(LEFT); } - Component(OVERWORLD_LEVEL_SELECT,"Stage Label")->SetLabel(currentConnectionPoint->name); - Component(OVERWORLD_LEVEL_SELECT,"Spawns List")->UpdateSpawns(currentConnectionPoint->spawns); - Component(OVERWORLD_LEVEL_SELECT,"Enter Button")->Enable(currentConnectionPoint->levelDataExists); - Component(OVERWORLD_LEVEL_SELECT,"Change Loadout Button")->Enable(currentConnectionPoint->levelDataExists&&!(currentConnectionPoint->type=="STORY"||currentConnectionPoint->type=="SHOP")); break; } } @@ -135,7 +167,7 @@ void State_OverworldMap::OnUserUpdate(Crawler*game){ } #pragma endregion }; -void State_OverworldMap::Draw(Crawler*game){ +void State_OverworldMap::Draw(AiL*game){ currentTime+=game->GetElapsedTime(); for(ConnectionPoint&cp:connections){ if(!Unlock::IsUnlocked(cp)){ @@ -148,6 +180,16 @@ void State_OverworldMap::Draw(Crawler*game){ break; } } + #pragma region Audio Test + std::stringstream eventText; + eventText<<"Event Set to: "; + eventText<DrawShadowStringPropDecal({2,game->ScreenHeight()-36.f},eventText.str(),{255,255,255,uint8_t(util::lerp(255,0,lastEventTime/5.0f))},{0,0,0,uint8_t(util::lerp(255,0,lastEventTime/5.0f))}); + if(lastAudioTime!=5.0f)game->DrawShadowStringPropDecal({2,game->ScreenHeight()-20.f},audioText.str(),{255,255,255,uint8_t(util::lerp(255,0,lastAudioTime/5.0f))},{0,0,0,uint8_t(util::lerp(255,0,lastAudioTime/5.0f))}); + #pragma endregion }; void State_OverworldMap::SetStageMarker(std::string connectionName){ for(ConnectionPoint&connection:connections){ @@ -169,10 +211,21 @@ ConnectionPoint&State_OverworldMap::GetCurrentConnectionPoint(){ void State_OverworldMap::StartLevel(){ game->UpdateDiscordStatus(State_OverworldMap::GetCurrentConnectionPoint().name,game->GetPlayer()->GetClassName()); + SaveFile::SaveGame(); if(State_OverworldMap::GetCurrentConnectionPoint().map.starts_with("STORY")){ VisualNovel::LoadVisualNovel(State_OverworldMap::GetCurrentConnectionPoint().map); }else{ game->LoadLevel(LEVEL_NAMES.at(State_OverworldMap::GetCurrentConnectionPoint().map)); GameState::ChangeState(States::GAME_RUN); } +} + + + +void State_OverworldMap::UpdateCurrentConnectionPoint(const ConnectionPoint&connection){ + currentConnectionPoint=const_cast(&connection); + Component(OVERWORLD_LEVEL_SELECT,"Stage Label")->SetLabel(currentConnectionPoint->name); + Component(OVERWORLD_LEVEL_SELECT,"Spawns List")->UpdateSpawns(currentConnectionPoint->spawns); + Component(OVERWORLD_LEVEL_SELECT,"Enter Button")->Enable(currentConnectionPoint->levelDataExists); + Component(OVERWORLD_LEVEL_SELECT,"Change Loadout Button")->Enable(currentConnectionPoint->levelDataExists&&!(currentConnectionPoint->type=="STORY"||currentConnectionPoint->type=="SHOP")); } \ No newline at end of file diff --git a/Crawler/State_OverworldMap.h b/Adventures in Lestoria/State_OverworldMap.h similarity index 84% rename from Crawler/State_OverworldMap.h rename to Adventures in Lestoria/State_OverworldMap.h index 4f65deb8..c05a4401 100644 --- a/Crawler/State_OverworldMap.h +++ b/Adventures in Lestoria/State_OverworldMap.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -41,19 +41,22 @@ All rights reserved. #include "olcPGEX_ViewPort.h" class State_OverworldMap:public GameState{ - friend class Crawler; - ConnectionPoint*currentConnectionPoint; + friend class AiL; + static ConnectionPoint*currentConnectionPoint; float currentTime=0; vf2d playerTargetPos; const float playerMoveSpd=48.0; + float lastEventTime=0.f; + float lastAudioTime=0.f; public: State_OverworldMap(); static std::vectorconnections; static ConnectionPoint&GetCurrentConnectionPoint(); - void SetStageMarker(std::string connectionName); + static void SetStageMarker(std::string connectionName); static ConnectionPoint&ConnectionPointFromIndex(int ind); virtual void OnStateChange(GameState*prevState)override final; - virtual void OnUserUpdate(Crawler*game)override final; - virtual void Draw(Crawler*game)override final; + virtual void OnUserUpdate(AiL*game)override final; + virtual void Draw(AiL*game)override final; static void StartLevel(); + static void UpdateCurrentConnectionPoint(const ConnectionPoint&connection); }; \ No newline at end of file diff --git a/Crawler/State_Story.cpp b/Adventures in Lestoria/State_Story.cpp similarity index 93% rename from Crawler/State_Story.cpp rename to Adventures in Lestoria/State_Story.cpp index abd15797..0c0c58c5 100644 --- a/Crawler/State_Story.cpp +++ b/Adventures in Lestoria/State_Story.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -42,9 +42,9 @@ All rights reserved. void State_Story::OnStateChange(GameState*prevState){ Menu::CloseAllMenus(); }; -void State_Story::OnUserUpdate(Crawler*game){ +void State_Story::OnUserUpdate(AiL*game){ VisualNovel::novel.Update(); }; -void State_Story::Draw(Crawler*game){ +void State_Story::Draw(AiL*game){ VisualNovel::novel.Draw(); }; \ No newline at end of file diff --git a/Crawler/State_Story.h b/Adventures in Lestoria/State_Story.h similarity index 92% rename from Crawler/State_Story.h rename to Adventures in Lestoria/State_Story.h index c925d803..cc8ad613 100644 --- a/Crawler/State_Story.h +++ b/Adventures in Lestoria/State_Story.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,6 +40,6 @@ All rights reserved. class State_Story:public GameState{ virtual void OnStateChange(GameState*prevState)override final; - virtual void OnUserUpdate(Crawler*game)override final; - virtual void Draw(Crawler*game)override final; + virtual void OnUserUpdate(AiL*game)override final; + virtual void Draw(AiL*game)override final; }; \ No newline at end of file diff --git a/Crawler/TMXParser.h b/Adventures in Lestoria/TMXParser.h similarity index 99% rename from Crawler/TMXParser.h rename to Adventures in Lestoria/TMXParser.h index 9393c5f6..8b554d5e 100644 --- a/Crawler/TMXParser.h +++ b/Adventures in Lestoria/TMXParser.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/TODO.txt b/Adventures in Lestoria/TODO.txt similarity index 53% rename from Crawler/TODO.txt rename to Adventures in Lestoria/TODO.txt index 403df0eb..0ad98a37 100644 --- a/Crawler/TODO.txt +++ b/Adventures in Lestoria/TODO.txt @@ -1,27 +1,27 @@ January 1st =========== -Randomized Item Stats - - Get Item may return multiples of the same item. - - Removing an item with multiples require a specific item to be selected. - - Gear should never stack. The Hub / NPC Interactions Save/Load Game - - Save Inventory Items/Equips - - Player Base Level/Stats/Accumulated Exp - - Unlock Progress - - World Map Location - - Chapter # + EMSCRIPTEN Version: ??? + NEW GAME -> Ask for a User ID -> Ask for a Save File Name -> Saves the Game -> Starts the Game + LOAD GAME -> Ask for a User ID -> Shows Available Files -> Click to Load -> Start Game + Audio Engine - Audio Ambience Zones - Menu Sound Effects - Attack / Enemy Sound Effects - Music Loading/Looping Settings Menu + - Any settings should be saved to the save file! - Volume Controls + - Play Sound in Background - Key Configuration -Upon pressing a key, check if the key is bound to another option, if so, remove that bind from the list. Up to two keys may be binded per action. - + -We have to save keybinds to the save file. +-Smooth Movement +-Click on title screen should not process as input immediately. +-Investigate why frame rate matters for intro screen. January 31st ============ @@ -38,7 +38,12 @@ Implement the rest of the enemy types: Implement Ursule, Mother of Bears Boss Story proofreading/correcting/storyboarding - Add a command to play sound effects/music. +- Fix Keyboard/Controller Menu Navigation (Need clearly defined rules) - Game Controller Support - Should use the Keybind structure that already exists. - Loading Screen -- Title Screen setpieces \ No newline at end of file +- Title Screen setpieces + +- Export/Import Save Files Online/Offline + +- Consider controls for fine-tuning music and how they sound during events. \ No newline at end of file diff --git a/Crawler/TSXParser.h b/Adventures in Lestoria/TSXParser.h similarity index 99% rename from Crawler/TSXParser.h rename to Adventures in Lestoria/TSXParser.h index c1c37f66..16d6709c 100644 --- a/Crawler/TSXParser.h +++ b/Adventures in Lestoria/TSXParser.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Test.cpp b/Adventures in Lestoria/Test.cpp similarity index 96% rename from Crawler/Test.cpp rename to Adventures in Lestoria/Test.cpp index 6ebd8d3b..54aaaa34 100644 --- a/Crawler/Test.cpp +++ b/Adventures in Lestoria/Test.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "Test.h" #include "Error.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" INCLUDE_game diff --git a/Crawler/Test.h b/Adventures in Lestoria/Test.h similarity index 97% rename from Crawler/Test.h rename to Adventures in Lestoria/Test.h index e70c5d0e..0d2128d6 100644 --- a/Crawler/Test.h +++ b/Adventures in Lestoria/Test.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Adventures in Lestoria/TextEntryLabel.h b/Adventures in Lestoria/TextEntryLabel.h new file mode 100644 index 00000000..e193c71c --- /dev/null +++ b/Adventures in Lestoria/TextEntryLabel.h @@ -0,0 +1,87 @@ +#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 © 2023 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion +#pragma once + +#include "MenuLabel.h" + +#define TEXTCHANGE_DONOTHING [](std::string_view updatedLabel){} + +class TextEntryLabel:public MenuLabel{ +protected: + std::string lastTextEntryStr; + float blinkTimer=0; + uint8_t charLimit=16; + bool censored=false; + std::functiononTextChangeCallbackFunc; +public: + inline TextEntryLabel(geom2d::rectrect,std::functiononTextChangeCallbackFunc=TEXTCHANGE_DONOTHING,const bool censored=false,const uint8_t charLimit=16,float scale=1,ComponentAttr attributes=ComponentAttr::NONE) + :MenuLabel(rect,"",scale,attributes),onTextChangeCallbackFunc(onTextChangeCallbackFunc),censored(censored),charLimit(charLimit){} + + inline virtual void Update(AiL*game)override{ + MenuLabel::Update(game); + blinkTimer=fmod(blinkTimer+game->GetElapsedTime(),1); + + game->TextEntrySetCharLimit(charLimit); + + std::string censoredTextEntry; + std::string_view textEntry=game->TextEntryGetString(); + if(textEntry!=lastTextEntryStr){ + lastTextEntryStr=textEntry; + onTextChangeCallbackFunc(lastTextEntryStr); + } + censoredTextEntry=std::accumulate(textEntry.begin(),textEntry.end(),""s,[](std::string currentStr,const char&c){return std::move(currentStr)+'*';}); + + std::string_view finalLabel=censored?censoredTextEntry:textEntry; + + if(game->IsTextEntryEnabled()){ + if(blinkTimer<0.5f){ + SetLabel(std::string(finalLabel.substr(0,game->TextEntryGetCursor()))+" "+std::string(finalLabel.substr(game->TextEntryGetCursor()))); + }else{ + SetLabel(std::string(finalLabel.substr(0,game->TextEntryGetCursor()))+"|"+std::string(finalLabel.substr(game->TextEntryGetCursor()))); + } + } + } + + inline const std::string&GetLabel()const override{ + if(censored){ + return game->TextEntryGetString(); + }else{ + MenuLabel::GetLabel(); + } + } +}; \ No newline at end of file diff --git a/Crawler/Theme.h b/Adventures in Lestoria/Theme.h similarity index 97% rename from Crawler/Theme.h rename to Adventures in Lestoria/Theme.h index c5de27fe..80681930 100644 --- a/Crawler/Theme.h +++ b/Adventures in Lestoria/Theme.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Thief.cpp b/Adventures in Lestoria/Thief.cpp similarity index 97% rename from Crawler/Thief.cpp rename to Adventures in Lestoria/Thief.cpp index 407b8933..6a09c7a0 100644 --- a/Crawler/Thief.cpp +++ b/Adventures in Lestoria/Thief.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #include "DEFINES.h" #include "Player.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "config.h" INCLUDE_MONSTER_LIST diff --git a/Adventures in Lestoria/TitleScreen.cpp b/Adventures in Lestoria/TitleScreen.cpp new file mode 100644 index 00000000..790d6b6f --- /dev/null +++ b/Adventures in Lestoria/TitleScreen.cpp @@ -0,0 +1,140 @@ +#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 © 2023 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion +#include "TitleScreen.h" +#include "safemap.h" +#include "DEFINES.h" +#include "util.h" +#include "AdventuresInLestoria.h" +#include "Menu.h" + +INCLUDE_GFX +INCLUDE_game + +using Particle=TitleScreen::Particle; + +std::vectorTitleScreen::particles; +TitleScreen::State TitleScreen::state=State::BUILDING; +const float TitleScreen::animationTime=16.0f; +float TitleScreen::currentAnimationTime=0.0f; + +void TitleScreen::Initialize(){ + Sprite*titleBackSpr=GFX["title_back.png"].Sprite(); + vf2d titleCenteredOffset={game->ScreenWidth()/2.f-titleBackSpr->width/2,game->ScreenHeight()/2.f-titleBackSpr->height/2}; + for(int y=0;yheight;y+=2){ + for(int x=0;xwidth;x+=2){ + const Pixel&p=titleBackSpr->GetPixel(x,y); + if(p.a!=0){ + particles.emplace_back(vf2d{0,0},1.f,p,0.f,titleCenteredOffset+vf2d{float(x+1),float(y+1)}); + } + } + } + Reset(); +} +void TitleScreen::Reset(){ + state=BUILDING; + for(Particle&p:particles){ + switch(util::random()%4){ + case 0:{ //Top Edge + p.pos.y=-10; + p.pos.x=util::random(game->ScreenWidth()); + }break; + case 1:{ //Left Edge + p.pos.x=-10; + p.pos.y=util::random(game->ScreenHeight()); + }break; + case 2:{ //Right Edge + p.pos.x=game->GetScreenSize().x+10; + p.pos.y=util::random(game->ScreenHeight()); + }break; + case 3:{ //Bottom Edge + p.pos.y=game->GetScreenSize().y+10; + p.pos.x=util::random(game->ScreenWidth()); + }break; + } + p.rot=util::random(4*PI)-2*PI; + p.scale=util::random(5)+5; + } + currentAnimationTime=0.0f; +} +void TitleScreen::Update(){ + currentAnimationTime=std::clamp(currentAnimationTime+game->GetElapsedTime(),0.f,5.f); + switch(state){ + case BUILDING:{ + double t=currentAnimationTime/animationTime; + for(Particle&p:particles){ + p.pos=p.pos.lerp(p.targetPos,t); + p.rot=util::lerp(p.rot,0,t); + p.scale=util::lerp(p.scale,1,t); + } + if(currentAnimationTime==5.0f){ + state=WAITING; + currentAnimationTime=0.f; + } + }break; + case WAITING:{ + if(currentAnimationTime==5.0f){ + state=FINAL; + currentAnimationTime=0.f; + Menu::OpenMenu(MAIN_MENU,false); + } + }break; + } +} +void TitleScreen::Draw(){ + if(state==BUILDING||state==WAITING){ + for(Particle&p:particles){ + game->DrawRotatedDecal(p.pos,GFX["pixel.png"].Decal(),p.rot,{0.5f,0.5f},{p.scale,p.scale},p.col); + } + } + if(state!=BUILDING){ + Decal*titleScreenDecal=GFX["title_transparent.png"].Decal(); + uint8_t alpha=state==WAITING?uint8_t(util::lerp(0,255,currentAnimationTime/5.0f)):255; + vf2d pos=state==WAITING?vf2d(game->GetScreenSize()/2.f):vf2d(game->GetScreenSize()/2).lerp(vf2d{game->ScreenWidth()/2.f,48},currentAnimationTime/5.0f); + game->DrawRotatedDecal(pos,titleScreenDecal,0.f,titleScreenDecal->sprite->Size()/2,{1.f,1.f},{255,255,255,alpha}); + } +} + +void TitleScreen::Skip(){ + if(state!=FINAL){ + for(Particle&p:particles){ + p.pos=p.targetPos; + } + state=WAITING; + currentAnimationTime=5.0f; + } +} \ No newline at end of file diff --git a/Crawler/resource.h b/Adventures in Lestoria/TitleScreen.h similarity index 69% rename from Crawler/resource.h rename to Adventures in Lestoria/TitleScreen.h index bcf81715..c3448fab 100644 --- a/Crawler/resource.h +++ b/Adventures in Lestoria/TitleScreen.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -30,24 +30,42 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Portions of this software are copyright © 2023 The FreeType +Portions of this software are copyright © 2023 The FreeType Project (www.freetype.org). Please see LICENSE_FT.txt for more information. All rights reserved. */ #pragma endregion -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Crawler.rc -// -#define MAINICON 102 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 103 -#endif -#endif +#pragma once + +#include "olcPixelGameEngine.h" + +class TitleScreen{ +public: + struct Particle{ + vf2d pos; + float scale; + Pixel col; + float rot; + vf2d targetPos; + }; + + enum State{ + BUILDING, //All pixels are moving towards their target locations. + WAITING, //A period where no pixels are moving any longer. + FINAL, + }; + + const static float animationTime; + const static float waitTime; + static float currentAnimationTime; + + static void Initialize(); + static void Reset(); + static void Update(); + static void Draw(); + static void Skip(); + +private: + static std::vectorparticles; + static State state; +}; \ No newline at end of file diff --git a/Crawler/Toggleable.h b/Adventures in Lestoria/Toggleable.h similarity index 97% rename from Crawler/Toggleable.h rename to Adventures in Lestoria/Toggleable.h index 06230c34..e15a51a4 100644 --- a/Crawler/Toggleable.h +++ b/Adventures in Lestoria/Toggleable.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #pragma once class IToggleable{ - friend class Crawler; + friend class AiL; public: inline std::vectorGetToggleGroup(){ return toggleGroup; diff --git a/Crawler/Trapper.cpp b/Adventures in Lestoria/Trapper.cpp similarity index 97% rename from Crawler/Trapper.cpp rename to Adventures in Lestoria/Trapper.cpp index bf6cadd2..e2d3af6a 100644 --- a/Crawler/Trapper.cpp +++ b/Adventures in Lestoria/Trapper.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #include "DEFINES.h" #include "Player.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "config.h" INCLUDE_MONSTER_LIST diff --git a/Crawler/Turret.cpp b/Adventures in Lestoria/Turret.cpp similarity index 97% rename from Crawler/Turret.cpp rename to Adventures in Lestoria/Turret.cpp index bbcadc79..5bd47a67 100644 --- a/Crawler/Turret.cpp +++ b/Adventures in Lestoria/Turret.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,7 +38,7 @@ All rights reserved. #include "Monster.h" #include "MonsterStrategyHelpers.h" #include "DEFINES.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "util.h" #include "MonsterAttribute.h" diff --git a/Crawler/Unlock.cpp b/Adventures in Lestoria/Unlock.cpp similarity index 97% rename from Crawler/Unlock.cpp rename to Adventures in Lestoria/Unlock.cpp index f317b4b2..0310e414 100644 --- a/Crawler/Unlock.cpp +++ b/Adventures in Lestoria/Unlock.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/Unlock.h b/Adventures in Lestoria/Unlock.h similarity index 94% rename from Crawler/Unlock.h rename to Adventures in Lestoria/Unlock.h index 777a6fa1..97267921 100644 --- a/Crawler/Unlock.h +++ b/Adventures in Lestoria/Unlock.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -41,11 +41,12 @@ All rights reserved. #include "ConnectionPoint.h" class Unlock{ - friend class Crawler; + friend class AiL; + friend class SaveFile; static std::setunlocks; static void Initialize(); public: - //Provide a map's actual name to trigger unlocks for all connected areas. You can get the current map you are on via State_OverworlMap::GetCurrentConnectionPoint().map + //Provide a map's actual name to trigger unlocks for all connected areas. You can get the current map you are on via State_OverworldMap::GetCurrentConnectionPoint().map static void UnlockArea(std::string mapName); //Uses the current map as the unlock criteria. static void UnlockCurrentMap(); diff --git a/Adventures in Lestoria/UserIDMenu.cpp b/Adventures in Lestoria/UserIDMenu.cpp new file mode 100644 index 00000000..7825b4f4 --- /dev/null +++ b/Adventures in Lestoria/UserIDMenu.cpp @@ -0,0 +1,72 @@ +#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 © 2023 The FreeType +Project (www.freetype.org). Please see LICENSE_FT.txt for more information. +All rights reserved. +*/ +#pragma endregion + +#include "Menu.h" +#include "MenuLabel.h" +#include "TextEntryLabel.h" +#include "SaveFile.h" + +using A=Attribute; + +void Menu::InitializeUserIDWindow(){ + Menu*userIDWindow=CreateMenu(USER_ID,CENTERED,vi2d{168,120}); + + userIDWindow->ADD("User ID Creation Explanation",MenuLabel)({{0,-4},{168,92}},"user_id_message"_FS+"\n\n"+"user_id_message2"_FS,1.f,ComponentAttr::SHADOW|ComponentAttr::BACKGROUND|ComponentAttr::OUTLINE)END; + userIDWindow->ADD("User ID Input",TextEntryLabel)({{36,94},{96,12}},[](std::string_view newLabel){ + Component(USER_ID,"Submit Button")->SetGrayedOut(newLabel.length()==0); + },true,24U,1.f,ComponentAttr::BACKGROUND|ComponentAttr::FIT_TO_LABEL|ComponentAttr::OUTLINE|ComponentAttr::SHADOW)END; + userIDWindow->ADD("Back Button",MenuComponent)({{18,110},{48,12}},"Back",[](MenuFuncData data){ + Menu::CloseMenu(); + return true; + })END; + userIDWindow->ADD("Submit Button",MenuComponent)({{102,110},{48,12}},"Submit",[](MenuFuncData data){ + SaveFile::SetUserID(Component(USER_ID,"User ID Input")->GetLabel()); + if(Menu::menus[MAIN_MENU]->S(A::NEXT_MENU)=="New Game"){ + Menu::CloseMenu(); + Component(MAIN_MENU,"New Game Button")->Click(); + }else + if(Menu::menus[MAIN_MENU]->S(A::NEXT_MENU)=="Load Game"){ + Menu::CloseMenu(); + Component(MAIN_MENU,"Load Game Button")->Click(); + }else{ + ERR("WARNING! Unknown Next Menu set! Current Value:"<S(A::NEXT_MENU))); + } + return true; + })END + ->SetGrayedOut(true); +} \ No newline at end of file diff --git a/Crawler/Version.h b/Adventures in Lestoria/Version.h similarity index 96% rename from Crawler/Version.h rename to Adventures in Lestoria/Version.h index 0978322d..d03e1962 100644 --- a/Crawler/Version.h +++ b/Adventures in Lestoria/Version.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -39,7 +39,7 @@ All rights reserved. #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 1 -#define VERSION_BUILD 5110 +#define VERSION_BUILD 5395 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Crawler/VisualNovel.cpp b/Adventures in Lestoria/VisualNovel.cpp similarity index 99% rename from Crawler/VisualNovel.cpp rename to Adventures in Lestoria/VisualNovel.cpp index 27fef2a3..aba74432 100644 --- a/Crawler/VisualNovel.cpp +++ b/Adventures in Lestoria/VisualNovel.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -37,7 +37,7 @@ All rights reserved. #pragma endregion #include "VisualNovel.h" #include "GameState.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include #include "DEFINES.h" #include "Unlock.h" diff --git a/Crawler/VisualNovel.h b/Adventures in Lestoria/VisualNovel.h similarity index 98% rename from Crawler/VisualNovel.h rename to Adventures in Lestoria/VisualNovel.h index 2f84c7ba..e6148a82 100644 --- a/Crawler/VisualNovel.h +++ b/Adventures in Lestoria/VisualNovel.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -124,7 +124,7 @@ public: class VisualNovel{ friend class State_Story; - friend class Crawler; + friend class AiL; friend class Command; friend class LocationCommand; friend class BackgroundCommand; diff --git a/Crawler/Warrior.cpp b/Adventures in Lestoria/Warrior.cpp similarity index 98% rename from Crawler/Warrior.cpp rename to Adventures in Lestoria/Warrior.cpp index ad7e0514..b3835cb5 100644 --- a/Crawler/Warrior.cpp +++ b/Adventures in Lestoria/Warrior.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #include "DEFINES.h" #include "Player.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "config.h" INCLUDE_MONSTER_LIST diff --git a/Crawler/Witch.cpp b/Adventures in Lestoria/Witch.cpp similarity index 97% rename from Crawler/Witch.cpp rename to Adventures in Lestoria/Witch.cpp index 737b9290..f77afadc 100644 --- a/Crawler/Witch.cpp +++ b/Adventures in Lestoria/Witch.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #include "DEFINES.h" #include "Player.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "config.h" INCLUDE_MONSTER_LIST diff --git a/Crawler/Wizard.cpp b/Adventures in Lestoria/Wizard.cpp similarity index 98% rename from Crawler/Wizard.cpp rename to Adventures in Lestoria/Wizard.cpp index bd59cb89..1ef5b8d5 100644 --- a/Crawler/Wizard.cpp +++ b/Adventures in Lestoria/Wizard.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -40,7 +40,7 @@ All rights reserved. #include "DEFINES.h" #include "Player.h" #include "Effect.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "BulletTypes.h" #include "config.h" #include "util.h" diff --git a/Crawler/assets/Ability Icons/backstep.png b/Adventures in Lestoria/assets/Ability Icons/backstep.png similarity index 100% rename from Crawler/assets/Ability Icons/backstep.png rename to Adventures in Lestoria/assets/Ability Icons/backstep.png diff --git a/Crawler/assets/Ability Icons/battlecry.png b/Adventures in Lestoria/assets/Ability Icons/battlecry.png similarity index 100% rename from Crawler/assets/Ability Icons/battlecry.png rename to Adventures in Lestoria/assets/Ability Icons/battlecry.png diff --git a/Crawler/assets/Ability Icons/block.png b/Adventures in Lestoria/assets/Ability Icons/block.png similarity index 100% rename from Crawler/assets/Ability Icons/block.png rename to Adventures in Lestoria/assets/Ability Icons/block.png diff --git a/Crawler/assets/Ability Icons/chargedshot.png b/Adventures in Lestoria/assets/Ability Icons/chargedshot.png similarity index 100% rename from Crawler/assets/Ability Icons/chargedshot.png rename to Adventures in Lestoria/assets/Ability Icons/chargedshot.png diff --git a/Crawler/assets/Ability Icons/firebolt.png b/Adventures in Lestoria/assets/Ability Icons/firebolt.png similarity index 100% rename from Crawler/assets/Ability Icons/firebolt.png rename to Adventures in Lestoria/assets/Ability Icons/firebolt.png diff --git a/Crawler/assets/Ability Icons/groundslam.png b/Adventures in Lestoria/assets/Ability Icons/groundslam.png similarity index 100% rename from Crawler/assets/Ability Icons/groundslam.png rename to Adventures in Lestoria/assets/Ability Icons/groundslam.png diff --git a/Crawler/assets/Ability Icons/lightningbolt.png b/Adventures in Lestoria/assets/Ability Icons/lightningbolt.png similarity index 100% rename from Crawler/assets/Ability Icons/lightningbolt.png rename to Adventures in Lestoria/assets/Ability Icons/lightningbolt.png diff --git a/Crawler/assets/Ability Icons/meteor.png b/Adventures in Lestoria/assets/Ability Icons/meteor.png similarity index 100% rename from Crawler/assets/Ability Icons/meteor.png rename to Adventures in Lestoria/assets/Ability Icons/meteor.png diff --git a/Crawler/assets/Ability Icons/multishot.png b/Adventures in Lestoria/assets/Ability Icons/multishot.png similarity index 100% rename from Crawler/assets/Ability Icons/multishot.png rename to Adventures in Lestoria/assets/Ability Icons/multishot.png diff --git a/Crawler/assets/Ability Icons/rapidfire.png b/Adventures in Lestoria/assets/Ability Icons/rapidfire.png similarity index 100% rename from Crawler/assets/Ability Icons/rapidfire.png rename to Adventures in Lestoria/assets/Ability Icons/rapidfire.png diff --git a/Crawler/assets/Ability Icons/sonicslash.png b/Adventures in Lestoria/assets/Ability Icons/sonicslash.png similarity index 100% rename from Crawler/assets/Ability Icons/sonicslash.png rename to Adventures in Lestoria/assets/Ability Icons/sonicslash.png diff --git a/Crawler/assets/Ability Icons/teleport.png b/Adventures in Lestoria/assets/Ability Icons/teleport.png similarity index 100% rename from Crawler/assets/Ability Icons/teleport.png rename to Adventures in Lestoria/assets/Ability Icons/teleport.png diff --git a/Adventures in Lestoria/assets/AiL_512.ico b/Adventures in Lestoria/assets/AiL_512.ico new file mode 100644 index 00000000..4f43733c Binary files /dev/null and b/Adventures in Lestoria/assets/AiL_512.ico differ diff --git a/Adventures in Lestoria/assets/AiL_512.png b/Adventures in Lestoria/assets/AiL_512.png new file mode 100644 index 00000000..23249d7a Binary files /dev/null and b/Adventures in Lestoria/assets/AiL_512.png differ diff --git a/Crawler/assets/Campaigns/1_1.tmx b/Adventures in Lestoria/assets/Campaigns/1_1.tmx similarity index 100% rename from Crawler/assets/Campaigns/1_1.tmx rename to Adventures in Lestoria/assets/Campaigns/1_1.tmx diff --git a/Crawler/assets/Campaigns/1_1_test.tmx b/Adventures in Lestoria/assets/Campaigns/1_1_test.tmx similarity index 100% rename from Crawler/assets/Campaigns/1_1_test.tmx rename to Adventures in Lestoria/assets/Campaigns/1_1_test.tmx diff --git a/Crawler/assets/Campaigns/1_1_test2.tmx b/Adventures in Lestoria/assets/Campaigns/1_1_test2.tmx similarity index 100% rename from Crawler/assets/Campaigns/1_1_test2.tmx rename to Adventures in Lestoria/assets/Campaigns/1_1_test2.tmx diff --git a/Crawler/assets/Campaigns/1_1_v2.png b/Adventures in Lestoria/assets/Campaigns/1_1_v2.png similarity index 100% rename from Crawler/assets/Campaigns/1_1_v2.png rename to Adventures in Lestoria/assets/Campaigns/1_1_v2.png diff --git a/Crawler/assets/Campaigns/1_1_v2.tmx b/Adventures in Lestoria/assets/Campaigns/1_1_v2.tmx similarity index 99% rename from Crawler/assets/Campaigns/1_1_v2.tmx rename to Adventures in Lestoria/assets/Campaigns/1_1_v2.tmx index 57e17fbe..34f60bae 100644 --- a/Crawler/assets/Campaigns/1_1_v2.tmx +++ b/Adventures in Lestoria/assets/Campaigns/1_1_v2.tmx @@ -1,6 +1,7 @@ + diff --git a/Crawler/assets/Campaigns/1_2.tmx b/Adventures in Lestoria/assets/Campaigns/1_2.tmx similarity index 100% rename from Crawler/assets/Campaigns/1_2.tmx rename to Adventures in Lestoria/assets/Campaigns/1_2.tmx diff --git a/Crawler/assets/Campaigns/1_3.tmx b/Adventures in Lestoria/assets/Campaigns/1_3.tmx similarity index 100% rename from Crawler/assets/Campaigns/1_3.tmx rename to Adventures in Lestoria/assets/Campaigns/1_3.tmx diff --git a/Crawler/assets/Campaigns/1_4.tmx b/Adventures in Lestoria/assets/Campaigns/1_4.tmx similarity index 100% rename from Crawler/assets/Campaigns/1_4.tmx rename to Adventures in Lestoria/assets/Campaigns/1_4.tmx diff --git a/Crawler/assets/Campaigns/1_5.tmx b/Adventures in Lestoria/assets/Campaigns/1_5.tmx similarity index 100% rename from Crawler/assets/Campaigns/1_5.tmx rename to Adventures in Lestoria/assets/Campaigns/1_5.tmx diff --git a/Crawler/assets/Campaigns/1_6.tmx b/Adventures in Lestoria/assets/Campaigns/1_6.tmx similarity index 100% rename from Crawler/assets/Campaigns/1_6.tmx rename to Adventures in Lestoria/assets/Campaigns/1_6.tmx diff --git a/Crawler/assets/Campaigns/1_7.tmx b/Adventures in Lestoria/assets/Campaigns/1_7.tmx similarity index 100% rename from Crawler/assets/Campaigns/1_7.tmx rename to Adventures in Lestoria/assets/Campaigns/1_7.tmx diff --git a/Crawler/assets/Campaigns/1_8.tmx b/Adventures in Lestoria/assets/Campaigns/1_8.tmx similarity index 100% rename from Crawler/assets/Campaigns/1_8.tmx rename to Adventures in Lestoria/assets/Campaigns/1_8.tmx diff --git a/Crawler/assets/Campaigns/Boss_1.tmx b/Adventures in Lestoria/assets/Campaigns/Boss_1.tmx similarity index 100% rename from Crawler/assets/Campaigns/Boss_1.tmx rename to Adventures in Lestoria/assets/Campaigns/Boss_1.tmx diff --git a/Crawler/assets/Campaigns/Boss_1_v2.tmx b/Adventures in Lestoria/assets/Campaigns/Boss_1_v2.tmx similarity index 100% rename from Crawler/assets/Campaigns/Boss_1_v2.tmx rename to Adventures in Lestoria/assets/Campaigns/Boss_1_v2.tmx diff --git a/Crawler/assets/Campaigns/Hub.tmx b/Adventures in Lestoria/assets/Campaigns/Hub.tmx similarity index 100% rename from Crawler/assets/Campaigns/Hub.tmx rename to Adventures in Lestoria/assets/Campaigns/Hub.tmx diff --git a/Adventures in Lestoria/assets/Campaigns/World_Map.png b/Adventures in Lestoria/assets/Campaigns/World_Map.png new file mode 100644 index 00000000..2dcc587b Binary files /dev/null and b/Adventures in Lestoria/assets/Campaigns/World_Map.png differ diff --git a/Crawler/assets/Campaigns/World_Map.tmx b/Adventures in Lestoria/assets/Campaigns/World_Map.tmx similarity index 100% rename from Crawler/assets/Campaigns/World_Map.tmx rename to Adventures in Lestoria/assets/Campaigns/World_Map.tmx diff --git a/Crawler/assets/Habbo.ttf b/Adventures in Lestoria/assets/Habbo.ttf similarity index 100% rename from Crawler/assets/Habbo.ttf rename to Adventures in Lestoria/assets/Habbo.ttf diff --git a/Crawler/assets/RetroMenu.png b/Adventures in Lestoria/assets/RetroMenu.png similarity index 100% rename from Crawler/assets/RetroMenu.png rename to Adventures in Lestoria/assets/RetroMenu.png diff --git a/Crawler/assets/Unknown.ttf b/Adventures in Lestoria/assets/Unknown.ttf similarity index 100% rename from Crawler/assets/Unknown.ttf rename to Adventures in Lestoria/assets/Unknown.ttf diff --git a/Crawler/assets/arrow.png b/Adventures in Lestoria/assets/arrow.png similarity index 100% rename from Crawler/assets/arrow.png rename to Adventures in Lestoria/assets/arrow.png diff --git a/Crawler/assets/backgrounds/cave.png b/Adventures in Lestoria/assets/backgrounds/cave.png similarity index 100% rename from Crawler/assets/backgrounds/cave.png rename to Adventures in Lestoria/assets/backgrounds/cave.png diff --git a/Crawler/assets/backgrounds/cave_dark.png b/Adventures in Lestoria/assets/backgrounds/cave_dark.png similarity index 100% rename from Crawler/assets/backgrounds/cave_dark.png rename to Adventures in Lestoria/assets/backgrounds/cave_dark.png diff --git a/Crawler/assets/backgrounds/rest.png b/Adventures in Lestoria/assets/backgrounds/rest.png similarity index 100% rename from Crawler/assets/backgrounds/rest.png rename to Adventures in Lestoria/assets/backgrounds/rest.png diff --git a/Crawler/assets/backgrounds/sea.png b/Adventures in Lestoria/assets/backgrounds/sea.png similarity index 100% rename from Crawler/assets/backgrounds/sea.png rename to Adventures in Lestoria/assets/backgrounds/sea.png diff --git a/Crawler/assets/battlecry_effect.png b/Adventures in Lestoria/assets/battlecry_effect.png similarity index 100% rename from Crawler/assets/battlecry_effect.png rename to Adventures in Lestoria/assets/battlecry_effect.png diff --git a/Crawler/assets/block.png b/Adventures in Lestoria/assets/block.png similarity index 100% rename from Crawler/assets/block.png rename to Adventures in Lestoria/assets/block.png diff --git a/Crawler/assets/c30010.png b/Adventures in Lestoria/assets/c30010.png similarity index 100% rename from Crawler/assets/c30010.png rename to Adventures in Lestoria/assets/c30010.png diff --git a/Crawler/assets/c64esque.ttf b/Adventures in Lestoria/assets/c64esque.ttf similarity index 100% rename from Crawler/assets/c64esque.ttf rename to Adventures in Lestoria/assets/c64esque.ttf diff --git a/Crawler/assets/chain_lightning.png b/Adventures in Lestoria/assets/chain_lightning.png similarity index 100% rename from Crawler/assets/chain_lightning.png rename to Adventures in Lestoria/assets/chain_lightning.png diff --git a/Crawler/assets/characters/Greg.png b/Adventures in Lestoria/assets/characters/Greg.png similarity index 100% rename from Crawler/assets/characters/Greg.png rename to Adventures in Lestoria/assets/characters/Greg.png diff --git a/Crawler/assets/characters/Player_F.png b/Adventures in Lestoria/assets/characters/Player_F.png similarity index 100% rename from Crawler/assets/characters/Player_F.png rename to Adventures in Lestoria/assets/characters/Player_F.png diff --git a/Crawler/assets/characters/Player_M.png b/Adventures in Lestoria/assets/characters/Player_M.png similarity index 100% rename from Crawler/assets/characters/Player_M.png rename to Adventures in Lestoria/assets/characters/Player_M.png diff --git a/Crawler/assets/characters/Red Stone.png b/Adventures in Lestoria/assets/characters/Red Stone.png similarity index 100% rename from Crawler/assets/characters/Red Stone.png rename to Adventures in Lestoria/assets/characters/Red Stone.png diff --git a/Crawler/assets/characters/Sherman.png b/Adventures in Lestoria/assets/characters/Sherman.png similarity index 100% rename from Crawler/assets/characters/Sherman.png rename to Adventures in Lestoria/assets/characters/Sherman.png diff --git a/Crawler/assets/charged_shot_arrow.png b/Adventures in Lestoria/assets/charged_shot_arrow.png similarity index 100% rename from Crawler/assets/charged_shot_arrow.png rename to Adventures in Lestoria/assets/charged_shot_arrow.png diff --git a/Crawler/assets/circle.png b/Adventures in Lestoria/assets/circle.png similarity index 100% rename from Crawler/assets/circle.png rename to Adventures in Lestoria/assets/circle.png diff --git a/Crawler/assets/circle_outline.png b/Adventures in Lestoria/assets/circle_outline.png similarity index 100% rename from Crawler/assets/circle_outline.png rename to Adventures in Lestoria/assets/circle_outline.png diff --git a/Crawler/assets/config/MonsterStrategies.txt b/Adventures in Lestoria/assets/config/MonsterStrategies.txt similarity index 100% rename from Crawler/assets/config/MonsterStrategies.txt rename to Adventures in Lestoria/assets/config/MonsterStrategies.txt diff --git a/Crawler/assets/config/Monsters.txt b/Adventures in Lestoria/assets/config/Monsters.txt similarity index 100% rename from Crawler/assets/config/Monsters.txt rename to Adventures in Lestoria/assets/config/Monsters.txt diff --git a/Crawler/assets/config/Player.txt b/Adventures in Lestoria/assets/config/Player.txt similarity index 100% rename from Crawler/assets/config/Player.txt rename to Adventures in Lestoria/assets/config/Player.txt diff --git a/Adventures in Lestoria/assets/config/bgm/bgm.txt b/Adventures in Lestoria/assets/config/bgm/bgm.txt new file mode 100644 index 00000000..263e4aa2 --- /dev/null +++ b/Adventures in Lestoria/assets/config/bgm/bgm.txt @@ -0,0 +1,51 @@ +BGM +{ + Default Fade Time = 1.0 + + #Song title followed by filenames for individual parts + foresty1_1 + { + Track Name = Foresty + + # High + channel[0]=foresty1_1_1.mp3 + # Low + channel[1]=foresty1_1_2.mp3 + + # Underwater High + channel[2]=foresty1_1_alt1.mp3 + # Underwater Low + channel[3]=foresty1_1_alt2.mp3 + + Default Volume = 70%,50%,0%,0% + + # Transition time between one phase to the next. + Fade Time = 2.0 + + Events + { + LowHealth = 50%,100%,20%,20% + InCombat = 90%,100%,0%,0% + Underwater = 0%,0%,100%,100% + } + } + foresty0 + { + Track Name = Foresty Preview + + channel[0]=foresty0.mp3 + channel[1]=foresty0_alt.mp3 + + Default Volume = 70%,0% + + # Transition time between one phase to the next. + Fade Time = 2.0 + + Events + { + LowHealth = 50%,20% + InCombat = 100%,0% + Underwater = 0%,100% + } + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/assets/config/bgm/events.txt b/Adventures in Lestoria/assets/config/bgm/events.txt new file mode 100644 index 00000000..8d8104ca --- /dev/null +++ b/Adventures in Lestoria/assets/config/bgm/events.txt @@ -0,0 +1,6 @@ +Events +{ + LowHealth = "Occurs when the player is low in health." + InCombat = "Occurs when the player is in combat." + Underwater = "Occurs when the player is in water." +} \ No newline at end of file diff --git a/Crawler/assets/config/classes/Ranger.txt b/Adventures in Lestoria/assets/config/classes/Ranger.txt similarity index 100% rename from Crawler/assets/config/classes/Ranger.txt rename to Adventures in Lestoria/assets/config/classes/Ranger.txt diff --git a/Crawler/assets/config/classes/Thief.txt b/Adventures in Lestoria/assets/config/classes/Thief.txt similarity index 100% rename from Crawler/assets/config/classes/Thief.txt rename to Adventures in Lestoria/assets/config/classes/Thief.txt diff --git a/Crawler/assets/config/classes/Trapper.txt b/Adventures in Lestoria/assets/config/classes/Trapper.txt similarity index 100% rename from Crawler/assets/config/classes/Trapper.txt rename to Adventures in Lestoria/assets/config/classes/Trapper.txt diff --git a/Crawler/assets/config/classes/Warrior.txt b/Adventures in Lestoria/assets/config/classes/Warrior.txt similarity index 100% rename from Crawler/assets/config/classes/Warrior.txt rename to Adventures in Lestoria/assets/config/classes/Warrior.txt diff --git a/Crawler/assets/config/classes/Witch.txt b/Adventures in Lestoria/assets/config/classes/Witch.txt similarity index 100% rename from Crawler/assets/config/classes/Witch.txt rename to Adventures in Lestoria/assets/config/classes/Witch.txt diff --git a/Crawler/assets/config/classes/Wizard.txt b/Adventures in Lestoria/assets/config/classes/Wizard.txt similarity index 100% rename from Crawler/assets/config/classes/Wizard.txt rename to Adventures in Lestoria/assets/config/classes/Wizard.txt diff --git a/Crawler/assets/config/configuration.txt b/Adventures in Lestoria/assets/config/configuration.txt similarity index 78% rename from Crawler/assets/config/configuration.txt rename to Adventures in Lestoria/assets/config/configuration.txt index 589f96a5..b4d9b8ca 100644 --- a/Crawler/assets/config/configuration.txt +++ b/Adventures in Lestoria/assets/config/configuration.txt @@ -3,7 +3,7 @@ config_path = assets/config/ # 360x240 is 15x10 tiles of visibility. WINDOW_SIZE = 360,240 -GAME_NAME = Crawler Project +GAME_NAME = Adventures in Lestoria # Graphics Loading Config gfx_config = gfx/gfx.txt @@ -14,6 +14,9 @@ Interface 9PatchSize = 24,24 } +# Save File Server Name +save_server = https://projectdivar.com:4505/AiL + # Map Files Loading Config map_config = levels.txt @@ -56,6 +59,18 @@ item_img_directory = items/ # Path to story files story_directory = config/story/ +# Path to sound effect files +sfx_directory = assets/sounds/ + +# Path to bgm files +bgm_directory = assets/music/ + +# Path to bgm configuration +bgm_config = bgm/bgm.txt + +# Path to bgm events configuration +event_config = bgm/events.txt + # Path to character images character_image_location = characters/ @@ -71,6 +86,9 @@ merchant_directory = config/shops/ # Item Stats Config item_stats_config = items/ItemStats.txt +# Save Files Location +save_file_path = assets/saves/ + # Dialog font and size. dialog_font_size = c64esque,12 @@ -111,4 +129,8 @@ water_reflection_update_time = 0.5 water_reflection_time_step = 0.6 # the amount of scaling done to the water reflection. -water_reflection_scale_factor = 0.05 \ No newline at end of file +water_reflection_scale_factor = 0.05 + +# The message displayed to the user about ID creation. +user_id_message = You are playing the web build of this game. In order to save progress, we ask that you provide a unique username to identify your save data with. +user_id_message2 = Only game save data will be stored. \ No newline at end of file diff --git a/Crawler/assets/config/gfx/gfx.txt b/Adventures in Lestoria/assets/config/gfx/gfx.txt similarity index 96% rename from Crawler/assets/config/gfx/gfx.txt rename to Adventures in Lestoria/assets/config/gfx/gfx.txt index 36547d5e..4150236d 100644 --- a/Crawler/assets/config/gfx/gfx.txt +++ b/Adventures in Lestoria/assets/config/gfx/gfx.txt @@ -44,6 +44,9 @@ Images GFX_SqareSkillIconEmpty = square_skill_overlay_icon_empty.png GFX_Money = money.png GFX_CurrencyCoin = currency_coin.png + GFX_Pixel = pixel.png + GFX_Title = title_transparent.png + GFX_TitleBack = title_back.png # Ability Icons GFX_Warrior_BattleCry_Icon = Ability Icons/battlecry.png diff --git a/Crawler/assets/config/gfx/themes.txt b/Adventures in Lestoria/assets/config/gfx/themes.txt similarity index 100% rename from Crawler/assets/config/gfx/themes.txt rename to Adventures in Lestoria/assets/config/gfx/themes.txt diff --git a/Adventures in Lestoria/assets/config/items/Accessories.txt b/Adventures in Lestoria/assets/config/items/Accessories.txt new file mode 100644 index 00000000..0b82d42f --- /dev/null +++ b/Adventures in Lestoria/assets/config/items/Accessories.txt @@ -0,0 +1,26 @@ +Equipment +{ + Ring of the Slime King + { + Slot = Ring1,Ring2 + ItemCategory = Accessories + + # See ItemStats.txt for valid stat names + StatValues = Health,Attack,Mana,Move Spd % + MinStats = 5,2,1,1 + MaxStats = 20,4,4,3 + SellValue = 90 + + } + Ring of the Bear + { + Slot = Ring1,Ring2 + ItemCategory = Accessories + + # See ItemStats.txt for valid stat names + StatValues = Health,Attack,Mana + MinStats = 4,4,1 + MaxStats = 10,10,3 + SellValue = 75 + } +} \ No newline at end of file diff --git a/Crawler/assets/config/items/Equipment.txt b/Adventures in Lestoria/assets/config/items/Equipment.txt similarity index 96% rename from Crawler/assets/config/items/Equipment.txt rename to Adventures in Lestoria/assets/config/items/Equipment.txt index da121275..242af795 100644 --- a/Crawler/assets/config/items/Equipment.txt +++ b/Adventures in Lestoria/assets/config/items/Equipment.txt @@ -7,7 +7,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 3,2,0 StatValues[1] = 4,3,0 @@ -93,7 +93,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 5,1,0 StatValues[1] = 6,1,0 @@ -179,7 +179,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 4,1,1 StatValues[1] = 5,1,1 @@ -265,7 +265,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 1,0,1 StatValues[1] = 2,0,3 @@ -351,7 +351,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 2,1,0 StatValues[1] = 3,1,1 @@ -437,7 +437,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 7,5,2 StatValues[1] = 9,5,2 @@ -523,7 +523,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 10,3,2 StatValues[1] = 11,4,2 @@ -609,7 +609,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 9,3,3 StatValues[1] = 10,3,4 @@ -695,7 +695,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 5,2,5 StatValues[1] = 6,2,5 @@ -781,7 +781,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 6,3,3 StatValues[1] = 7,3,3 @@ -867,7 +867,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 12,8,4 StatValues[1] = 13,8,4 @@ -953,7 +953,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 14,6,4 StatValues[1] = 15,7,4 @@ -1039,7 +1039,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 13,5,6 StatValues[1] = 14,5,7 @@ -1125,7 +1125,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 8,4,7 StatValues[1] = 8,4,8 @@ -1211,7 +1211,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 9,5,4 StatValues[1] = 9,5,5 @@ -1297,7 +1297,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 24,12,5 StatValues[1] = 29,12,5 @@ -1383,7 +1383,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 33,9,5 StatValues[1] = 37,10,5 @@ -1470,7 +1470,7 @@ Equipment Description = Pants made out of hardened bone. # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 24,7,9 StatValues[1] = 26,8,10 @@ -1556,7 +1556,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 9,5,11 StatValues[1] = 10,5,12 @@ -1642,7 +1642,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Defense,Health,Attack StatValues[0] = 11,7,7 StatValues[1] = 11,8,8 diff --git a/Crawler/assets/config/items/ItemCategory.txt b/Adventures in Lestoria/assets/config/items/ItemCategory.txt similarity index 100% rename from Crawler/assets/config/items/ItemCategory.txt rename to Adventures in Lestoria/assets/config/items/ItemCategory.txt diff --git a/Crawler/assets/config/items/ItemDatabase.txt b/Adventures in Lestoria/assets/config/items/ItemDatabase.txt similarity index 100% rename from Crawler/assets/config/items/ItemDatabase.txt rename to Adventures in Lestoria/assets/config/items/ItemDatabase.txt diff --git a/Crawler/assets/config/items/ItemScript.txt b/Adventures in Lestoria/assets/config/items/ItemScript.txt similarity index 100% rename from Crawler/assets/config/items/ItemScript.txt rename to Adventures in Lestoria/assets/config/items/ItemScript.txt diff --git a/Crawler/assets/config/items/ItemSets.txt b/Adventures in Lestoria/assets/config/items/ItemSets.txt similarity index 100% rename from Crawler/assets/config/items/ItemSets.txt rename to Adventures in Lestoria/assets/config/items/ItemSets.txt diff --git a/Crawler/assets/config/items/ItemStats.txt b/Adventures in Lestoria/assets/config/items/ItemStats.txt similarity index 100% rename from Crawler/assets/config/items/ItemStats.txt rename to Adventures in Lestoria/assets/config/items/ItemStats.txt diff --git a/Crawler/assets/config/items/Weapons.txt b/Adventures in Lestoria/assets/config/items/Weapons.txt similarity index 96% rename from Crawler/assets/config/items/Weapons.txt rename to Adventures in Lestoria/assets/config/items/Weapons.txt index 690f0bfb..d14d9470 100644 --- a/Crawler/assets/config/items/Weapons.txt +++ b/Adventures in Lestoria/assets/config/items/Weapons.txt @@ -6,7 +6,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate,Move Spd % StatValues[0] = 5,5,0 StatValues[1] = 10,6,1 @@ -109,7 +109,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate,Move Spd % StatValues[0] = 5,5,0 StatValues[1] = 10,6,1 @@ -194,7 +194,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate,Move Spd % StatValues[0] = 5,5,0 StatValues[1] = 10,6,1 @@ -279,7 +279,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate,Defense StatValues[0] = 26,5,5 StatValues[1] = 31,6,10 @@ -364,7 +364,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate,Defense StatValues[0] = 26,5,5 StatValues[1] = 31,6,10 @@ -449,7 +449,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate,Defense StatValues[0] = 26,5,5 StatValues[1] = 31,6,10 @@ -534,7 +534,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate,CDR,Mana StatValues[0] = 47,5,0,0 StatValues[1] = 52,6,2,1 @@ -619,7 +619,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate,CDR,Mana StatValues[0] = 47,5,0,0 StatValues[1] = 52,6,2,1 @@ -704,7 +704,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate,CDR,Mana StatValues[0] = 47,5,0,0 StatValues[1] = 52,6,2,1 @@ -789,7 +789,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate StatValues[0] = 68,10 StatValues[1] = 73,12 @@ -874,7 +874,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate StatValues[0] = 68,10 StatValues[1] = 73,12 @@ -959,7 +959,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names StatValues = Attack,Crit Rate StatValues[0] = 68,10 StatValues[1] = 73,12 @@ -1044,7 +1044,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names # Attack Speed Increase reduces Cooldown of LeftClick Attacks (0.1 sec in this case) StatValues = Attack,Crit Rate,Attack Spd StatValues[0] = 89,5,0.1 @@ -1130,7 +1130,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names # Attack Speed Increase reduces Cooldown of LeftClick Attacks (0.1 sec in this case) StatValues = Attack,Crit Rate,Attack Spd StatValues[0] = 89,5,0.1 @@ -1216,7 +1216,7 @@ Equipment ItemCategory = Equipment # Stat Values of the item based on Enhancement level. - # See ItemSets.txt for valid stat names + # See ItemStats.txt for valid stat names # Attack Speed Increase reduces Cooldown of LeftClick Attacks (0.1 sec in this case) StatValues = Attack,Crit Rate,Attack Spd StatValues[0] = 89,5,0.1 diff --git a/Crawler/assets/config/items/items.txt b/Adventures in Lestoria/assets/config/items/items.txt similarity index 97% rename from Crawler/assets/config/items/items.txt rename to Adventures in Lestoria/assets/config/items/items.txt index c5da2ea6..86694c8a 100644 --- a/Crawler/assets/config/items/items.txt +++ b/Adventures in Lestoria/assets/config/items/items.txt @@ -5,6 +5,7 @@ ItemConfiguration Item Categories = ItemCategory.txt Equipment = Equipment.txt Weapons = Weapons.txt + Accessories = Accessories.txt } Item { diff --git a/Crawler/assets/config/levels.txt b/Adventures in Lestoria/assets/config/levels.txt similarity index 100% rename from Crawler/assets/config/levels.txt rename to Adventures in Lestoria/assets/config/levels.txt diff --git a/Crawler/assets/config/shops/Chapter 1 Merchants.txt b/Adventures in Lestoria/assets/config/shops/Chapter 1 Merchants.txt similarity index 100% rename from Crawler/assets/config/shops/Chapter 1 Merchants.txt rename to Adventures in Lestoria/assets/config/shops/Chapter 1 Merchants.txt diff --git a/Crawler/assets/config/shops/Chapter 2 Merchants.txt b/Adventures in Lestoria/assets/config/shops/Chapter 2 Merchants.txt similarity index 100% rename from Crawler/assets/config/shops/Chapter 2 Merchants.txt rename to Adventures in Lestoria/assets/config/shops/Chapter 2 Merchants.txt diff --git a/Crawler/assets/config/shops/Chapter 3 Merchants.txt b/Adventures in Lestoria/assets/config/shops/Chapter 3 Merchants.txt similarity index 100% rename from Crawler/assets/config/shops/Chapter 3 Merchants.txt rename to Adventures in Lestoria/assets/config/shops/Chapter 3 Merchants.txt diff --git a/Crawler/assets/config/shops/Chapter 4 Merchants.txt b/Adventures in Lestoria/assets/config/shops/Chapter 4 Merchants.txt similarity index 100% rename from Crawler/assets/config/shops/Chapter 4 Merchants.txt rename to Adventures in Lestoria/assets/config/shops/Chapter 4 Merchants.txt diff --git a/Crawler/assets/config/shops/Chapter 5 Merchants.txt b/Adventures in Lestoria/assets/config/shops/Chapter 5 Merchants.txt similarity index 100% rename from Crawler/assets/config/shops/Chapter 5 Merchants.txt rename to Adventures in Lestoria/assets/config/shops/Chapter 5 Merchants.txt diff --git a/Crawler/assets/config/shops/Chapter 6 Merchants.txt b/Adventures in Lestoria/assets/config/shops/Chapter 6 Merchants.txt similarity index 100% rename from Crawler/assets/config/shops/Chapter 6 Merchants.txt rename to Adventures in Lestoria/assets/config/shops/Chapter 6 Merchants.txt diff --git a/Crawler/assets/config/story/Chapter 1.txt b/Adventures in Lestoria/assets/config/story/Chapter 1.txt similarity index 100% rename from Crawler/assets/config/story/Chapter 1.txt rename to Adventures in Lestoria/assets/config/story/Chapter 1.txt diff --git a/Crawler/assets/config/story/Chapter 2.txt b/Adventures in Lestoria/assets/config/story/Chapter 2.txt similarity index 100% rename from Crawler/assets/config/story/Chapter 2.txt rename to Adventures in Lestoria/assets/config/story/Chapter 2.txt diff --git a/Crawler/assets/config/story/Chapter 3.txt b/Adventures in Lestoria/assets/config/story/Chapter 3.txt similarity index 100% rename from Crawler/assets/config/story/Chapter 3.txt rename to Adventures in Lestoria/assets/config/story/Chapter 3.txt diff --git a/Crawler/assets/config/story/Chapter 4.txt b/Adventures in Lestoria/assets/config/story/Chapter 4.txt similarity index 100% rename from Crawler/assets/config/story/Chapter 4.txt rename to Adventures in Lestoria/assets/config/story/Chapter 4.txt diff --git a/Crawler/assets/config/story/Chapter 5.txt b/Adventures in Lestoria/assets/config/story/Chapter 5.txt similarity index 100% rename from Crawler/assets/config/story/Chapter 5.txt rename to Adventures in Lestoria/assets/config/story/Chapter 5.txt diff --git a/Crawler/assets/config/story/Chapter 6.txt b/Adventures in Lestoria/assets/config/story/Chapter 6.txt similarity index 100% rename from Crawler/assets/config/story/Chapter 6.txt rename to Adventures in Lestoria/assets/config/story/Chapter 6.txt diff --git a/Crawler/assets/currency_coin.png b/Adventures in Lestoria/assets/currency_coin.png similarity index 100% rename from Crawler/assets/currency_coin.png rename to Adventures in Lestoria/assets/currency_coin.png diff --git a/Adventures in Lestoria/assets/discordAPI.txt b/Adventures in Lestoria/assets/discordAPI.txt new file mode 100644 index 00000000..27be8398 --- /dev/null +++ b/Adventures in Lestoria/assets/discordAPI.txt @@ -0,0 +1,2 @@ +1186719371750555780 +ba6ced47d0237601de28b81f69a0850723f613dc1f2b2ccefb7365eab9131b96 \ No newline at end of file diff --git a/Crawler/assets/energy_bolt.png b/Adventures in Lestoria/assets/energy_bolt.png similarity index 100% rename from Crawler/assets/energy_bolt.png rename to Adventures in Lestoria/assets/energy_bolt.png diff --git a/Crawler/assets/energy_particle.png b/Adventures in Lestoria/assets/energy_particle.png similarity index 100% rename from Crawler/assets/energy_particle.png rename to Adventures in Lestoria/assets/energy_particle.png diff --git a/Crawler/assets/finishring.png b/Adventures in Lestoria/assets/finishring.png similarity index 100% rename from Crawler/assets/finishring.png rename to Adventures in Lestoria/assets/finishring.png diff --git a/Crawler/assets/finishring_green.png b/Adventures in Lestoria/assets/finishring_green.png similarity index 100% rename from Crawler/assets/finishring_green.png rename to Adventures in Lestoria/assets/finishring_green.png diff --git a/Crawler/assets/fire_ring0.png b/Adventures in Lestoria/assets/fire_ring0.png similarity index 100% rename from Crawler/assets/fire_ring0.png rename to Adventures in Lestoria/assets/fire_ring0.png diff --git a/Crawler/assets/fire_ring1.png b/Adventures in Lestoria/assets/fire_ring1.png similarity index 100% rename from Crawler/assets/fire_ring1.png rename to Adventures in Lestoria/assets/fire_ring1.png diff --git a/Crawler/assets/fire_ring2.png b/Adventures in Lestoria/assets/fire_ring2.png similarity index 100% rename from Crawler/assets/fire_ring2.png rename to Adventures in Lestoria/assets/fire_ring2.png diff --git a/Crawler/assets/fire_ring3.png b/Adventures in Lestoria/assets/fire_ring3.png similarity index 100% rename from Crawler/assets/fire_ring3.png rename to Adventures in Lestoria/assets/fire_ring3.png diff --git a/Crawler/assets/fire_ring4.png b/Adventures in Lestoria/assets/fire_ring4.png similarity index 100% rename from Crawler/assets/fire_ring4.png rename to Adventures in Lestoria/assets/fire_ring4.png diff --git a/Crawler/assets/ground-slam-attack-back.png b/Adventures in Lestoria/assets/ground-slam-attack-back.png similarity index 100% rename from Crawler/assets/ground-slam-attack-back.png rename to Adventures in Lestoria/assets/ground-slam-attack-back.png diff --git a/Crawler/assets/ground-slam-attack-front.png b/Adventures in Lestoria/assets/ground-slam-attack-front.png similarity index 100% rename from Crawler/assets/ground-slam-attack-front.png rename to Adventures in Lestoria/assets/ground-slam-attack-front.png diff --git a/Adventures in Lestoria/assets/heart.ico b/Adventures in Lestoria/assets/heart.ico new file mode 100644 index 00000000..bda3c537 Binary files /dev/null and b/Adventures in Lestoria/assets/heart.ico differ diff --git a/Crawler/assets/heart.png b/Adventures in Lestoria/assets/heart.png similarity index 100% rename from Crawler/assets/heart.png rename to Adventures in Lestoria/assets/heart.png diff --git a/Crawler/assets/heart_512.png b/Adventures in Lestoria/assets/heart_512.png similarity index 100% rename from Crawler/assets/heart_512.png rename to Adventures in Lestoria/assets/heart_512.png diff --git a/Crawler/assets/items/Bandages.png b/Adventures in Lestoria/assets/items/Bandages.png similarity index 100% rename from Crawler/assets/items/Bandages.png rename to Adventures in Lestoria/assets/items/Bandages.png diff --git a/Crawler/assets/items/Bear Blood.png b/Adventures in Lestoria/assets/items/Bear Blood.png similarity index 100% rename from Crawler/assets/items/Bear Blood.png rename to Adventures in Lestoria/assets/items/Bear Blood.png diff --git a/Crawler/assets/items/Bear Claw.png b/Adventures in Lestoria/assets/items/Bear Claw.png similarity index 100% rename from Crawler/assets/items/Bear Claw.png rename to Adventures in Lestoria/assets/items/Bear Claw.png diff --git a/Crawler/assets/items/Berries.png b/Adventures in Lestoria/assets/items/Berries.png similarity index 100% rename from Crawler/assets/items/Berries.png rename to Adventures in Lestoria/assets/items/Berries.png diff --git a/Crawler/assets/items/Blue Slime Remains.png b/Adventures in Lestoria/assets/items/Blue Slime Remains.png similarity index 100% rename from Crawler/assets/items/Blue Slime Remains.png rename to Adventures in Lestoria/assets/items/Blue Slime Remains.png diff --git a/Crawler/assets/items/Bone Armor.png b/Adventures in Lestoria/assets/items/Bone Armor.png similarity index 100% rename from Crawler/assets/items/Bone Armor.png rename to Adventures in Lestoria/assets/items/Bone Armor.png diff --git a/Crawler/assets/items/Bone Bow.png b/Adventures in Lestoria/assets/items/Bone Bow.png similarity index 100% rename from Crawler/assets/items/Bone Bow.png rename to Adventures in Lestoria/assets/items/Bone Bow.png diff --git a/Crawler/assets/items/Bone Gloves.png b/Adventures in Lestoria/assets/items/Bone Gloves.png similarity index 100% rename from Crawler/assets/items/Bone Gloves.png rename to Adventures in Lestoria/assets/items/Bone Gloves.png diff --git a/Crawler/assets/items/Bone Helmet.png b/Adventures in Lestoria/assets/items/Bone Helmet.png similarity index 100% rename from Crawler/assets/items/Bone Helmet.png rename to Adventures in Lestoria/assets/items/Bone Helmet.png diff --git a/Crawler/assets/items/Bone Pants.png b/Adventures in Lestoria/assets/items/Bone Pants.png similarity index 100% rename from Crawler/assets/items/Bone Pants.png rename to Adventures in Lestoria/assets/items/Bone Pants.png diff --git a/Crawler/assets/items/Bone Shoes.png b/Adventures in Lestoria/assets/items/Bone Shoes.png similarity index 100% rename from Crawler/assets/items/Bone Shoes.png rename to Adventures in Lestoria/assets/items/Bone Shoes.png diff --git a/Crawler/assets/items/Bone Staff.png b/Adventures in Lestoria/assets/items/Bone Staff.png similarity index 100% rename from Crawler/assets/items/Bone Staff.png rename to Adventures in Lestoria/assets/items/Bone Staff.png diff --git a/Crawler/assets/items/Bone Sword.png b/Adventures in Lestoria/assets/items/Bone Sword.png similarity index 100% rename from Crawler/assets/items/Bone Sword.png rename to Adventures in Lestoria/assets/items/Bone Sword.png diff --git a/Crawler/assets/items/Copper Armor.png b/Adventures in Lestoria/assets/items/Copper Armor.png similarity index 100% rename from Crawler/assets/items/Copper Armor.png rename to Adventures in Lestoria/assets/items/Copper Armor.png diff --git a/Crawler/assets/items/Copper Gloves.png b/Adventures in Lestoria/assets/items/Copper Gloves.png similarity index 100% rename from Crawler/assets/items/Copper Gloves.png rename to Adventures in Lestoria/assets/items/Copper Gloves.png diff --git a/Crawler/assets/items/Copper Helmet.png b/Adventures in Lestoria/assets/items/Copper Helmet.png similarity index 100% rename from Crawler/assets/items/Copper Helmet.png rename to Adventures in Lestoria/assets/items/Copper Helmet.png diff --git a/Crawler/assets/items/Copper Pants.png b/Adventures in Lestoria/assets/items/Copper Pants.png similarity index 100% rename from Crawler/assets/items/Copper Pants.png rename to Adventures in Lestoria/assets/items/Copper Pants.png diff --git a/Crawler/assets/items/Copper Shoes.png b/Adventures in Lestoria/assets/items/Copper Shoes.png similarity index 100% rename from Crawler/assets/items/Copper Shoes.png rename to Adventures in Lestoria/assets/items/Copper Shoes.png diff --git a/Crawler/assets/items/Dummy Item 1.png b/Adventures in Lestoria/assets/items/Dummy Item 1.png similarity index 100% rename from Crawler/assets/items/Dummy Item 1.png rename to Adventures in Lestoria/assets/items/Dummy Item 1.png diff --git a/Crawler/assets/items/Dummy Item 10.png b/Adventures in Lestoria/assets/items/Dummy Item 10.png similarity index 100% rename from Crawler/assets/items/Dummy Item 10.png rename to Adventures in Lestoria/assets/items/Dummy Item 10.png diff --git a/Crawler/assets/items/Dummy Item 11.png b/Adventures in Lestoria/assets/items/Dummy Item 11.png similarity index 100% rename from Crawler/assets/items/Dummy Item 11.png rename to Adventures in Lestoria/assets/items/Dummy Item 11.png diff --git a/Crawler/assets/items/Dummy Item 12.png b/Adventures in Lestoria/assets/items/Dummy Item 12.png similarity index 100% rename from Crawler/assets/items/Dummy Item 12.png rename to Adventures in Lestoria/assets/items/Dummy Item 12.png diff --git a/Crawler/assets/items/Dummy Item 13.png b/Adventures in Lestoria/assets/items/Dummy Item 13.png similarity index 100% rename from Crawler/assets/items/Dummy Item 13.png rename to Adventures in Lestoria/assets/items/Dummy Item 13.png diff --git a/Crawler/assets/items/Dummy Item 14.png b/Adventures in Lestoria/assets/items/Dummy Item 14.png similarity index 100% rename from Crawler/assets/items/Dummy Item 14.png rename to Adventures in Lestoria/assets/items/Dummy Item 14.png diff --git a/Crawler/assets/items/Dummy Item 15.png b/Adventures in Lestoria/assets/items/Dummy Item 15.png similarity index 100% rename from Crawler/assets/items/Dummy Item 15.png rename to Adventures in Lestoria/assets/items/Dummy Item 15.png diff --git a/Crawler/assets/items/Dummy Item 16.png b/Adventures in Lestoria/assets/items/Dummy Item 16.png similarity index 100% rename from Crawler/assets/items/Dummy Item 16.png rename to Adventures in Lestoria/assets/items/Dummy Item 16.png diff --git a/Crawler/assets/items/Dummy Item 17.png b/Adventures in Lestoria/assets/items/Dummy Item 17.png similarity index 100% rename from Crawler/assets/items/Dummy Item 17.png rename to Adventures in Lestoria/assets/items/Dummy Item 17.png diff --git a/Crawler/assets/items/Dummy Item 18.png b/Adventures in Lestoria/assets/items/Dummy Item 18.png similarity index 100% rename from Crawler/assets/items/Dummy Item 18.png rename to Adventures in Lestoria/assets/items/Dummy Item 18.png diff --git a/Crawler/assets/items/Dummy Item 19.png b/Adventures in Lestoria/assets/items/Dummy Item 19.png similarity index 100% rename from Crawler/assets/items/Dummy Item 19.png rename to Adventures in Lestoria/assets/items/Dummy Item 19.png diff --git a/Crawler/assets/items/Dummy Item 2.png b/Adventures in Lestoria/assets/items/Dummy Item 2.png similarity index 100% rename from Crawler/assets/items/Dummy Item 2.png rename to Adventures in Lestoria/assets/items/Dummy Item 2.png diff --git a/Crawler/assets/items/Dummy Item 20.png b/Adventures in Lestoria/assets/items/Dummy Item 20.png similarity index 100% rename from Crawler/assets/items/Dummy Item 20.png rename to Adventures in Lestoria/assets/items/Dummy Item 20.png diff --git a/Crawler/assets/items/Dummy Item 3.png b/Adventures in Lestoria/assets/items/Dummy Item 3.png similarity index 100% rename from Crawler/assets/items/Dummy Item 3.png rename to Adventures in Lestoria/assets/items/Dummy Item 3.png diff --git a/Crawler/assets/items/Dummy Item 4.png b/Adventures in Lestoria/assets/items/Dummy Item 4.png similarity index 100% rename from Crawler/assets/items/Dummy Item 4.png rename to Adventures in Lestoria/assets/items/Dummy Item 4.png diff --git a/Crawler/assets/items/Dummy Item 5.png b/Adventures in Lestoria/assets/items/Dummy Item 5.png similarity index 100% rename from Crawler/assets/items/Dummy Item 5.png rename to Adventures in Lestoria/assets/items/Dummy Item 5.png diff --git a/Crawler/assets/items/Dummy Item 6.png b/Adventures in Lestoria/assets/items/Dummy Item 6.png similarity index 100% rename from Crawler/assets/items/Dummy Item 6.png rename to Adventures in Lestoria/assets/items/Dummy Item 6.png diff --git a/Crawler/assets/items/Dummy Item 7.png b/Adventures in Lestoria/assets/items/Dummy Item 7.png similarity index 100% rename from Crawler/assets/items/Dummy Item 7.png rename to Adventures in Lestoria/assets/items/Dummy Item 7.png diff --git a/Crawler/assets/items/Dummy Item 8.png b/Adventures in Lestoria/assets/items/Dummy Item 8.png similarity index 100% rename from Crawler/assets/items/Dummy Item 8.png rename to Adventures in Lestoria/assets/items/Dummy Item 8.png diff --git a/Crawler/assets/items/Dummy Item 9.png b/Adventures in Lestoria/assets/items/Dummy Item 9.png similarity index 100% rename from Crawler/assets/items/Dummy Item 9.png rename to Adventures in Lestoria/assets/items/Dummy Item 9.png diff --git a/Crawler/assets/items/Elixir of Bear Strength.png b/Adventures in Lestoria/assets/items/Elixir of Bear Strength.png similarity index 100% rename from Crawler/assets/items/Elixir of Bear Strength.png rename to Adventures in Lestoria/assets/items/Elixir of Bear Strength.png diff --git a/Crawler/assets/items/Flower Petals.png b/Adventures in Lestoria/assets/items/Flower Petals.png similarity index 100% rename from Crawler/assets/items/Flower Petals.png rename to Adventures in Lestoria/assets/items/Flower Petals.png diff --git a/Crawler/assets/items/Frog Skin.png b/Adventures in Lestoria/assets/items/Frog Skin.png similarity index 100% rename from Crawler/assets/items/Frog Skin.png rename to Adventures in Lestoria/assets/items/Frog Skin.png diff --git a/Crawler/assets/items/Green Gemstone.png b/Adventures in Lestoria/assets/items/Green Gemstone.png similarity index 100% rename from Crawler/assets/items/Green Gemstone.png rename to Adventures in Lestoria/assets/items/Green Gemstone.png diff --git a/Crawler/assets/items/Green Slime Remains.png b/Adventures in Lestoria/assets/items/Green Slime Remains.png similarity index 100% rename from Crawler/assets/items/Green Slime Remains.png rename to Adventures in Lestoria/assets/items/Green Slime Remains.png diff --git a/Crawler/assets/items/High-Quality Logs.png b/Adventures in Lestoria/assets/items/High-Quality Logs.png similarity index 100% rename from Crawler/assets/items/High-Quality Logs.png rename to Adventures in Lestoria/assets/items/High-Quality Logs.png diff --git a/Crawler/assets/items/Large Health Potion.png b/Adventures in Lestoria/assets/items/Large Health Potion.png similarity index 100% rename from Crawler/assets/items/Large Health Potion.png rename to Adventures in Lestoria/assets/items/Large Health Potion.png diff --git a/Crawler/assets/items/Large Mana Potion.png b/Adventures in Lestoria/assets/items/Large Mana Potion.png similarity index 100% rename from Crawler/assets/items/Large Mana Potion.png rename to Adventures in Lestoria/assets/items/Large Mana Potion.png diff --git a/Crawler/assets/items/Laser Sword.png b/Adventures in Lestoria/assets/items/Laser Sword.png similarity index 100% rename from Crawler/assets/items/Laser Sword.png rename to Adventures in Lestoria/assets/items/Laser Sword.png diff --git a/Crawler/assets/items/Leather Armor.png b/Adventures in Lestoria/assets/items/Leather Armor.png similarity index 100% rename from Crawler/assets/items/Leather Armor.png rename to Adventures in Lestoria/assets/items/Leather Armor.png diff --git a/Crawler/assets/items/Leather Gloves.png b/Adventures in Lestoria/assets/items/Leather Gloves.png similarity index 100% rename from Crawler/assets/items/Leather Gloves.png rename to Adventures in Lestoria/assets/items/Leather Gloves.png diff --git a/Crawler/assets/items/Leather Helmet.png b/Adventures in Lestoria/assets/items/Leather Helmet.png similarity index 100% rename from Crawler/assets/items/Leather Helmet.png rename to Adventures in Lestoria/assets/items/Leather Helmet.png diff --git a/Crawler/assets/items/Leather Pants.png b/Adventures in Lestoria/assets/items/Leather Pants.png similarity index 100% rename from Crawler/assets/items/Leather Pants.png rename to Adventures in Lestoria/assets/items/Leather Pants.png diff --git a/Crawler/assets/items/Leather Shoes.png b/Adventures in Lestoria/assets/items/Leather Shoes.png similarity index 100% rename from Crawler/assets/items/Leather Shoes.png rename to Adventures in Lestoria/assets/items/Leather Shoes.png diff --git a/Crawler/assets/items/Logs.png b/Adventures in Lestoria/assets/items/Logs.png similarity index 100% rename from Crawler/assets/items/Logs.png rename to Adventures in Lestoria/assets/items/Logs.png diff --git a/Crawler/assets/items/Medium Health Potion.png b/Adventures in Lestoria/assets/items/Medium Health Potion.png similarity index 100% rename from Crawler/assets/items/Medium Health Potion.png rename to Adventures in Lestoria/assets/items/Medium Health Potion.png diff --git a/Crawler/assets/items/Medium Mana Potion.png b/Adventures in Lestoria/assets/items/Medium Mana Potion.png similarity index 100% rename from Crawler/assets/items/Medium Mana Potion.png rename to Adventures in Lestoria/assets/items/Medium Mana Potion.png diff --git a/Crawler/assets/items/Minor Health Potion.png b/Adventures in Lestoria/assets/items/Minor Health Potion.png similarity index 100% rename from Crawler/assets/items/Minor Health Potion.png rename to Adventures in Lestoria/assets/items/Minor Health Potion.png diff --git a/Crawler/assets/items/Minor Mana Potion.png b/Adventures in Lestoria/assets/items/Minor Mana Potion.png similarity index 100% rename from Crawler/assets/items/Minor Mana Potion.png rename to Adventures in Lestoria/assets/items/Minor Mana Potion.png diff --git a/Crawler/assets/items/Minor Recovery Potion.png b/Adventures in Lestoria/assets/items/Minor Recovery Potion.png similarity index 100% rename from Crawler/assets/items/Minor Recovery Potion.png rename to Adventures in Lestoria/assets/items/Minor Recovery Potion.png diff --git a/Crawler/assets/items/Pile of Coins.png b/Adventures in Lestoria/assets/items/Pile of Coins.png similarity index 100% rename from Crawler/assets/items/Pile of Coins.png rename to Adventures in Lestoria/assets/items/Pile of Coins.png diff --git a/Crawler/assets/items/Plasma Bow.png b/Adventures in Lestoria/assets/items/Plasma Bow.png similarity index 100% rename from Crawler/assets/items/Plasma Bow.png rename to Adventures in Lestoria/assets/items/Plasma Bow.png diff --git a/Crawler/assets/items/Red Slime Remains.png b/Adventures in Lestoria/assets/items/Red Slime Remains.png similarity index 100% rename from Crawler/assets/items/Red Slime Remains.png rename to Adventures in Lestoria/assets/items/Red Slime Remains.png diff --git a/Adventures in Lestoria/assets/items/Ring of the Bear.png b/Adventures in Lestoria/assets/items/Ring of the Bear.png new file mode 100644 index 00000000..fc470d45 Binary files /dev/null and b/Adventures in Lestoria/assets/items/Ring of the Bear.png differ diff --git a/Adventures in Lestoria/assets/items/Ring of the Slime King.png b/Adventures in Lestoria/assets/items/Ring of the Slime King.png new file mode 100644 index 00000000..a66e6b99 Binary files /dev/null and b/Adventures in Lestoria/assets/items/Ring of the Slime King.png differ diff --git a/Adventures in Lestoria/assets/items/Ring.png b/Adventures in Lestoria/assets/items/Ring.png new file mode 100644 index 00000000..90476243 Binary files /dev/null and b/Adventures in Lestoria/assets/items/Ring.png differ diff --git a/Crawler/assets/items/Shell Armor.png b/Adventures in Lestoria/assets/items/Shell Armor.png similarity index 100% rename from Crawler/assets/items/Shell Armor.png rename to Adventures in Lestoria/assets/items/Shell Armor.png diff --git a/Crawler/assets/items/Shell Bow.png b/Adventures in Lestoria/assets/items/Shell Bow.png similarity index 100% rename from Crawler/assets/items/Shell Bow.png rename to Adventures in Lestoria/assets/items/Shell Bow.png diff --git a/Crawler/assets/items/Shell Gloves.png b/Adventures in Lestoria/assets/items/Shell Gloves.png similarity index 100% rename from Crawler/assets/items/Shell Gloves.png rename to Adventures in Lestoria/assets/items/Shell Gloves.png diff --git a/Crawler/assets/items/Shell Helmet.png b/Adventures in Lestoria/assets/items/Shell Helmet.png similarity index 100% rename from Crawler/assets/items/Shell Helmet.png rename to Adventures in Lestoria/assets/items/Shell Helmet.png diff --git a/Crawler/assets/items/Shell Pants.png b/Adventures in Lestoria/assets/items/Shell Pants.png similarity index 100% rename from Crawler/assets/items/Shell Pants.png rename to Adventures in Lestoria/assets/items/Shell Pants.png diff --git a/Crawler/assets/items/Shell Shoes.png b/Adventures in Lestoria/assets/items/Shell Shoes.png similarity index 100% rename from Crawler/assets/items/Shell Shoes.png rename to Adventures in Lestoria/assets/items/Shell Shoes.png diff --git a/Crawler/assets/items/Shell Staff.png b/Adventures in Lestoria/assets/items/Shell Staff.png similarity index 100% rename from Crawler/assets/items/Shell Staff.png rename to Adventures in Lestoria/assets/items/Shell Staff.png diff --git a/Crawler/assets/items/Shell Sword.png b/Adventures in Lestoria/assets/items/Shell Sword.png similarity index 100% rename from Crawler/assets/items/Shell Sword.png rename to Adventures in Lestoria/assets/items/Shell Sword.png diff --git a/Crawler/assets/items/Steel Bow.png b/Adventures in Lestoria/assets/items/Steel Bow.png similarity index 100% rename from Crawler/assets/items/Steel Bow.png rename to Adventures in Lestoria/assets/items/Steel Bow.png diff --git a/Crawler/assets/items/Steel Staff.png b/Adventures in Lestoria/assets/items/Steel Staff.png similarity index 100% rename from Crawler/assets/items/Steel Staff.png rename to Adventures in Lestoria/assets/items/Steel Staff.png diff --git a/Crawler/assets/items/Steel Sword.png b/Adventures in Lestoria/assets/items/Steel Sword.png similarity index 100% rename from Crawler/assets/items/Steel Sword.png rename to Adventures in Lestoria/assets/items/Steel Sword.png diff --git a/Crawler/assets/items/Unknown Staff.png b/Adventures in Lestoria/assets/items/Unknown Staff.png similarity index 100% rename from Crawler/assets/items/Unknown Staff.png rename to Adventures in Lestoria/assets/items/Unknown Staff.png diff --git a/Crawler/assets/items/Wolf Skin.png b/Adventures in Lestoria/assets/items/Wolf Skin.png similarity index 100% rename from Crawler/assets/items/Wolf Skin.png rename to Adventures in Lestoria/assets/items/Wolf Skin.png diff --git a/Crawler/assets/items/Wooden Bow.png b/Adventures in Lestoria/assets/items/Wooden Bow.png similarity index 100% rename from Crawler/assets/items/Wooden Bow.png rename to Adventures in Lestoria/assets/items/Wooden Bow.png diff --git a/Crawler/assets/items/Wooden Staff.png b/Adventures in Lestoria/assets/items/Wooden Staff.png similarity index 100% rename from Crawler/assets/items/Wooden Staff.png rename to Adventures in Lestoria/assets/items/Wooden Staff.png diff --git a/Crawler/assets/items/Wooden Sword.png b/Adventures in Lestoria/assets/items/Wooden Sword.png similarity index 100% rename from Crawler/assets/items/Wooden Sword.png rename to Adventures in Lestoria/assets/items/Wooden Sword.png diff --git a/Crawler/assets/items/Yellow Slime Remains.png b/Adventures in Lestoria/assets/items/Yellow Slime Remains.png similarity index 100% rename from Crawler/assets/items/Yellow Slime Remains.png rename to Adventures in Lestoria/assets/items/Yellow Slime Remains.png diff --git a/Crawler/assets/kiwami64-v1-1x.png b/Adventures in Lestoria/assets/kiwami64-v1-1x.png similarity index 100% rename from Crawler/assets/kiwami64-v1-1x.png rename to Adventures in Lestoria/assets/kiwami64-v1-1x.png diff --git a/Crawler/assets/knight_full.png b/Adventures in Lestoria/assets/knight_full.png similarity index 100% rename from Crawler/assets/knight_full.png rename to Adventures in Lestoria/assets/knight_full.png diff --git a/Crawler/assets/knight_full2.png b/Adventures in Lestoria/assets/knight_full2.png similarity index 100% rename from Crawler/assets/knight_full2.png rename to Adventures in Lestoria/assets/knight_full2.png diff --git a/Crawler/assets/knight_full3.png b/Adventures in Lestoria/assets/knight_full3.png similarity index 100% rename from Crawler/assets/knight_full3.png rename to Adventures in Lestoria/assets/knight_full3.png diff --git a/Crawler/assets/knight_full_render1.png b/Adventures in Lestoria/assets/knight_full_render1.png similarity index 100% rename from Crawler/assets/knight_full_render1.png rename to Adventures in Lestoria/assets/knight_full_render1.png diff --git a/Crawler/assets/laser.png b/Adventures in Lestoria/assets/laser.png similarity index 100% rename from Crawler/assets/laser.png rename to Adventures in Lestoria/assets/laser.png diff --git a/Crawler/assets/lightning_bolt.png b/Adventures in Lestoria/assets/lightning_bolt.png similarity index 100% rename from Crawler/assets/lightning_bolt.png rename to Adventures in Lestoria/assets/lightning_bolt.png diff --git a/Crawler/assets/lightning_bolt_part1.png b/Adventures in Lestoria/assets/lightning_bolt_part1.png similarity index 100% rename from Crawler/assets/lightning_bolt_part1.png rename to Adventures in Lestoria/assets/lightning_bolt_part1.png diff --git a/Crawler/assets/lightning_bolt_part2.png b/Adventures in Lestoria/assets/lightning_bolt_part2.png similarity index 100% rename from Crawler/assets/lightning_bolt_part2.png rename to Adventures in Lestoria/assets/lightning_bolt_part2.png diff --git a/Crawler/assets/lightning_bolt_part3.png b/Adventures in Lestoria/assets/lightning_bolt_part3.png similarity index 100% rename from Crawler/assets/lightning_bolt_part3.png rename to Adventures in Lestoria/assets/lightning_bolt_part3.png diff --git a/Crawler/assets/lightning_bolt_part4.png b/Adventures in Lestoria/assets/lightning_bolt_part4.png similarity index 100% rename from Crawler/assets/lightning_bolt_part4.png rename to Adventures in Lestoria/assets/lightning_bolt_part4.png diff --git a/Crawler/assets/lightning_splash_effect.png b/Adventures in Lestoria/assets/lightning_splash_effect.png similarity index 100% rename from Crawler/assets/lightning_splash_effect.png rename to Adventures in Lestoria/assets/lightning_splash_effect.png diff --git a/Crawler/assets/mana.png b/Adventures in Lestoria/assets/mana.png similarity index 100% rename from Crawler/assets/mana.png rename to Adventures in Lestoria/assets/mana.png diff --git a/Crawler/assets/maps/24x24_Waterfall.tsx b/Adventures in Lestoria/assets/maps/24x24_Waterfall.tsx similarity index 100% rename from Crawler/assets/maps/24x24_Waterfall.tsx rename to Adventures in Lestoria/assets/maps/24x24_Waterfall.tsx diff --git a/Crawler/assets/maps/Decorations_c1_No_Shadow24x24.tsx b/Adventures in Lestoria/assets/maps/Decorations_c1_No_Shadow24x24.tsx similarity index 100% rename from Crawler/assets/maps/Decorations_c1_No_Shadow24x24.tsx rename to Adventures in Lestoria/assets/maps/Decorations_c1_No_Shadow24x24.tsx diff --git a/Crawler/assets/maps/Forge_No_Shadow_24x24.tsx b/Adventures in Lestoria/assets/maps/Forge_No_Shadow_24x24.tsx similarity index 100% rename from Crawler/assets/maps/Forge_No_Shadow_24x24.tsx rename to Adventures in Lestoria/assets/maps/Forge_No_Shadow_24x24.tsx diff --git a/Crawler/assets/maps/Minifantasy_TinyOverworldAllProps.tsx b/Adventures in Lestoria/assets/maps/Minifantasy_TinyOverworldAllProps.tsx similarity index 100% rename from Crawler/assets/maps/Minifantasy_TinyOverworldAllProps.tsx rename to Adventures in Lestoria/assets/maps/Minifantasy_TinyOverworldAllProps.tsx diff --git a/Crawler/assets/maps/Minifantasy_TinyOverworldAllTiles.tsx b/Adventures in Lestoria/assets/maps/Minifantasy_TinyOverworldAllTiles.tsx similarity index 100% rename from Crawler/assets/maps/Minifantasy_TinyOverworldAllTiles.tsx rename to Adventures in Lestoria/assets/maps/Minifantasy_TinyOverworldAllTiles.tsx diff --git a/Crawler/assets/maps/Minifantasy_TinyOverworldConstructions.tsx b/Adventures in Lestoria/assets/maps/Minifantasy_TinyOverworldConstructions.tsx similarity index 100% rename from Crawler/assets/maps/Minifantasy_TinyOverworldConstructions.tsx rename to Adventures in Lestoria/assets/maps/Minifantasy_TinyOverworldConstructions.tsx diff --git a/Crawler/assets/maps/No_Shadow_Campfire_24x24.tsx b/Adventures in Lestoria/assets/maps/No_Shadow_Campfire_24x24.tsx similarity index 100% rename from Crawler/assets/maps/No_Shadow_Campfire_24x24.tsx rename to Adventures in Lestoria/assets/maps/No_Shadow_Campfire_24x24.tsx diff --git a/Crawler/assets/maps/Stage_Plate.png b/Adventures in Lestoria/assets/maps/Stage_Plate.png similarity index 100% rename from Crawler/assets/maps/Stage_Plate.png rename to Adventures in Lestoria/assets/maps/Stage_Plate.png diff --git a/Crawler/assets/maps/Stage_Plate.tsx b/Adventures in Lestoria/assets/maps/Stage_Plate.tsx similarity index 100% rename from Crawler/assets/maps/Stage_Plate.tsx rename to Adventures in Lestoria/assets/maps/Stage_Plate.tsx diff --git a/Crawler/assets/maps/Tile_Presets.tmx b/Adventures in Lestoria/assets/maps/Tile_Presets.tmx similarity index 100% rename from Crawler/assets/maps/Tile_Presets.tmx rename to Adventures in Lestoria/assets/maps/Tile_Presets.tmx diff --git a/Crawler/assets/maps/Tilesheet_No_Shadow24x24.tsx b/Adventures in Lestoria/assets/maps/Tilesheet_No_Shadow24x24.tsx similarity index 100% rename from Crawler/assets/maps/Tilesheet_No_Shadow24x24.tsx rename to Adventures in Lestoria/assets/maps/Tilesheet_No_Shadow24x24.tsx diff --git a/Crawler/assets/maps/grid_Props_No_Shadow_24x24.tsx b/Adventures in Lestoria/assets/maps/grid_Props_No_Shadow_24x24.tsx similarity index 100% rename from Crawler/assets/maps/grid_Props_No_Shadow_24x24.tsx rename to Adventures in Lestoria/assets/maps/grid_Props_No_Shadow_24x24.tsx diff --git a/Crawler/assets/menus/Character_Info.png b/Adventures in Lestoria/assets/menus/Character_Info.png similarity index 100% rename from Crawler/assets/menus/Character_Info.png rename to Adventures in Lestoria/assets/menus/Character_Info.png diff --git a/Crawler/assets/meteor.png b/Adventures in Lestoria/assets/meteor.png similarity index 100% rename from Crawler/assets/meteor.png rename to Adventures in Lestoria/assets/meteor.png diff --git a/Crawler/assets/meteor.xcf b/Adventures in Lestoria/assets/meteor.xcf similarity index 100% rename from Crawler/assets/meteor.xcf rename to Adventures in Lestoria/assets/meteor.xcf diff --git a/Crawler/assets/money.png b/Adventures in Lestoria/assets/money.png similarity index 100% rename from Crawler/assets/money.png rename to Adventures in Lestoria/assets/money.png diff --git a/Crawler/assets/monsters/Blue Slime.png b/Adventures in Lestoria/assets/monsters/Blue Slime.png similarity index 100% rename from Crawler/assets/monsters/Blue Slime.png rename to Adventures in Lestoria/assets/monsters/Blue Slime.png diff --git a/Crawler/assets/monsters/Flower Turret.png b/Adventures in Lestoria/assets/monsters/Flower Turret.png similarity index 100% rename from Crawler/assets/monsters/Flower Turret.png rename to Adventures in Lestoria/assets/monsters/Flower Turret.png diff --git a/Crawler/assets/monsters/Flower Turret.xcf b/Adventures in Lestoria/assets/monsters/Flower Turret.xcf similarity index 100% rename from Crawler/assets/monsters/Flower Turret.xcf rename to Adventures in Lestoria/assets/monsters/Flower Turret.xcf diff --git a/Crawler/assets/monsters/Green Slime.png b/Adventures in Lestoria/assets/monsters/Green Slime.png similarity index 100% rename from Crawler/assets/monsters/Green Slime.png rename to Adventures in Lestoria/assets/monsters/Green Slime.png diff --git a/Crawler/assets/monsters/Red Slime.png b/Adventures in Lestoria/assets/monsters/Red Slime.png similarity index 100% rename from Crawler/assets/monsters/Red Slime.png rename to Adventures in Lestoria/assets/monsters/Red Slime.png diff --git a/Crawler/assets/monsters/Slime King - Cast.png b/Adventures in Lestoria/assets/monsters/Slime King - Cast.png similarity index 100% rename from Crawler/assets/monsters/Slime King - Cast.png rename to Adventures in Lestoria/assets/monsters/Slime King - Cast.png diff --git a/Crawler/assets/monsters/Slime King.png b/Adventures in Lestoria/assets/monsters/Slime King.png similarity index 100% rename from Crawler/assets/monsters/Slime King.png rename to Adventures in Lestoria/assets/monsters/Slime King.png diff --git a/Crawler/assets/monsters/Slime King.xcf b/Adventures in Lestoria/assets/monsters/Slime King.xcf similarity index 100% rename from Crawler/assets/monsters/Slime King.xcf rename to Adventures in Lestoria/assets/monsters/Slime King.xcf diff --git a/Crawler/assets/monsters/Yellow Slime.png b/Adventures in Lestoria/assets/monsters/Yellow Slime.png similarity index 100% rename from Crawler/assets/monsters/Yellow Slime.png rename to Adventures in Lestoria/assets/monsters/Yellow Slime.png diff --git a/Adventures in Lestoria/assets/music/foresty0.mp3 b/Adventures in Lestoria/assets/music/foresty0.mp3 new file mode 100644 index 00000000..9cfe85ac Binary files /dev/null and b/Adventures in Lestoria/assets/music/foresty0.mp3 differ diff --git a/Adventures in Lestoria/assets/music/foresty0_alt.mp3 b/Adventures in Lestoria/assets/music/foresty0_alt.mp3 new file mode 100644 index 00000000..cb83fcc3 Binary files /dev/null and b/Adventures in Lestoria/assets/music/foresty0_alt.mp3 differ diff --git a/Adventures in Lestoria/assets/music/foresty1_1_1.mp3 b/Adventures in Lestoria/assets/music/foresty1_1_1.mp3 new file mode 100644 index 00000000..8c60a499 Binary files /dev/null and b/Adventures in Lestoria/assets/music/foresty1_1_1.mp3 differ diff --git a/Adventures in Lestoria/assets/music/foresty1_1_2.mp3 b/Adventures in Lestoria/assets/music/foresty1_1_2.mp3 new file mode 100644 index 00000000..61d1e877 Binary files /dev/null and b/Adventures in Lestoria/assets/music/foresty1_1_2.mp3 differ diff --git a/Adventures in Lestoria/assets/music/foresty1_1_alt1.mp3 b/Adventures in Lestoria/assets/music/foresty1_1_alt1.mp3 new file mode 100644 index 00000000..d4363b1a Binary files /dev/null and b/Adventures in Lestoria/assets/music/foresty1_1_alt1.mp3 differ diff --git a/Adventures in Lestoria/assets/music/foresty1_1_alt2.mp3 b/Adventures in Lestoria/assets/music/foresty1_1_alt2.mp3 new file mode 100644 index 00000000..301d81f9 Binary files /dev/null and b/Adventures in Lestoria/assets/music/foresty1_1_alt2.mp3 differ diff --git a/Crawler/assets/nico-Ranger_512.png b/Adventures in Lestoria/assets/nico-Ranger_512.png similarity index 100% rename from Crawler/assets/nico-Ranger_512.png rename to Adventures in Lestoria/assets/nico-Ranger_512.png diff --git a/Crawler/assets/nico-Thief_512.png b/Adventures in Lestoria/assets/nico-Thief_512.png similarity index 100% rename from Crawler/assets/nico-Thief_512.png rename to Adventures in Lestoria/assets/nico-Thief_512.png diff --git a/Crawler/assets/nico-Trapper_512.png b/Adventures in Lestoria/assets/nico-Trapper_512.png similarity index 100% rename from Crawler/assets/nico-Trapper_512.png rename to Adventures in Lestoria/assets/nico-Trapper_512.png diff --git a/Crawler/assets/nico-Warrior_512.png b/Adventures in Lestoria/assets/nico-Warrior_512.png similarity index 100% rename from Crawler/assets/nico-Warrior_512.png rename to Adventures in Lestoria/assets/nico-Warrior_512.png diff --git a/Crawler/assets/nico-Witch_512.png b/Adventures in Lestoria/assets/nico-Witch_512.png similarity index 100% rename from Crawler/assets/nico-Witch_512.png rename to Adventures in Lestoria/assets/nico-Witch_512.png diff --git a/Crawler/assets/nico-Wizard_512.png b/Adventures in Lestoria/assets/nico-Wizard_512.png similarity index 100% rename from Crawler/assets/nico-Wizard_512.png rename to Adventures in Lestoria/assets/nico-Wizard_512.png diff --git a/Crawler/assets/nico-ranger.png b/Adventures in Lestoria/assets/nico-ranger.png similarity index 100% rename from Crawler/assets/nico-ranger.png rename to Adventures in Lestoria/assets/nico-ranger.png diff --git a/Crawler/assets/nico-ranger.xcf b/Adventures in Lestoria/assets/nico-ranger.xcf similarity index 100% rename from Crawler/assets/nico-ranger.xcf rename to Adventures in Lestoria/assets/nico-ranger.xcf diff --git a/Crawler/assets/nico-ranger2.xcf b/Adventures in Lestoria/assets/nico-ranger2.xcf similarity index 100% rename from Crawler/assets/nico-ranger2.xcf rename to Adventures in Lestoria/assets/nico-ranger2.xcf diff --git a/Crawler/assets/nico-warrior.png b/Adventures in Lestoria/assets/nico-warrior.png similarity index 100% rename from Crawler/assets/nico-warrior.png rename to Adventures in Lestoria/assets/nico-warrior.png diff --git a/Crawler/assets/nico-warrior.xcf b/Adventures in Lestoria/assets/nico-warrior.xcf similarity index 100% rename from Crawler/assets/nico-warrior.xcf rename to Adventures in Lestoria/assets/nico-warrior.xcf diff --git a/Crawler/assets/nico-wizard.png b/Adventures in Lestoria/assets/nico-wizard.png similarity index 100% rename from Crawler/assets/nico-wizard.png rename to Adventures in Lestoria/assets/nico-wizard.png diff --git a/Crawler/assets/nico-wizard.xcf b/Adventures in Lestoria/assets/nico-wizard.xcf similarity index 100% rename from Crawler/assets/nico-wizard.xcf rename to Adventures in Lestoria/assets/nico-wizard.xcf diff --git a/Crawler/assets/palette.css b/Adventures in Lestoria/assets/palette.css similarity index 100% rename from Crawler/assets/palette.css rename to Adventures in Lestoria/assets/palette.css diff --git a/Crawler/assets/palette.txt b/Adventures in Lestoria/assets/palette.txt similarity index 100% rename from Crawler/assets/palette.txt rename to Adventures in Lestoria/assets/palette.txt diff --git a/Adventures in Lestoria/assets/pixel.png b/Adventures in Lestoria/assets/pixel.png new file mode 100644 index 00000000..bef5c520 Binary files /dev/null and b/Adventures in Lestoria/assets/pixel.png differ diff --git a/Crawler/assets/propertytypes.xml b/Adventures in Lestoria/assets/propertytypes.xml similarity index 100% rename from Crawler/assets/propertytypes.xml rename to Adventures in Lestoria/assets/propertytypes.xml diff --git a/Crawler/assets/range_indicator.png b/Adventures in Lestoria/assets/range_indicator.png similarity index 100% rename from Crawler/assets/range_indicator.png rename to Adventures in Lestoria/assets/range_indicator.png diff --git a/Crawler/assets/skill_overlay_icon.png b/Adventures in Lestoria/assets/skill_overlay_icon.png similarity index 100% rename from Crawler/assets/skill_overlay_icon.png rename to Adventures in Lestoria/assets/skill_overlay_icon.png diff --git a/Crawler/assets/skill_overlay_icon_overlay.png b/Adventures in Lestoria/assets/skill_overlay_icon_overlay.png similarity index 100% rename from Crawler/assets/skill_overlay_icon_overlay.png rename to Adventures in Lestoria/assets/skill_overlay_icon_overlay.png diff --git a/Crawler/assets/slime.png b/Adventures in Lestoria/assets/slime.png similarity index 100% rename from Crawler/assets/slime.png rename to Adventures in Lestoria/assets/slime.png diff --git a/Crawler/assets/sonicslash.png b/Adventures in Lestoria/assets/sonicslash.png similarity index 100% rename from Crawler/assets/sonicslash.png rename to Adventures in Lestoria/assets/sonicslash.png diff --git a/Adventures in Lestoria/assets/sounds/sfx100v2_loop_water_01.mp3 b/Adventures in Lestoria/assets/sounds/sfx100v2_loop_water_01.mp3 new file mode 100644 index 00000000..3f0bbfb7 Binary files /dev/null and b/Adventures in Lestoria/assets/sounds/sfx100v2_loop_water_01.mp3 differ diff --git a/Crawler/assets/splash_effect.png b/Adventures in Lestoria/assets/splash_effect.png similarity index 100% rename from Crawler/assets/splash_effect.png rename to Adventures in Lestoria/assets/splash_effect.png diff --git a/Crawler/assets/square_skill_overlay_icon.png b/Adventures in Lestoria/assets/square_skill_overlay_icon.png similarity index 100% rename from Crawler/assets/square_skill_overlay_icon.png rename to Adventures in Lestoria/assets/square_skill_overlay_icon.png diff --git a/Crawler/assets/square_skill_overlay_icon_empty.png b/Adventures in Lestoria/assets/square_skill_overlay_icon_empty.png similarity index 100% rename from Crawler/assets/square_skill_overlay_icon_empty.png rename to Adventures in Lestoria/assets/square_skill_overlay_icon_empty.png diff --git a/Crawler/assets/themes/9patch.png b/Adventures in Lestoria/assets/themes/9patch.png similarity index 100% rename from Crawler/assets/themes/9patch.png rename to Adventures in Lestoria/assets/themes/9patch.png diff --git a/Crawler/assets/themes/9patch_2.png b/Adventures in Lestoria/assets/themes/9patch_2.png similarity index 100% rename from Crawler/assets/themes/9patch_2.png rename to Adventures in Lestoria/assets/themes/9patch_2.png diff --git a/Crawler/assets/themes/9patch_3.png b/Adventures in Lestoria/assets/themes/9patch_3.png similarity index 100% rename from Crawler/assets/themes/9patch_3.png rename to Adventures in Lestoria/assets/themes/9patch_3.png diff --git a/Crawler/assets/themes/9patch_4.png b/Adventures in Lestoria/assets/themes/9patch_4.png similarity index 100% rename from Crawler/assets/themes/9patch_4.png rename to Adventures in Lestoria/assets/themes/9patch_4.png diff --git a/Crawler/assets/themes/testback.png b/Adventures in Lestoria/assets/themes/testback.png similarity index 100% rename from Crawler/assets/themes/testback.png rename to Adventures in Lestoria/assets/themes/testback.png diff --git a/Crawler/assets/themes/testtiledback.png b/Adventures in Lestoria/assets/themes/testtiledback.png similarity index 100% rename from Crawler/assets/themes/testtiledback.png rename to Adventures in Lestoria/assets/themes/testtiledback.png diff --git a/Adventures in Lestoria/assets/title_back.png b/Adventures in Lestoria/assets/title_back.png new file mode 100644 index 00000000..925bf217 Binary files /dev/null and b/Adventures in Lestoria/assets/title_back.png differ diff --git a/Adventures in Lestoria/assets/title_full.png b/Adventures in Lestoria/assets/title_full.png new file mode 100644 index 00000000..61f7f222 Binary files /dev/null and b/Adventures in Lestoria/assets/title_full.png differ diff --git a/Adventures in Lestoria/assets/title_icon.ico b/Adventures in Lestoria/assets/title_icon.ico new file mode 100644 index 00000000..567ca233 Binary files /dev/null and b/Adventures in Lestoria/assets/title_icon.ico differ diff --git a/Adventures in Lestoria/assets/title_icon.png b/Adventures in Lestoria/assets/title_icon.png new file mode 100644 index 00000000..7f5b6202 Binary files /dev/null and b/Adventures in Lestoria/assets/title_icon.png differ diff --git a/Adventures in Lestoria/assets/title_icon.xcf b/Adventures in Lestoria/assets/title_icon.xcf new file mode 100644 index 00000000..510dfa4b Binary files /dev/null and b/Adventures in Lestoria/assets/title_icon.xcf differ diff --git a/Adventures in Lestoria/assets/title_icon_32.png b/Adventures in Lestoria/assets/title_icon_32.png new file mode 100644 index 00000000..8d932fb8 Binary files /dev/null and b/Adventures in Lestoria/assets/title_icon_32.png differ diff --git a/Adventures in Lestoria/assets/title_transparent.png b/Adventures in Lestoria/assets/title_transparent.png new file mode 100644 index 00000000..a8b327f8 Binary files /dev/null and b/Adventures in Lestoria/assets/title_transparent.png differ diff --git a/Adventures in Lestoria/assets/title_transparent.xcf b/Adventures in Lestoria/assets/title_transparent.xcf new file mode 100644 index 00000000..0eecd44e Binary files /dev/null and b/Adventures in Lestoria/assets/title_transparent.xcf differ diff --git a/Crawler/assets/unknown_full_render.png b/Adventures in Lestoria/assets/unknown_full_render.png similarity index 100% rename from Crawler/assets/unknown_full_render.png rename to Adventures in Lestoria/assets/unknown_full_render.png diff --git a/Crawler/assets/wizard_full.png b/Adventures in Lestoria/assets/wizard_full.png similarity index 100% rename from Crawler/assets/wizard_full.png rename to Adventures in Lestoria/assets/wizard_full.png diff --git a/Crawler/assets/wizard_full_render.png b/Adventures in Lestoria/assets/wizard_full_render.png similarity index 100% rename from Crawler/assets/wizard_full_render.png rename to Adventures in Lestoria/assets/wizard_full_render.png diff --git a/Crawler/assets/wizard_full_render.xcf b/Adventures in Lestoria/assets/wizard_full_render.xcf similarity index 100% rename from Crawler/assets/wizard_full_render.xcf rename to Adventures in Lestoria/assets/wizard_full_render.xcf diff --git a/Adventures in Lestoria/backend.js b/Adventures in Lestoria/backend.js new file mode 100644 index 00000000..eed9181a --- /dev/null +++ b/Adventures in Lestoria/backend.js @@ -0,0 +1,53 @@ +app.post("/AiL",function (req, res) { + var username=decodeURI(req.body.username) + var operation=decodeURI(req.body.operation) + var checksum=decodeURI(req.body.checksum) + var data=decodeURI(req.body.data) + const saveDir="files/AiLsaves/"; + if(username&&operation&&checksum&&data){ + if(username.length<=24&& + (operation==="GET_LOAD_FILES"||operation==="GET_FILE"||operation==="SAVE_FILE"||operation==="SAVE_METADATA_FILE")&& + data.length<=1000000&& + Number(checksum)===username.length*8+data.length*2+operation.length){ + //Checksum: Length of username*8+Length of data*2+Length of operation + if(!fs.existsSync(`${saveDir+username}`)){ + fs.mkdirSync(`${saveDir+username}`); + } + switch(operation){ + case "GET_LOAD_FILES":{ + if(fs.existsSync(`${saveDir+username}/metadata.dat`)){ + res.status(200).send(fs.readFileSync(`${saveDir+username}/metadata.dat`)); + }else{ + res.status(404).send("Not Found!"); + } + }break; + case "GET_FILE":{ + if(fs.existsSync(`${saveDir+username}/save.${data.padStart(4,'0')}`)){ + res.status(200).send(fs.readFileSync(`${saveDir+username}/save.${data.padStart(4,'0')}`)); + }else{ + res.status(404).send("Not Found!"); + } + }break; + case "SAVE_FILE":{ + var fileData=data.split("|"); + var fileNumb=fileData[0]; + var saveFileData=fileData[1]; + + fs.writeFileSync(`${saveDir+username}/save.${fileNumb.padStart(4,'0')}`,saveFileData); + res.status(200).send("Saved!"); + }break; + case "SAVE_METADATA_FILE":{ + fs.writeFileSync(`${saveDir+username}/metadata.dat`,data); + res.status(200).send("Saved!"); + }break; + default:{ + res.status(418).send('I\'m definitely a teapot.'); + } + } + }else{ + res.status(418).send('I\'m definitely a teapot.'); + } + }else{ + res.status(400).send('Invalid input!'); + } + }); \ No newline at end of file diff --git a/Crawler/buildtemplate.html b/Adventures in Lestoria/buildtemplate.html similarity index 100% rename from Crawler/buildtemplate.html rename to Adventures in Lestoria/buildtemplate.html diff --git a/Crawler/config.h b/Adventures in Lestoria/config.h similarity index 92% rename from Crawler/config.h rename to Adventures in Lestoria/config.h index b0661b7f..4665069a 100644 --- a/Crawler/config.h +++ b/Adventures in Lestoria/config.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,6 +36,7 @@ All rights reserved. */ #pragma endregion #pragma once +#include "olcPixelGameEngine.h" #include "olcUTIL_DataFile.h" using namespace olc; @@ -50,6 +51,8 @@ utils::datafilefloatdata operator ""_f(const char*key,std::size_t len); utils::datafiledoubledata operator ""_d(const char*key,std::size_t len); //Read a string key from the config. std::string operator ""_S(const char*key,std::size_t len); +//Read a full string key from the config. +std::string operator ""_FS(const char*key,std::size_t len); //Read an integer key from the config. int operator ""_I(const char*key,std::size_t len); //Read a float key from the config. diff --git a/Crawler/cpp.hint b/Adventures in Lestoria/cpp.hint similarity index 100% rename from Crawler/cpp.hint rename to Adventures in Lestoria/cpp.hint diff --git a/Crawler/discord-files/achievement_manager.cpp b/Adventures in Lestoria/discord-files/achievement_manager.cpp similarity index 100% rename from Crawler/discord-files/achievement_manager.cpp rename to Adventures in Lestoria/discord-files/achievement_manager.cpp diff --git a/Crawler/discord-files/achievement_manager.h b/Adventures in Lestoria/discord-files/achievement_manager.h similarity index 100% rename from Crawler/discord-files/achievement_manager.h rename to Adventures in Lestoria/discord-files/achievement_manager.h diff --git a/Crawler/discord-files/activity_manager.cpp b/Adventures in Lestoria/discord-files/activity_manager.cpp similarity index 100% rename from Crawler/discord-files/activity_manager.cpp rename to Adventures in Lestoria/discord-files/activity_manager.cpp diff --git a/Crawler/discord-files/activity_manager.h b/Adventures in Lestoria/discord-files/activity_manager.h similarity index 100% rename from Crawler/discord-files/activity_manager.h rename to Adventures in Lestoria/discord-files/activity_manager.h diff --git a/Crawler/discord-files/application_manager.cpp b/Adventures in Lestoria/discord-files/application_manager.cpp similarity index 100% rename from Crawler/discord-files/application_manager.cpp rename to Adventures in Lestoria/discord-files/application_manager.cpp diff --git a/Crawler/discord-files/application_manager.h b/Adventures in Lestoria/discord-files/application_manager.h similarity index 100% rename from Crawler/discord-files/application_manager.h rename to Adventures in Lestoria/discord-files/application_manager.h diff --git a/Crawler/discord-files/core.cpp b/Adventures in Lestoria/discord-files/core.cpp similarity index 100% rename from Crawler/discord-files/core.cpp rename to Adventures in Lestoria/discord-files/core.cpp diff --git a/Crawler/discord-files/core.h b/Adventures in Lestoria/discord-files/core.h similarity index 100% rename from Crawler/discord-files/core.h rename to Adventures in Lestoria/discord-files/core.h diff --git a/Crawler/discord-files/discord.h b/Adventures in Lestoria/discord-files/discord.h similarity index 100% rename from Crawler/discord-files/discord.h rename to Adventures in Lestoria/discord-files/discord.h diff --git a/Crawler/discord-files/event.h b/Adventures in Lestoria/discord-files/event.h similarity index 100% rename from Crawler/discord-files/event.h rename to Adventures in Lestoria/discord-files/event.h diff --git a/Crawler/discord-files/ffi.h b/Adventures in Lestoria/discord-files/ffi.h similarity index 100% rename from Crawler/discord-files/ffi.h rename to Adventures in Lestoria/discord-files/ffi.h diff --git a/Crawler/discord-files/image_manager.cpp b/Adventures in Lestoria/discord-files/image_manager.cpp similarity index 100% rename from Crawler/discord-files/image_manager.cpp rename to Adventures in Lestoria/discord-files/image_manager.cpp diff --git a/Crawler/discord-files/image_manager.h b/Adventures in Lestoria/discord-files/image_manager.h similarity index 100% rename from Crawler/discord-files/image_manager.h rename to Adventures in Lestoria/discord-files/image_manager.h diff --git a/Crawler/discord-files/lobby_manager.cpp b/Adventures in Lestoria/discord-files/lobby_manager.cpp similarity index 100% rename from Crawler/discord-files/lobby_manager.cpp rename to Adventures in Lestoria/discord-files/lobby_manager.cpp diff --git a/Crawler/discord-files/lobby_manager.h b/Adventures in Lestoria/discord-files/lobby_manager.h similarity index 100% rename from Crawler/discord-files/lobby_manager.h rename to Adventures in Lestoria/discord-files/lobby_manager.h diff --git a/Crawler/discord-files/network_manager.cpp b/Adventures in Lestoria/discord-files/network_manager.cpp similarity index 100% rename from Crawler/discord-files/network_manager.cpp rename to Adventures in Lestoria/discord-files/network_manager.cpp diff --git a/Crawler/discord-files/network_manager.h b/Adventures in Lestoria/discord-files/network_manager.h similarity index 100% rename from Crawler/discord-files/network_manager.h rename to Adventures in Lestoria/discord-files/network_manager.h diff --git a/Crawler/discord-files/overlay_manager.cpp b/Adventures in Lestoria/discord-files/overlay_manager.cpp similarity index 100% rename from Crawler/discord-files/overlay_manager.cpp rename to Adventures in Lestoria/discord-files/overlay_manager.cpp diff --git a/Crawler/discord-files/overlay_manager.h b/Adventures in Lestoria/discord-files/overlay_manager.h similarity index 100% rename from Crawler/discord-files/overlay_manager.h rename to Adventures in Lestoria/discord-files/overlay_manager.h diff --git a/Crawler/discord-files/relationship_manager.cpp b/Adventures in Lestoria/discord-files/relationship_manager.cpp similarity index 100% rename from Crawler/discord-files/relationship_manager.cpp rename to Adventures in Lestoria/discord-files/relationship_manager.cpp diff --git a/Crawler/discord-files/relationship_manager.h b/Adventures in Lestoria/discord-files/relationship_manager.h similarity index 100% rename from Crawler/discord-files/relationship_manager.h rename to Adventures in Lestoria/discord-files/relationship_manager.h diff --git a/Crawler/discord-files/storage_manager.cpp b/Adventures in Lestoria/discord-files/storage_manager.cpp similarity index 100% rename from Crawler/discord-files/storage_manager.cpp rename to Adventures in Lestoria/discord-files/storage_manager.cpp diff --git a/Crawler/discord-files/storage_manager.h b/Adventures in Lestoria/discord-files/storage_manager.h similarity index 100% rename from Crawler/discord-files/storage_manager.h rename to Adventures in Lestoria/discord-files/storage_manager.h diff --git a/Crawler/discord-files/store_manager.cpp b/Adventures in Lestoria/discord-files/store_manager.cpp similarity index 100% rename from Crawler/discord-files/store_manager.cpp rename to Adventures in Lestoria/discord-files/store_manager.cpp diff --git a/Crawler/discord-files/store_manager.h b/Adventures in Lestoria/discord-files/store_manager.h similarity index 100% rename from Crawler/discord-files/store_manager.h rename to Adventures in Lestoria/discord-files/store_manager.h diff --git a/Crawler/discord-files/types.cpp b/Adventures in Lestoria/discord-files/types.cpp similarity index 100% rename from Crawler/discord-files/types.cpp rename to Adventures in Lestoria/discord-files/types.cpp diff --git a/Crawler/discord-files/types.h b/Adventures in Lestoria/discord-files/types.h similarity index 99% rename from Crawler/discord-files/types.h rename to Adventures in Lestoria/discord-files/types.h index 76c43117..013df059 100644 --- a/Crawler/discord-files/types.h +++ b/Adventures in Lestoria/discord-files/types.h @@ -7,6 +7,11 @@ #include #endif +#include + +#undef None +#undef Status + namespace discord { enum class Result { diff --git a/Crawler/discord-files/user_manager.cpp b/Adventures in Lestoria/discord-files/user_manager.cpp similarity index 100% rename from Crawler/discord-files/user_manager.cpp rename to Adventures in Lestoria/discord-files/user_manager.cpp diff --git a/Crawler/discord-files/user_manager.h b/Adventures in Lestoria/discord-files/user_manager.h similarity index 97% rename from Crawler/discord-files/user_manager.h rename to Adventures in Lestoria/discord-files/user_manager.h index d85de1b5..f1d001e3 100644 --- a/Crawler/discord-files/user_manager.h +++ b/Adventures in Lestoria/discord-files/user_manager.h @@ -1,6 +1,7 @@ #pragma once #include "types.h" +#include namespace discord { diff --git a/Crawler/discord-files/voice_manager.cpp b/Adventures in Lestoria/discord-files/voice_manager.cpp similarity index 100% rename from Crawler/discord-files/voice_manager.cpp rename to Adventures in Lestoria/discord-files/voice_manager.cpp diff --git a/Crawler/discord-files/voice_manager.h b/Adventures in Lestoria/discord-files/voice_manager.h similarity index 100% rename from Crawler/discord-files/voice_manager.h rename to Adventures in Lestoria/discord-files/voice_manager.h diff --git a/Crawler/discord_game_sdk.bundle b/Adventures in Lestoria/discord_game_sdk.bundle similarity index 100% rename from Crawler/discord_game_sdk.bundle rename to Adventures in Lestoria/discord_game_sdk.bundle diff --git a/Crawler/discord_game_sdk.dll b/Adventures in Lestoria/discord_game_sdk.dll similarity index 100% rename from Crawler/discord_game_sdk.dll rename to Adventures in Lestoria/discord_game_sdk.dll diff --git a/Crawler/discord_game_sdk.dll.lib b/Adventures in Lestoria/discord_game_sdk.dll.lib similarity index 100% rename from Crawler/discord_game_sdk.dll.lib rename to Adventures in Lestoria/discord_game_sdk.dll.lib diff --git a/Crawler/discord_game_sdk.dylib b/Adventures in Lestoria/discord_game_sdk.dylib similarity index 100% rename from Crawler/discord_game_sdk.dylib rename to Adventures in Lestoria/discord_game_sdk.dylib diff --git a/Crawler/discord_game_sdk.so b/Adventures in Lestoria/discord_game_sdk.so similarity index 100% rename from Crawler/discord_game_sdk.so rename to Adventures in Lestoria/discord_game_sdk.so diff --git a/Crawler/drawutil.cpp b/Adventures in Lestoria/drawutil.cpp similarity index 96% rename from Crawler/drawutil.cpp rename to Adventures in Lestoria/drawutil.cpp index 6c8462ac..0507ee08 100644 --- a/Crawler/drawutil.cpp +++ b/Adventures in Lestoria/drawutil.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -36,12 +36,12 @@ All rights reserved. */ #pragma endregion #include "drawutil.h" -#include "Crawler.h" +#include "AdventuresInLestoria.h" #include "DEFINES.h" INCLUDE_game -void drawutil::DrawCrosshair(Crawler*game,geom2d::rectrect,float accTime,float pulsatingAmt,float borderThickness){ +void drawutil::DrawCrosshair(AiL*game,geom2d::rectrect,float accTime,float pulsatingAmt,float borderThickness){ vf2d crosshairExtension={std::min(0.25f*rect.size.x-borderThickness/2,12.f),std::min(0.25f*rect.size.y-borderThickness/2,12.f)}; vf2d pulseAmt=vf2d{1,1}*std::abs(std::sin(accTime*3))*2; //Lower-Left Corner @@ -107,7 +107,7 @@ void drawutil::DrawCrosshairTransformedView(olc::TransformedView&view,geom2d::re game->view.FillRect(pos,size,RED); } -void drawutil::DrawCrosshairDecal(Crawler*game,geom2d::rectrect,float accTime,float pulsatingAmt,float borderThickness){ +void drawutil::DrawCrosshairDecal(AiL*game,geom2d::rectrect,float accTime,float pulsatingAmt,float borderThickness){ vf2d crosshairExtension={std::min(0.25f*rect.size.x-borderThickness/2,12.f),std::min(0.25f*rect.size.y-borderThickness/2,12.f)}; vf2d pulseAmt=vf2d{1,1}*std::abs(std::sin(accTime*3))*2; //Lower-Left Corner diff --git a/Crawler/drawutil.h b/Adventures in Lestoria/drawutil.h similarity index 88% rename from Crawler/drawutil.h rename to Adventures in Lestoria/drawutil.h index 81579f2c..816b5c93 100644 --- a/Crawler/drawutil.h +++ b/Adventures in Lestoria/drawutil.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -39,12 +39,12 @@ All rights reserved. #include "olcUTIL_Geometry2D.h" #include "olcPGEX_TransformedView.h" #include "olcPGEX_ViewPort.h" -class Crawler; +class AiL; namespace drawutil{ - void DrawCrosshair(Crawler*game,geom2d::rectrect,float accTime,float pulsatingAmt=2,float borderThickness=4); + void DrawCrosshair(AiL*game,geom2d::rectrect,float accTime,float pulsatingAmt=2,float borderThickness=4); void DrawCrosshairTransformedView(TransformedView&view,geom2d::rectrect,float accTime,float pulsatingAmt=2,float borderThickness=4); - void DrawCrosshairDecal(Crawler*game,geom2d::rectrect,float accTime,float pulsatingAmt=2,float borderThickness=4); + void DrawCrosshairDecal(AiL*game,geom2d::rectrect,float accTime,float pulsatingAmt=2,float borderThickness=4); void DrawCrosshairDecalTransformedView(TransformedView&view,geom2d::rectrect,float accTime,float pulsatingAmt=2,float borderThickness=4); void DrawCrosshairDecalViewPort(ViewPort&window,geom2d::rectrect,float accTime,float pulsatingAmt=2,float borderThickness=4); } \ No newline at end of file diff --git a/Adventures in Lestoria/emscripten_build.ps1 b/Adventures in Lestoria/emscripten_build.ps1 new file mode 100644 index 00000000..8678e4cc --- /dev/null +++ b/Adventures in Lestoria/emscripten_build.ps1 @@ -0,0 +1,6 @@ +$ErrorActionPreference = "Stop" +cd .. +./emscripten_build.ps1 +if ($LASTEXITCODE -eq 0) { + ./emscripten_run.ps1 +} \ No newline at end of file diff --git a/Crawler/emscripten_run.ps1 b/Adventures in Lestoria/emscripten_run.ps1 similarity index 100% rename from Crawler/emscripten_run.ps1 rename to Adventures in Lestoria/emscripten_run.ps1 diff --git a/Crawler/freetype.dll b/Adventures in Lestoria/freetype.dll similarity index 100% rename from Crawler/freetype.dll rename to Adventures in Lestoria/freetype.dll diff --git a/Crawler/freetype.lib b/Adventures in Lestoria/freetype.lib similarity index 100% rename from Crawler/freetype.lib rename to Adventures in Lestoria/freetype.lib diff --git a/Crawler/loc.sh b/Adventures in Lestoria/loc.sh old mode 100755 new mode 100644 similarity index 100% rename from Crawler/loc.sh rename to Adventures in Lestoria/loc.sh diff --git a/Crawler/miniaudio.h b/Adventures in Lestoria/miniaudio.h similarity index 100% rename from Crawler/miniaudio.h rename to Adventures in Lestoria/miniaudio.h diff --git a/Crawler/ms-vscode.cpptools-1.16.3@linux-x64.vsix b/Adventures in Lestoria/ms-vscode.cpptools-1.16.3@linux-x64.vsix similarity index 100% rename from Crawler/ms-vscode.cpptools-1.16.3@linux-x64.vsix rename to Adventures in Lestoria/ms-vscode.cpptools-1.16.3@linux-x64.vsix diff --git a/Crawler/olcPGEX_Gamepad.h b/Adventures in Lestoria/olcPGEX_Gamepad.h similarity index 99% rename from Crawler/olcPGEX_Gamepad.h rename to Adventures in Lestoria/olcPGEX_Gamepad.h index d962c2c4..8ab77877 100644 --- a/Crawler/olcPGEX_Gamepad.h +++ b/Adventures in Lestoria/olcPGEX_Gamepad.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +Copyright 2018 - 2024 OneLoneCoder.com Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/Crawler/olcPGEX_MiniAudio.h b/Adventures in Lestoria/olcPGEX_MiniAudio.h similarity index 100% rename from Crawler/olcPGEX_MiniAudio.h rename to Adventures in Lestoria/olcPGEX_MiniAudio.h diff --git a/Adventures in Lestoria/olcPGEX_SplashScreen.h b/Adventures in Lestoria/olcPGEX_SplashScreen.h new file mode 100644 index 00000000..2ec4dec2 --- /dev/null +++ b/Adventures in Lestoria/olcPGEX_SplashScreen.h @@ -0,0 +1,220 @@ +/* + olcPGEX_SplashScreen.h + + +-------------------------------------------------------------+ + | OneLoneCoder Pixel Game Engine Extension | + | Splash Screen v1.0 | + +-------------------------------------------------------------+ + + NOTE: UNDER ACTIVE DEVELOPMENT - THERE ARE BUGS/GLITCHES + + What is this? + ~~~~~~~~~~~~~ + This extension produces an animated splashscreen and copyright notice + at the beginning of a PGE application, for the purposes of remaining + OLC-3 compliant should it be ambiguous in your deployment. + + License (OLC-3) + ~~~~~~~~~~~~~~~ + + Copyright 2018 - 2024 OneLoneCoder.com + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions or derivations of source code must retain the above + copyright notice, this list of conditions and the following disclaimer. + + 2. Redistributions or derivative works in binary form must reproduce + the above copyright notice. This list of conditions and the following + disclaimer must be reproduced in the documentation and/or other + materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Links + ~~~~~ + YouTube: https://www.youtube.com/javidx9 + Discord: https://discord.gg/WhwHUMV + Twitter: https://www.twitter.com/javidx9 + Twitch: https://www.twitch.tv/javidx9 + GitHub: https://www.github.com/onelonecoder + Homepage: https://www.onelonecoder.com + + Author + ~~~~~~ + David Barr, aka javidx9, �OneLoneCoder 2019, 2020, 2021, 2022 + + Revisions: + 1.00: Initial Release +*/ + +#pragma once + +#include "olcPixelGameEngine.h" + +namespace olc +{ + class SplashScreen : public olc::PGEX + { + public: + SplashScreen(); + + protected: + virtual void OnAfterUserCreate() override; + virtual bool OnBeforeUserUpdate(float& fElapsedTime) override; + + private: + olc::Renderable spr; + std::vector> vBoom; + olc::vf2d vScale; + olc::vf2d vPosition; + float fParticleTime = 0.0f; + float fAspect = 0.0f; + bool bComplete = false; + }; + + +} + +#ifdef OLC_PGEX_SPLASHSCREEN +#undef OLC_PGEX_SPLASHSCREEN + +namespace olc +{ + SplashScreen::SplashScreen() : olc::PGEX(true) + { + } + + void SplashScreen::OnAfterUserCreate() + { + const char logo[] = + "000000000000000000000000000000000000000000000000000000000000000000005" + "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEED1EE" + "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEED5EEE" + "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE@E@000" + "0000000000000000000000000000000000000000000000000000000000001E1D:ZZZZ" + "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ1D5BZZZZZZ" + "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5@E:P0002Z0" + "02ZZX000000000000ZP0000000000000000000000000000ZX000Z002XE1DX?o`o:Poo" + "800SooaE5@E1ED5BX?ol5E@E0E1ED?oo5@E1ED5DE1D5E@ZQEEBPEE2QD5BSooclZ?olQ" + "AB?oo5DEEDEEDE:SooaEEAE5DEEDoolEADEEDEAE5AEEBZ5EE:5EE:5@E:?oo?bXoob55" + "8o3lEAEEAD5ADZ?oo5@E5EEAD5Cl01E5AD5AE5DE5@E:X01DXEEDXE1DXo3lo:Sl0800S" + "ooaE1ED5EE5BXo00EEDEEE5EE?oo5EE5EE5DEEDEEDZQEEBQD5BQD5BSl?cl0?`0ZZZ?o" + "o5D5E@EEDE03loaEEAEEDEEDoolEED5EDEAEEAEEBZ5EE:5@E:5@E:?oo?oloob008o00" + "EAEEAD01EE?co5EE5EEAD03l01DE@05AE5AE5@0:XE000EEDXE1DXooloocoo8DDSlZQE" + "5EE5EE5EDoolE1DE4E5EE?oo5AE5EE5DE5DEEDZQEEAAEEBQD5BPoo3oo3olQAB?bZ5DE" + "1D5EDEE@ooaD5AD1D5EDoolE1DEE@EAD5@EEBZ5EE51ED:5@E:P000000020080:X0000" + "00000000000000000000000000000000000:X0000002XE1DZZZZZZZZZZZZZZZZZZZZZ" + "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZQD5@ZZZZZZZZZZZZZZZZZZZZZZ" + "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZX5@E@00000000000000000000000" + "00000000000000000000000000000000000000001E1EEEEEEEEEEEEEEEEEEEEEEEEEE" + "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEED5EEEEEEEEEEEEEEEEEEEEEEEEEEE" + "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE@5EEEEEEEEEEEEEEEEEEEEEEEEEEEE" + "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEED0000000000000000000000000000000" + "0000000000000000000000000000000000000"; + + spr.Create(203, 24); + int px = 0, py = 0; + for (size_t b = 0; b < 1624; b += 4) + { + uint32_t sym1 = (uint32_t)logo[b + 0] - 48; + uint32_t sym2 = (uint32_t)logo[b + 1] - 48; + uint32_t sym3 = (uint32_t)logo[b + 2] - 48; + uint32_t sym4 = (uint32_t)logo[b + 3] - 48; + uint32_t r = sym1 << 18 | sym2 << 12 | sym3 << 6 | sym4; + + for (int i = 0; i < 12; i++) + { + olc::Pixel p = olc::RED; + switch ((r & 0xC00000) >> 22) + { + case 0: p = olc::Pixel(0, 0, 0, 255); break; + case 1: p = olc::Pixel(255, 255, 255, 255); break; + case 2: p = olc::Pixel(255, 120, 26, 255); break; + case 3: p = olc::Pixel(79, 193, 255, 255); break; + } + spr.Sprite()->SetPixel(px, py, p); + if (++px == 203) { py++; px = 0; } + r <<= 2; + } + } + + spr.Decal()->Update(); + vBoom.resize(spr.Sprite()->width * spr.Sprite()->height); + vScale = { float(pge->ScreenWidth()) / 500.0f, float(pge->ScreenWidth()) / 500.0f }; + fAspect = float(pge->ScreenWidth()) / float(pge->ScreenHeight()); + vPosition = olc::vf2d( + (250 - spr.Sprite()->width) / 2.0f, + (250 - spr.Sprite()->height) / 2.0f / fAspect); + for (int y = 0; y < spr.Sprite()->height; y++) + for (int x = 0; x < spr.Sprite()->width; x++) + vBoom[y * spr.Sprite()->width + x] = std::make_pair( + vPosition + olc::vf2d(x, y), + olc::vf2d( + (float(rand()) / float(RAND_MAX)) * 10.0f - 5.0f, + (float(rand()) / float(RAND_MAX)) * 10.0f - 5.0f) + ); + } + + bool SplashScreen::OnBeforeUserUpdate(float& fElapsedTime) + { + if (bComplete) return false; + + fParticleTime += fElapsedTime; + + for (int y = 0; y < spr.Sprite()->height; y++) + for (int x = 0; x < spr.Sprite()->width; x++) + { + + + if (fParticleTime < 1.0f) + { + + } + else if (fParticleTime < 2.0f) + { + vBoom[y * spr.Sprite()->width + x].first = + olc::vf2d( + (250 - spr.Sprite()->width) / 2.0f + float(x), + (250 - spr.Sprite()->height) / 2.0f / fAspect + float(y) + ) + + olc::vf2d( + (float(rand()) / float(RAND_MAX)) * 0.5f - 0.25f, + (float(rand()) / float(RAND_MAX)) * 0.5f - 0.25f); + } + else if(fParticleTime < 5.0f) + { + vBoom[y * spr.Sprite()->width + x].first += vBoom[y * spr.Sprite()->width + x].second * fElapsedTime * 20.0f; + } + else + { + bComplete = true; + } + + pge->DrawPartialDecal(vScale * vBoom[y * spr.Sprite()->width + x].first * 2.0f, spr.Decal(), olc::vf2d(x, y), { 1, 1 }, vScale * 2.0f, olc::PixelF(1.0f, 1.0f, 1.0f, std::min(1.0f, std::max(4.0f - fParticleTime, 0.0f)))); + } + + olc::vi2d vSize = pge->GetTextSizeProp("Copyright OneLoneCoder.com 2024"); + pge->DrawStringPropDecal(olc::vf2d(float(pge->ScreenWidth()/2) - vSize.x/2, float(pge->ScreenHeight()) - vSize.y * 3.0f), "Copyright OneLoneCoder.com 2024", olc::PixelF(1.0f, 1.0f, 1.0f, 0.5f), olc::vf2d(1.0, 2.0f)); + return true; + } + +} + +#endif \ No newline at end of file diff --git a/Crawler/olcPGEX_TTF.h b/Adventures in Lestoria/olcPGEX_TTF.h similarity index 99% rename from Crawler/olcPGEX_TTF.h rename to Adventures in Lestoria/olcPGEX_TTF.h index 374a49a3..3f92b302 100644 --- a/Crawler/olcPGEX_TTF.h +++ b/Adventures in Lestoria/olcPGEX_TTF.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +Copyright 2018 - 2024 OneLoneCoder.com Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/Crawler/olcPGEX_TransformedView.h b/Adventures in Lestoria/olcPGEX_TransformedView.h similarity index 99% rename from Crawler/olcPGEX_TransformedView.h rename to Adventures in Lestoria/olcPGEX_TransformedView.h index 00786929..2955c70f 100644 --- a/Crawler/olcPGEX_TransformedView.h +++ b/Adventures in Lestoria/olcPGEX_TransformedView.h @@ -18,7 +18,7 @@ world scales and offsets. License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +Copyright 2018 - 2024 OneLoneCoder.com Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/Crawler/olcPGEX_ViewPort.h b/Adventures in Lestoria/olcPGEX_ViewPort.h similarity index 100% rename from Crawler/olcPGEX_ViewPort.h rename to Adventures in Lestoria/olcPGEX_ViewPort.h diff --git a/Crawler/olcPixelGameEngine.h b/Adventures in Lestoria/olcPixelGameEngine.h similarity index 99% rename from Crawler/olcPixelGameEngine.h rename to Adventures in Lestoria/olcPixelGameEngine.h index e9805680..6d171855 100644 --- a/Crawler/olcPixelGameEngine.h +++ b/Adventures in Lestoria/olcPixelGameEngine.h @@ -29,7 +29,7 @@ types to make rapid development of games/visualisations possible. License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +Copyright 2018 - 2024 OneLoneCoder.com Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -472,6 +472,8 @@ namespace _gfs = std::filesystem; #endif #if defined(__EMSCRIPTEN__) #define OLC_PLATFORM_EMSCRIPTEN +#include +#include #endif #endif #endif @@ -951,6 +953,7 @@ namespace olc virtual olc::rcode SetWindowTitle(const std::string& s) = 0; virtual olc::rcode StartSystemEventLoop() = 0; virtual olc::rcode HandleSystemEvent() = 0; + virtual olc::rcode SendRequest(std::string_view url,std::string_view data){return olc::rcode::OK;}; static olc::PixelGameEngine* ptrPGE; }; @@ -994,6 +997,10 @@ namespace olc virtual void OnTextEntryComplete(const std::string& sText); // Called when a console command is executed virtual bool OnConsoleCommand(const std::string& sCommand); + virtual void OnRequestCompleted(const std::string_view receivedData)const; + + + virtual olc::rcode SendRequest(std::string_view url,std::string_view data); public: // Hardware Interfaces @@ -1033,6 +1040,7 @@ namespace olc // to specify the primary screen void SetDrawTarget(Sprite* target); double GetRuntime() const; + void SetRuntime(const double runTime); // Gets the current Frames Per Second uint32_t GetFPS() const; // Gets last update of elapsed time @@ -1197,9 +1205,10 @@ namespace olc // Text Entry Routines void TextEntryEnable(const bool bEnable, const std::string& sText = ""); - std::string TextEntryGetString() const; + const std::string&TextEntryGetString() const; int32_t TextEntryGetCursor() const; bool IsTextEntryEnabled() const; + void TextEntrySetCharLimit(const uint8_t charLimit); public: static std::map charToColor; @@ -1235,6 +1244,8 @@ namespace olc public: + static std::string responseData; + // Experimental Lightweight 3D Routines ================ #ifdef OLC_ENABLE_EXPERIMENTAL // Set Manual View Matrix @@ -1307,6 +1318,7 @@ namespace olc std::vector vDroppedFilesCache; olc::vi2d vDroppedFilesPoint; olc::vi2d vDroppedFilesPointCache; + uint8_t nTextEntryCharLimit=std::numeric_limits::max(); // Command Console Specific bool bConsoleShow = false; @@ -2036,6 +2048,8 @@ namespace olc return o; }; + std::string PixelGameEngine::responseData; + // O------------------------------------------------------------------------------O // | olc::PixelGameEngine IMPLEMENTATION | // O------------------------------------------------------------------------------O @@ -2188,6 +2202,10 @@ namespace olc double PixelGameEngine::GetRuntime() const { return dRunTime; } + void PixelGameEngine::SetRuntime(const double runTime){ + dRunTime=runTime; + } + uint32_t PixelGameEngine::GetFPS() const { return nLastFPS; } @@ -3700,13 +3718,13 @@ namespace olc skip--; continue; } - if(c==' '||c=='\t'){ + if(c==' '||c=='\t'||c=='\n'){ drawingMarker.x+=lettersWidth; lettersWidth=0; wrappingOccurred=false; } if(wrappingOccurred){ - if(c!=' '&&c!='\t'){ + if(c!=' '&&c!='\t'&&c!='\n'){ wrappingOccurred=false; maxWidth=std::max(maxWidth,drawingMarker.x); }else{ @@ -3817,7 +3835,7 @@ namespace olc skip--; continue; } - if(c==' '||c=='\t'){ + if(c==' '||c=='\t'||c=='\n'){ for(PixelGameEngine::StringDecalData&letter:letters){ DrawPartialSprite(vi2d(pos + drawingMarker), fontRenderable.Sprite(), vi2d(letter.sourcePos), vi2d(letter.sourceSize), scale, Sprite::Flip::NONE,letter.col); drawingMarker.x += 8.0f * scale; @@ -3826,7 +3844,7 @@ namespace olc wrappingOccurred=false; } if(wrappingOccurred){ - if(c!=' '&&c!='\t'){ + if(c!=' '&&c!='\t'&&c!='\n'){ wrappingOccurred=false; }else{ continue; @@ -3956,14 +3974,14 @@ namespace olc skip--; continue; } - if(c==' '||c=='\t'){ + if(c==' '||c=='\t'||c=='\n'){ drawingMarker.x+=lettersWidth; lettersWidth=0; wrappingOccurred=false; maxWidth=std::max(maxWidth,drawingMarker.x); } if(wrappingOccurred){ - if(c!=' '&&c!='\t'){ + if(c!=' '&&c!='\t'&&c!='\n'){ wrappingOccurred=false; }else{ continue; @@ -4047,7 +4065,7 @@ namespace olc skip--; continue; } - if(c==' '||c=='\t'){ + if(c==' '||c=='\t'||c=='\n'){ for(PixelGameEngine::StringDecalData&letter:letters){ DrawPartialSprite(vi2d(pos + drawingMarker), GetFontSprite(), vi2d(letter.sourcePos), vi2d(letter.sourceSize), scale,Sprite::Flip::NONE, letter.col); drawingMarker.x += float(vFontSpacing[letter.c - 32].y) * scale; @@ -4056,7 +4074,7 @@ namespace olc wrappingOccurred=false; } if(wrappingOccurred){ - if(c!=' '&&c!='\t'){ + if(c!=' '&&c!='\t'&&c!='\n'){ wrappingOccurred=false; }else{ continue; @@ -4276,7 +4294,7 @@ namespace olc } } - std::string PixelGameEngine::TextEntryGetString() const + const std::string&PixelGameEngine::TextEntryGetString() const { return sTextEntryString; } int32_t PixelGameEngine::TextEntryGetCursor() const @@ -4284,13 +4302,15 @@ namespace olc bool PixelGameEngine::IsTextEntryEnabled() const { return bTextEntryEnable; } - + void PixelGameEngine::TextEntrySetCharLimit(const uint8_t charLimit){ + nTextEntryCharLimit=charLimit; + } void PixelGameEngine::UpdateTextEntry() { // Check for typed characters for (const auto& key : vKeyboardMap) - if (GetKey(std::get<0>(key)).bPressed) + if (GetKey(std::get<0>(key)).bPressed&&sTextEntryString.size()(key) : std::get<1>(key)); nTextEntryCursor++; @@ -4308,7 +4328,8 @@ namespace olc } if (GetKey(olc::Key::DEL).bPressed && nTextEntryCursor < sTextEntryString.size()) sTextEntryString.erase(nTextEntryCursor, 1); - + + /* if (GetKey(olc::Key::UP).bPressed) { if (!sCommandHistory.empty()) @@ -4341,7 +4362,6 @@ namespace olc } } } - if (GetKey(olc::Key::ENTER).bPressed) { if (bConsoleShow) @@ -4360,7 +4380,7 @@ namespace olc OnTextEntryComplete(sTextEntryString); TextEntryEnable(false); } - } + }*/ } // User must override these functions as required. I have not made @@ -4379,6 +4399,11 @@ namespace olc void PixelGameEngine::OnTextEntryComplete(const std::string& sText) { UNUSED(sText); } bool PixelGameEngine::OnConsoleCommand(const std::string& sCommand) { UNUSED(sCommand); return false; } + void PixelGameEngine::OnRequestCompleted(const std::string_view receivedData)const{} + + + olc::rcode PixelGameEngine::SendRequest(std::string_view url,std::string_view data){platform->SendRequest(url,data);return olc::rcode::OK;}; + // Externalised API void PixelGameEngine::olc_UpdateViewport() { @@ -6172,7 +6197,7 @@ namespace olc wc.hIcon = static_cast(::LoadImage(GetModuleHandle(nullptr), MAKEINTRESOURCE(102), IMAGE_ICON, - 48, 48, + 32, 32, LR_DEFAULTCOLOR));; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; @@ -7081,7 +7106,8 @@ namespace olc EM_ASM({ - + + requestResp=""; // olc_ApsectRatio // // Used by olc_ResizeHandler to calculate the viewport from the @@ -7188,6 +7214,25 @@ namespace olc ptrPGE->olc_UpdateWindowSize(width, height); } + virtual olc::rcode SendRequest(std::string_view url,std::string_view data)override{ + EM_ASM({ + requestResp=""; + fetch(UTF8ToString($0),{ + headers: { + "Content-Type": "application/json", + }, + method: "POST",body:UTF8ToString($1)}).then((resp)=>{ + if(resp.ok){ + return resp.text(); + }else{ + throw new Error(resp.text()); + } + }).then((data)=>{requestResp=data;}) + .catch((err)=>{requestResp="ERR";}); + },std::string(url).c_str(),std::string(data).c_str()); + return olc::rcode::OK; + } + //TY Gorbit static EM_BOOL focus_callback(int eventType, const EmscriptenFocusEvent* focusEvent, void* userData) { @@ -7312,6 +7357,21 @@ namespace olc static void MainLoop() { olc::Platform::ptrPGE->olc_CoreUpdate(); + char*ptr=(char*)EM_ASM_PTR({ + if(requestResp&&requestResp!==""){ + var newPtr=stringToNewUTF8(requestResp); + requestResp=""; + return newPtr; + } + return 0; + }); + + if(ptr!=NULL){ + PixelGameEngine::responseData=std::string(ptr); + ptrPGE->OnRequestCompleted(PixelGameEngine::responseData); + delete ptr; + } + if (!ptrPGE->olc_IsRunning()) { if (ptrPGE->OnUserDestroy()) diff --git a/Crawler/olcUTIL_Animate2D.h b/Adventures in Lestoria/olcUTIL_Animate2D.h similarity index 98% rename from Crawler/olcUTIL_Animate2D.h rename to Adventures in Lestoria/olcUTIL_Animate2D.h index 85330ad8..f8aea55d 100644 --- a/Crawler/olcUTIL_Animate2D.h +++ b/Adventures in Lestoria/olcUTIL_Animate2D.h @@ -7,7 +7,7 @@ Handles animated Sprites efficiently License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +Copyright 2018 - 2024 OneLoneCoder.com Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/Crawler/olcUTIL_Camera2D.h b/Adventures in Lestoria/olcUTIL_Camera2D.h similarity index 99% rename from Crawler/olcUTIL_Camera2D.h rename to Adventures in Lestoria/olcUTIL_Camera2D.h index 3f20485e..6333b78b 100644 --- a/Crawler/olcUTIL_Camera2D.h +++ b/Adventures in Lestoria/olcUTIL_Camera2D.h @@ -7,7 +7,7 @@ A 2D world camera with various modes License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +Copyright 2018 - 2024 OneLoneCoder.com Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/Crawler/olcUTIL_DataFile.h b/Adventures in Lestoria/olcUTIL_DataFile.h similarity index 95% rename from Crawler/olcUTIL_DataFile.h rename to Adventures in Lestoria/olcUTIL_DataFile.h index 0ad8b8fd..ffcd8df8 100644 --- a/Crawler/olcUTIL_DataFile.h +++ b/Adventures in Lestoria/olcUTIL_DataFile.h @@ -7,7 +7,7 @@ human readable hierachical files. License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +Copyright 2018 - 2024 OneLoneCoder.com Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -61,8 +61,11 @@ David Barr, aka javidx9, �OneLoneCoder 2019, 2020, 2021, 2022 #include #include #include +#include #include "Error.h" +using namespace std::literals; + int operator ""_I(const char*key,std::size_t len); namespace olc::utils @@ -96,6 +99,18 @@ namespace olc::utils } } + // Retrieves the String Value of a Property, to include all values that are normally separated by the list separator. + inline const std::string GetFullString() const + { + return std::accumulate(m_vContent.begin(),m_vContent.end(),""s,[](std::string str,const std::string&data){ + if(str.size()==0){ + return std::move(str)+data; + }else{ + return std::move(str)+","+data; + } + }); + } + // Retrieves the Real Value of a Property (for a given index) or 0.0 inline const double GetReal(const size_t nItem = 0) const { @@ -145,6 +160,10 @@ namespace olc::utils return m_mapObjects; } + inline std::vector>&GetOrderedKeys(){ + return m_vecObjects; + } + // Checks if a property exists - useful to avoid creating properties // via reading them, though non-essential inline bool HasProperty(const std::string& sName) @@ -281,6 +300,8 @@ namespace olc::utils inline static bool Read(datafile& n, const std::string& sFileName, const char sListSep = ',') { + bool previousSetupState=INITIAL_SETUP_COMPLETE; + INITIAL_SETUP_COMPLETE=false; // Open the file! std::ifstream file(sFileName); if (file.is_open()) @@ -435,11 +456,13 @@ namespace olc::utils // Close and exit! file.close(); + INITIAL_SETUP_COMPLETE=previousSetupState; return true; } // File not found, so fail ERR("WARNING! Could not open file "<Emscripten-Generated Codeimage/svg+xml
Downloading...
Resize canvasLock/hide mouse pointer    
\ No newline at end of file +Emscripten-Generated Codeimage/svg+xml
Downloading...
Resize canvasLock/hide mouse pointer    
\ No newline at end of file diff --git a/Adventures in Lestoria/pge.js b/Adventures in Lestoria/pge.js new file mode 100644 index 00000000..ac1e799a --- /dev/null +++ b/Adventures in Lestoria/pge.js @@ -0,0 +1 @@ +var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="pge.data";var REMOTE_PACKAGE_BASE="pge.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);Module["FS_createPath"]("/assets","Ability Icons",true,true);Module["FS_createPath"]("/assets","Campaigns",true,true);Module["FS_createPath"]("/assets","backgrounds",true,true);Module["FS_createPath"]("/assets","characters",true,true);Module["FS_createPath"]("/assets","config",true,true);Module["FS_createPath"]("/assets/config","classes",true,true);Module["FS_createPath"]("/assets/config","gfx",true,true);Module["FS_createPath"]("/assets/config","items",true,true);Module["FS_createPath"]("/assets/config","shops",true,true);Module["FS_createPath"]("/assets/config","story",true,true);Module["FS_createPath"]("/assets","items",true,true);Module["FS_createPath"]("/assets","maps",true,true);Module["FS_createPath"]("/assets/maps","commercial_assets",true,true);Module["FS_createPath"]("/assets","menus",true,true);Module["FS_createPath"]("/assets","monsters",true,true);Module["FS_createPath"]("/assets","saves",true,true);Module["FS_createPath"]("/assets","themes",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="pge.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateMemoryViews();wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={350664:()=>{window.onunload=Module._olc_OnPageUnload},350708:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;oncontextmenu=function(e){return false};var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()},352681:()=>{return window.scrollX},352705:()=>{return window.scrollY},352729:()=>{return window.scrollX},352753:()=>{return window.scrollY},352777:()=>{return window.scrollX},352801:()=>{return window.scrollY},352825:()=>{return Module.canvas.getBoundingClientRect().left},352877:()=>{return Module.canvas.getBoundingClientRect().top},352928:()=>{return Module.canvas.getBoundingClientRect().left},352980:()=>{return Module.canvas.getBoundingClientRect().top}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:2};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h0){callbacks.shift()(Module)}}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var exceptionCaught=[];var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_rethrow(){var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1];tempI64=[(idx+1)*struct_size>>>0,(tempDouble=(idx+1)*struct_size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1];HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __emscripten_fetch_free(id){if(Fetch.xhrs.has(id)){var xhr=Fetch.xhrs.get(id);Fetch.xhrs.free(id);if(xhr.readyState>0&&xhr.readyState<4){xhr.abort()}}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function _abort(){abort("")}var EGL={errorCode:12288,defaultDisplayInitialized:false,currentContext:0,currentReadSurface:0,currentDrawSurface:0,contextAttributes:{alpha:false,depth:false,stencil:false,antialias:false},stringCache:{},setErrorCode:function(code){EGL.errorCode=code},chooseConfig:function(display,attribList,config,config_size,numConfigs){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(attribList){for(;;){var param=HEAP32[attribList>>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents=="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglInitialize(display,majorVersion,minorVersion){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function _eglSwapBuffers(dpy,surface){if(Browser.doSwapBuffers)Browser.doSwapBuffers();if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function _emscripten_is_main_browser_thread(){return!ENVIRONMENT_IS_WORKER}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(e=event){var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function fillMouseEventData(eventStruct,e,target){HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-rect.left;HEAP32[idx+14]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(e=event){fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(e=event){var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}function HandleAllocator(){this.allocated=[undefined];this.freelist=[];this.get=function(id){return this.allocated[id]};this.has=function(id){return this.allocated[id]!==undefined};this.allocate=function(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id};this.free=function(id){this.allocated[id]=undefined;this.freelist.push(id)}}var Fetch={openDatabase:function(dbname,dbversion,onsuccess,onerror){try{var openRequest=indexedDB.open(dbname,dbversion)}catch(e){return onerror(e)}openRequest.onupgradeneeded=event=>{var db=event.target.result;if(db.objectStoreNames.contains("FILES")){db.deleteObjectStore("FILES")}db.createObjectStore("FILES")};openRequest.onsuccess=event=>onsuccess(event.target.result);openRequest.onerror=error=>onerror(error)},init:function(){Fetch.xhrs=new HandleAllocator;var onsuccess=db=>{Fetch.dbInstance=db;removeRunDependency("library_fetch_init")};var onerror=()=>{Fetch.dbInstance=false;removeRunDependency("library_fetch_init")};addRunDependency("library_fetch_init");Fetch.openDatabase("emscripten_filesystem",1,onsuccess,onerror)}};function fetchXHR(fetch,onsuccess,onerror,onprogress,onreadystatechange){var url=HEAPU32[fetch+8>>2];if(!url){onerror(fetch,0,"no url specified!");return}var url_=UTF8ToString(url);var fetch_attr=fetch+112;var requestMethod=UTF8ToString(fetch_attr+0);if(!requestMethod)requestMethod="GET";var timeoutMsecs=HEAPU32[fetch_attr+56>>2];var userName=HEAPU32[fetch_attr+68>>2];var password=HEAPU32[fetch_attr+72>>2];var requestHeaders=HEAPU32[fetch_attr+76>>2];var overriddenMimeType=HEAPU32[fetch_attr+80>>2];var dataPtr=HEAPU32[fetch_attr+84>>2];var dataLength=HEAPU32[fetch_attr+88>>2];var fetchAttributes=HEAPU32[fetch_attr+52>>2];var fetchAttrLoadToMemory=!!(fetchAttributes&1);var fetchAttrStreamData=!!(fetchAttributes&2);var fetchAttrSynchronous=!!(fetchAttributes&64);var userNameStr=userName?UTF8ToString(userName):undefined;var passwordStr=password?UTF8ToString(password):undefined;var xhr=new XMLHttpRequest;xhr.withCredentials=!!HEAPU8[fetch_attr+60>>0];xhr.open(requestMethod,url_,!fetchAttrSynchronous,userNameStr,passwordStr);if(!fetchAttrSynchronous)xhr.timeout=timeoutMsecs;xhr.url_=url_;xhr.responseType="arraybuffer";if(overriddenMimeType){var overriddenMimeTypeStr=UTF8ToString(overriddenMimeType);xhr.overrideMimeType(overriddenMimeTypeStr)}if(requestHeaders){for(;;){var key=HEAPU32[requestHeaders>>2];if(!key)break;var value=HEAPU32[requestHeaders+4>>2];if(!value)break;requestHeaders+=8;var keyStr=UTF8ToString(key);var valueStr=UTF8ToString(value);xhr.setRequestHeader(keyStr,valueStr)}}var id=Fetch.xhrs.allocate(xhr);HEAPU32[fetch>>2]=id;var data=dataPtr&&dataLength?HEAPU8.slice(dataPtr,dataPtr+dataLength):null;function saveResponseAndStatus(){var ptr=0;var ptrLen=0;if(xhr.response&&fetchAttrLoadToMemory&&HEAPU32[fetch+12>>2]===0){ptrLen=xhr.response.byteLength}if(ptrLen>0){ptr=_malloc(ptrLen);HEAPU8.set(new Uint8Array(xhr.response),ptr)}HEAPU32[fetch+12>>2]=ptr;writeI53ToI64(fetch+16,ptrLen);writeI53ToI64(fetch+24,0);var len=xhr.response?xhr.response.byteLength:0;if(len){writeI53ToI64(fetch+32,len)}HEAPU16[fetch+40>>1]=xhr.readyState;HEAPU16[fetch+42>>1]=xhr.status;if(xhr.statusText)stringToUTF8(xhr.statusText,fetch+44,64)}xhr.onload=e=>{if(!Fetch.xhrs.has(id)){return}saveResponseAndStatus();if(xhr.status>=200&&xhr.status<300){if(onsuccess)onsuccess(fetch,xhr,e)}else{if(onerror)onerror(fetch,xhr,e)}};xhr.onerror=e=>{if(!Fetch.xhrs.has(id)){return}saveResponseAndStatus();if(onerror)onerror(fetch,xhr,e)};xhr.ontimeout=e=>{if(!Fetch.xhrs.has(id)){return}if(onerror)onerror(fetch,xhr,e)};xhr.onprogress=e=>{if(!Fetch.xhrs.has(id)){return}var ptrLen=fetchAttrLoadToMemory&&fetchAttrStreamData&&xhr.response?xhr.response.byteLength:0;var ptr=0;if(ptrLen>0&&fetchAttrLoadToMemory&&fetchAttrStreamData){ptr=_malloc(ptrLen);HEAPU8.set(new Uint8Array(xhr.response),ptr)}HEAPU32[fetch+12>>2]=ptr;writeI53ToI64(fetch+16,ptrLen);writeI53ToI64(fetch+24,e.loaded-ptrLen);writeI53ToI64(fetch+32,e.total);HEAPU16[fetch+40>>1]=xhr.readyState;if(xhr.readyState>=3&&xhr.status===0&&e.loaded>0)xhr.status=200;HEAPU16[fetch+42>>1]=xhr.status;if(xhr.statusText)stringToUTF8(xhr.statusText,fetch+44,64);if(onprogress)onprogress(fetch,xhr,e);if(ptr){_free(ptr)}};xhr.onreadystatechange=e=>{if(!Fetch.xhrs.has(id)){return}HEAPU16[fetch+40>>1]=xhr.readyState;if(xhr.readyState>=2){HEAPU16[fetch+42>>1]=xhr.status}if(onreadystatechange)onreadystatechange(fetch,xhr,e)};try{xhr.send(data)}catch(e){if(onerror)onerror(fetch,xhr,e)}}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function fetchCacheData(db,fetch,data,onsuccess,onerror){if(!db){onerror(fetch,0,"IndexedDB not available!");return}var fetch_attr=fetch+112;var destinationPath=HEAPU32[fetch_attr+64>>2];if(!destinationPath)destinationPath=HEAPU32[fetch+8>>2];var destinationPathStr=UTF8ToString(destinationPath);try{var transaction=db.transaction(["FILES"],"readwrite");var packages=transaction.objectStore("FILES");var putRequest=packages.put(data,destinationPathStr);putRequest.onsuccess=event=>{HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=200;stringToUTF8("OK",fetch+44,64);onsuccess(fetch,0,destinationPathStr)};putRequest.onerror=error=>{HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=413;stringToUTF8("Payload Too Large",fetch+44,64);onerror(fetch,0,error)}}catch(e){onerror(fetch,0,e)}}function fetchLoadCachedData(db,fetch,onsuccess,onerror){if(!db){onerror(fetch,0,"IndexedDB not available!");return}var fetch_attr=fetch+112;var path=HEAPU32[fetch_attr+64>>2];if(!path)path=HEAPU32[fetch+8>>2];var pathStr=UTF8ToString(path);try{var transaction=db.transaction(["FILES"],"readonly");var packages=transaction.objectStore("FILES");var getRequest=packages.get(pathStr);getRequest.onsuccess=event=>{if(event.target.result){var value=event.target.result;var len=value.byteLength||value.length;var ptr=_malloc(len);HEAPU8.set(new Uint8Array(value),ptr);HEAPU32[fetch+12>>2]=ptr;writeI53ToI64(fetch+16,len);writeI53ToI64(fetch+24,0);writeI53ToI64(fetch+32,len);HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=200;stringToUTF8("OK",fetch+44,64);onsuccess(fetch,0,value)}else{HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=404;stringToUTF8("Not Found",fetch+44,64);onerror(fetch,0,"no data")}};getRequest.onerror=error=>{HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=404;stringToUTF8("Not Found",fetch+44,64);onerror(fetch,0,error)}}catch(e){onerror(fetch,0,e)}}function fetchDeleteCachedData(db,fetch,onsuccess,onerror){if(!db){onerror(fetch,0,"IndexedDB not available!");return}var fetch_attr=fetch+112;var path=HEAPU32[fetch_attr+64>>2];if(!path)path=HEAPU32[fetch+8>>2];var pathStr=UTF8ToString(path);try{var transaction=db.transaction(["FILES"],"readwrite");var packages=transaction.objectStore("FILES");var request=packages.delete(pathStr);request.onsuccess=event=>{var value=event.target.result;HEAPU32[fetch+12>>2]=0;writeI53ToI64(fetch+16,0);writeI53ToI64(fetch+24,0);writeI53ToI64(fetch+32,0);HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=200;stringToUTF8("OK",fetch+44,64);onsuccess(fetch,0,value)};request.onerror=error=>{HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=404;stringToUTF8("Not Found",fetch+44,64);onerror(fetch,0,error)}}catch(e){onerror(fetch,0,e)}}function _emscripten_start_fetch(fetch,successcb,errorcb,progresscb,readystatechangecb){var fetch_attr=fetch+112;var onsuccess=HEAPU32[fetch_attr+36>>2];var onerror=HEAPU32[fetch_attr+40>>2];var onprogress=HEAPU32[fetch_attr+44>>2];var onreadystatechange=HEAPU32[fetch_attr+48>>2];var fetchAttributes=HEAPU32[fetch_attr+52>>2];var fetchAttrSynchronous=!!(fetchAttributes&64);function doCallback(f){if(fetchAttrSynchronous){f()}else{callUserCallback(f)}}var reportSuccess=(fetch,xhr,e)=>{doCallback(()=>{if(onsuccess)getWasmTableEntry(onsuccess)(fetch);else if(successcb)successcb(fetch)})};var reportProgress=(fetch,xhr,e)=>{doCallback(()=>{if(onprogress)getWasmTableEntry(onprogress)(fetch);else if(progresscb)progresscb(fetch)})};var reportError=(fetch,xhr,e)=>{doCallback(()=>{if(onerror)getWasmTableEntry(onerror)(fetch);else if(errorcb)errorcb(fetch)})};var reportReadyStateChange=(fetch,xhr,e)=>{doCallback(()=>{if(onreadystatechange)getWasmTableEntry(onreadystatechange)(fetch);else if(readystatechangecb)readystatechangecb(fetch)})};var performUncachedXhr=(fetch,xhr,e)=>{fetchXHR(fetch,reportSuccess,reportError,reportProgress,reportReadyStateChange)};var cacheResultAndReportSuccess=(fetch,xhr,e)=>{var storeSuccess=(fetch,xhr,e)=>{doCallback(()=>{if(onsuccess)getWasmTableEntry(onsuccess)(fetch);else if(successcb)successcb(fetch)})};var storeError=(fetch,xhr,e)=>{doCallback(()=>{if(onsuccess)getWasmTableEntry(onsuccess)(fetch);else if(successcb)successcb(fetch)})};fetchCacheData(Fetch.dbInstance,fetch,xhr.response,storeSuccess,storeError)};var performCachedXhr=(fetch,xhr,e)=>{fetchXHR(fetch,cacheResultAndReportSuccess,reportError,reportProgress,reportReadyStateChange)};var requestMethod=UTF8ToString(fetch_attr+0);var fetchAttrReplace=!!(fetchAttributes&16);var fetchAttrPersistFile=!!(fetchAttributes&4);var fetchAttrNoDownload=!!(fetchAttributes&32);if(requestMethod==="EM_IDB_STORE"){var ptr=HEAPU32[fetch_attr+84>>2];var size=HEAPU32[fetch_attr+88>>2];fetchCacheData(Fetch.dbInstance,fetch,HEAPU8.slice(ptr,ptr+size),reportSuccess,reportError)}else if(requestMethod==="EM_IDB_DELETE"){fetchDeleteCachedData(Fetch.dbInstance,fetch,reportSuccess,reportError)}else if(!fetchAttrReplace){fetchLoadCachedData(Fetch.dbInstance,fetch,reportSuccess,fetchAttrNoDownload?reportError:fetchAttrPersistFile?performCachedXhr:performUncachedXhr)}else if(!fetchAttrNoDownload){fetchXHR(fetch,fetchAttrPersistFile?cacheResultAndReportSuccess:reportSuccess,reportError,reportProgress,reportReadyStateChange)}else{return 0}return fetch}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _getentropy(buffer,size){randomFill(HEAPU8.subarray(buffer,buffer+size));return 0}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _glBindVertexArrayOES=_glBindVertexArray;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}function _glClear(x0){GLctx.clear(x0)}function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glEnable(x0){GLctx.enable(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var preloadedImages={};var preloadedAudios={};var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;var GLctx;Fetch.init();var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i=0?"":name}).filter(function(name){return!!name}).forEach(function(name){var size=1;var open=name.indexOf("[");var fullname=name;if(open>=0){var close=name.indexOf("]");size=parseInt(name.substring(open+1,close));name=name.substr(0,open);fullname=name+"[0]"}if(!obj[name]){obj[name]={what:type,name:fullname,size:size,location:-1,type:getTypeId(m[1])};if(vec)vec.push(name)}})})}program.uniforms={};program.uniformVec=[];program.attributes=program.nextAttributes;program.attributeVec=program.nextAttributeVec;program.nextAttributes={};program.nextAttributeVec=[];var existingAttributes={};program.shaders.forEach(function(shader){parseElementType(shader,"uniform",program.uniforms,program.uniformVec);parseElementType(shader,"attribute",existingAttributes,null)});for(var attr in existingAttributes){if(!(attr in program.attributes)){var index=program.attributeVec.length;program.attributes[attr]={what:"attribute",name:attr,size:-1,location:index,type:"?"};program.attributeVec[index]=attr;commandBuffer.push(13,program.id,index,attr)}program.attributes[attr].size=existingAttributes[attr].size;program.attributes[attr].type=existingAttributes[attr].type}commandBuffer.push(14,program.id)};this.getProgramParameter=function(program,name){switch(name){case this.ACTIVE_UNIFORMS:return program.uniformVec.length;case this.ACTIVE_ATTRIBUTES:return program.attributeVec.length;case this.LINK_STATUS:{commandBuffer.push(15,program.id,name);return true}default:throw"bad getProgramParameter "+revname(name)}};this.getActiveAttrib=function(program,index){var name=program.attributeVec[index];if(!name)return null;return program.attributes[name]};this.getActiveUniform=function(program,index){var name=program.uniformVec[index];if(!name)return null;return program.uniforms[name]};this.getUniformLocation=function(program,name){var fullname=name;var index=-1;var open=name.indexOf("[");if(open>=0){var close=name.indexOf("]");index=parseInt(name.substring(open+1,close));name=name.substr(0,open)}if(!(name in program.uniforms))return null;var id=nextId++;commandBuffer.push(16,program.id,fullname,id);return{what:"location",uniform:program.uniforms[name],id:id,index:index}};this.getProgramInfoLog=function(shader){return""};this.useProgram=function(program){commandBuffer.push(17,program?program.id:0);bindings.program=program};this.uniform1i=function(location,data){if(!location)return;commandBuffer.push(18,location.id,data)};this.uniform1f=function(location,data){if(!location)return;commandBuffer.push(19,location.id,data)};this.uniform3fv=function(location,data){if(!location)return;commandBuffer.push(20,location.id,new Float32Array(data))};this.uniform4f=function(location,x,y,z,w){if(!location)return;commandBuffer.push(21,location.id,new Float32Array([x,y,z,w]))};this.uniform4fv=function(location,data){if(!location)return;commandBuffer.push(21,location.id,new Float32Array(data))};this.uniformMatrix4fv=function(location,transpose,data){if(!location)return;commandBuffer.push(22,location.id,transpose,new Float32Array(data))};this.vertexAttrib4fv=function(index,values){commandBuffer.push(23,index,new Float32Array(values))};this.createBuffer=function(){var id=nextId++;commandBuffer.push(24,id);return new WebGLBuffer(id)};this.deleteBuffer=function(buffer){if(!buffer)return;commandBuffer.push(25,buffer.id)};this.bindBuffer=function(target,buffer){commandBuffer.push(26,target,buffer?buffer.id:0);switch(target){case this.ARRAY_BUFFER_BINDING:{bindings.arrayBuffer=buffer;break}case this.ELEMENT_ARRAY_BUFFER_BINDING:{bindings.elementArrayBuffer=buffer;break}}};function duplicate(something){if(!something||typeof something=="number")return something;if(something.slice)return something.slice(0);return new something.constructor(something)}this.bufferData=function(target,something,usage){commandBuffer.push(27,target,duplicate(something),usage)};this.bufferSubData=function(target,offset,something){commandBuffer.push(28,target,offset,duplicate(something))};this.viewport=function(x,y,w,h){commandBuffer.push(29,x,y,w,h)};this.vertexAttribPointer=function(index,size,type,normalized,stride,offset){commandBuffer.push(30,index,size,type,normalized,stride,offset)};this.enableVertexAttribArray=function(index){commandBuffer.push(31,index)};this.disableVertexAttribArray=function(index){commandBuffer.push(32,index)};this.drawArrays=function(mode,first,count){commandBuffer.push(33,mode,first,count)};this.drawElements=function(mode,count,type,offset){commandBuffer.push(34,mode,count,type,offset)};this.getError=function(){commandBuffer.push(35);return this.NO_ERROR};this.createTexture=function(){var id=nextId++;commandBuffer.push(36,id);return new WebGLTexture(id)};this.deleteTexture=function(texture){if(!texture)return;commandBuffer.push(37,texture.id);texture.id=0};this.isTexture=function(texture){return texture&&texture.what==="texture"&&texture.id>0&&texture.binding};this.bindTexture=function(target,texture){switch(target){case that.TEXTURE_2D:{bindings.texture2D=texture;break}}if(texture)texture.binding=target;commandBuffer.push(38,target,texture?texture.id:0)};this.texParameteri=function(target,pname,param){commandBuffer.push(39,target,pname,param)};this.texImage2D=function(target,level,internalformat,width,height,border,format,type,pixels){if(pixels===undefined){format=width;type=height;pixels=border;assert(pixels instanceof Image);assert(internalformat===format&&format===this.RGBA);assert(type===this.UNSIGNED_BYTE);var data=pixels.data;width=data.width;height=data.height;border=0;pixels=new Uint8Array(data.data)}commandBuffer.push(40,target,level,internalformat,width,height,border,format,type,duplicate(pixels))};this.compressedTexImage2D=function(target,level,internalformat,width,height,border,pixels){commandBuffer.push(41,target,level,internalformat,width,height,border,duplicate(pixels))};this.activeTexture=function(texture){commandBuffer.push(42,texture);bindings.activeTexture=texture};this.getShaderParameter=function(shader,pname){switch(pname){case this.SHADER_TYPE:return shader.type;case this.COMPILE_STATUS:{commandBuffer.push(43,shader.id,pname);return true}default:throw"unsupported getShaderParameter "+pname}};this.clearDepth=function(depth){commandBuffer.push(44,depth)};this.depthFunc=function(depth){commandBuffer.push(45,depth)};this.frontFace=function(depth){commandBuffer.push(46,depth)};this.cullFace=function(depth){commandBuffer.push(47,depth)};this.readPixels=function(depth){abort("readPixels is impossible, we are async GL")};this.pixelStorei=function(pname,param){commandBuffer.push(48,pname,param)};this.depthMask=function(flag){commandBuffer.push(49,flag)};this.depthRange=function(near,far){commandBuffer.push(50,near,far)};this.blendFunc=function(sfactor,dfactor){commandBuffer.push(51,sfactor,dfactor);bindings.blendSrcRGB=bindings.blendSrcAlpha=sfactor;bindings.blendDstRGB=bindings.blendDstAlpha=dfactor};this.scissor=function(x,y,width,height){commandBuffer.push(52,x,y,width,height)};this.colorMask=function(red,green,blue,alpha){commandBuffer.push(53,red,green,blue,alpha)};this.lineWidth=function(width){commandBuffer.push(54,width)};this.createFramebuffer=function(){var id=nextId++;commandBuffer.push(55,id);return new WebGLFramebuffer(id)};this.deleteFramebuffer=function(framebuffer){if(!framebuffer)return;commandBuffer.push(56,framebuffer.id)};this.bindFramebuffer=function(target,framebuffer){commandBuffer.push(57,target,framebuffer?framebuffer.id:0);bindings.framebuffer=framebuffer};this.framebufferTexture2D=function(target,attachment,textarget,texture,level){commandBuffer.push(58,target,attachment,textarget,texture?texture.id:0,level)};this.checkFramebufferStatus=function(target){return this.FRAMEBUFFER_COMPLETE};this.createRenderbuffer=function(){var id=nextId++;commandBuffer.push(59,id);return new WebGLRenderbuffer(id)};this.deleteRenderbuffer=function(renderbuffer){if(!renderbuffer)return;commandBuffer.push(60,renderbuffer.id)};this.bindRenderbuffer=function(target,renderbuffer){commandBuffer.push(61,target,renderbuffer?renderbuffer.id:0)};this.renderbufferStorage=function(target,internalformat,width,height){commandBuffer.push(62,target,internalformat,width,height)};this.framebufferRenderbuffer=function(target,attachment,renderbuffertarget,renderbuffer){commandBuffer.push(63,target,attachment,renderbuffertarget,renderbuffer?renderbuffer.id:0)};this.debugPrint=function(text){commandBuffer.push(64,text)};this.hint=function(target,mode){commandBuffer.push(65,target,mode);if(target==this.GENERATE_MIPMAP_HINT)bindings.generateMipmapHint=mode};this.blendEquation=function(mode){commandBuffer.push(66,mode);bindings.blendEquationRGB=bindings.blendEquationAlpha=mode};this.generateMipmap=function(target){commandBuffer.push(67,target)};this.uniformMatrix3fv=function(location,transpose,data){if(!location)return;commandBuffer.push(68,location.id,transpose,new Float32Array(data))};this.stencilMask=function(mask){commandBuffer.push(69,mask)};this.clearStencil=function(s){commandBuffer.push(70,s)};this.texSubImage2D=function(target,level,xoffset,yoffset,width,height,format,type,pixels){if(pixels===undefined){var formatTemp=format;format=width;type=height;pixels=formatTemp;assert(pixels instanceof Image);assert(format===this.RGBA);assert(type===this.UNSIGNED_BYTE);var data=pixels.data;width=data.width;height=data.height;pixels=new Uint8Array(data.data)}commandBuffer.push(71,target,level,xoffset,yoffset,width,height,format,type,duplicate(pixels))};this.uniform3f=function(location,x,y,z){if(!location)return;commandBuffer.push(72,location.id,x,y,z)};this.blendFuncSeparate=function(srcRGB,dstRGB,srcAlpha,dstAlpha){commandBuffer.push(73,srcRGB,dstRGB,srcAlpha,dstAlpha);bindings.blendSrcRGB=srcRGB;bindings.blendSrcAlpha=srcAlpha;bindings.blendDstRGB=dstRGB;bindings.blendDstAlpha=dstAlpha};this.uniform2fv=function(location,data){if(!location)return;commandBuffer.push(74,location.id,new Float32Array(data))};this.texParameterf=function(target,pname,param){commandBuffer.push(75,target,pname,param)};this.isContextLost=function(){commandBuffer.push(76);return false};this.isProgram=function(program){return program&&program.what==="program"};this.blendEquationSeparate=function(rgb,alpha){commandBuffer.push(77,rgb,alpha);bindings.blendEquationRGB=rgb;bindings.blendEquationAlpha=alpha};this.stencilFuncSeparate=function(face,func,ref,mask){commandBuffer.push(78,face,func,ref,mask)};this.stencilOpSeparate=function(face,fail,zfail,zpass){commandBuffer.push(79,face,fail,zfail,zpass)};this.drawBuffersWEBGL=function(buffers){commandBuffer.push(80,buffers)};this.uniform1iv=function(location,data){if(!location)return;commandBuffer.push(81,location.id,new Int32Array(data))};this.uniform1fv=function(location,data){if(!location)return;commandBuffer.push(82,location.id,new Float32Array(data))};var theoreticalTracker=new FPSTracker("server (theoretical)");var throttledTracker=new FPSTracker("server (client-throttled)");function preRAF(){if(Math.abs(frameId-clientFrameId)>=4){return false}}var postRAFed=false;function postRAF(){if(commandBuffer.length>0){postMessage({target:"gl",op:"render",commandBuffer:commandBuffer});commandBuffer=[]}postRAFed=true}assert(!Browser.doSwapBuffers);Browser.doSwapBuffers=postRAF;var trueRAF=window.requestAnimationFrame;window.requestAnimationFrame=function(func){trueRAF(function(){if(preRAF()===false){window.requestAnimationFrame(func);return}postRAFed=false;func();if(!postRAFed){postRAF()}})}}WebGLWorker.prototype.prefetchedParameters={};WebGLWorker.prototype.prefetchedExtensions={};WebGLWorker.prototype.prefetchedPrecisions={};if(typeof console=="undefined"){var console={log:function(x){if(typeof dump=="function")dump(`log: ${x}\n`)},debug:function(x){if(typeof dump=="function")dump(`debug: ${x}\n`)},info:function(x){if(typeof dump=="function")dump(`info: ${x}\n`)},warn:function(x){if(typeof dump=="function")dump(`warn: ${x}\n`)},error:function(x){if(typeof dump=="function")dump(`error: ${x}\n`)}}}function FPSTracker(text){var last=0;var mean=0;var counter=0;this.tick=function(){var now=Date.now();if(last>0){var diff=now-last;mean=.99*mean+.01*diff;if(counter++===60){counter=0;dump(text+" fps: "+(1e3/mean).toFixed(2)+"\n")}}last=now}}function Element(){throw"TODO: Element"}function PropertyBag(){this.addProperty=function(){};this.removeProperty=function(){};this.setProperty=function(){}}var IndexedObjects={nextId:1,cache:{},add:function(object){object.id=this.nextId++;this.cache[object.id]=object}};function EventListener(){this.listeners={};this.addEventListener=function addEventListener(event,func){if(!this.listeners[event])this.listeners[event]=[];this.listeners[event].push(func)};this.removeEventListener=function(event,func){var list=this.listeners[event];if(!list)return;var me=list.indexOf(func);if(me<0)return;list.splice(me,1)};this.fireEvent=function fireEvent(event){event.preventDefault=function(){};if(event.type in this.listeners){this.listeners[event.type].forEach(listener=>listener(event))}}}function Image(){IndexedObjects.add(this);EventListener.call(this);var src="";Object.defineProperty(this,"src",{set:function(value){src=value;assert(this.id);postMessage({target:"Image",method:"src",src:src,id:this.id})},get:function(){return src}})}Image.prototype.onload=function(){};Image.prototype.onerror=function(){};var window=this;var windowExtra=new EventListener;for(var x in windowExtra)window[x]=windowExtra[x];window.close=function window_close(){postMessage({target:"window",method:"close"})};window.alert=function(text){err("alert forever: "+text);while(1){}};window.scrollX=window.scrollY=0;window.WebGLRenderingContext=WebGLWorker;window.requestAnimationFrame=function(){var nextRAF=0;return function(func){var now=Date.now();if(nextRAF===0){nextRAF=now+1e3/60}else{while(now+2>=nextRAF){nextRAF+=1e3/60}}var delay=Math.max(nextRAF-now,0);setTimeout(func,delay)}}();var webGLWorker=new WebGLWorker;var document=new EventListener;document.createElement=function document_createElement(what){switch(what){case"canvas":{var canvas=new EventListener;canvas.ensureData=function canvas_ensureData(){if(!canvas.data||canvas.data.width!==canvas.width||canvas.data.height!==canvas.height){canvas.data={width:canvas.width,height:canvas.height,data:new Uint8Array(canvas.width*canvas.height*4)};if(canvas===Module["canvas"]){postMessage({target:"canvas",op:"resize",width:canvas.width,height:canvas.height})}}};canvas.getContext=function canvas_getContext(type,attributes){if(canvas===Module["canvas"]){postMessage({target:"canvas",op:"getContext",type:type,attributes:attributes})}if(type==="2d"){return{getImageData:function(x,y,w,h){assert(x==0&&y==0&&w==canvas.width&&h==canvas.height);canvas.ensureData();return{width:canvas.data.width,height:canvas.data.height,data:new Uint8Array(canvas.data.data)}},putImageData:function(image,x,y){canvas.ensureData();assert(x==0&&y==0&&image.width==canvas.width&&image.height==canvas.height);canvas.data.data.set(image.data);if(canvas===Module["canvas"]){postMessage({target:"canvas",op:"render",image:canvas.data})}},drawImage:function(image,x,y,w,h,ox,oy,ow,oh){assert(!x&&!y&&!ox&&!oy);assert(w===ow&&h===oh);assert(canvas.width===w||w===undefined);assert(canvas.height===h||h===undefined);assert(image.width===canvas.width&&image.height===canvas.height);canvas.ensureData();canvas.data.data.set(image.data.data);if(canvas===Module["canvas"]){postMessage({target:"canvas",op:"render",image:canvas.data})}}}}else{return webGLWorker}};canvas.boundingClientRect={};canvas.getBoundingClientRect=function canvas_getBoundingClientRect(){return{width:canvas.boundingClientRect.width,height:canvas.boundingClientRect.height,top:canvas.boundingClientRect.top,left:canvas.boundingClientRect.left,bottom:canvas.boundingClientRect.bottom,right:canvas.boundingClientRect.right}};canvas.style=new PropertyBag;canvas.exitPointerLock=function(){};canvas.width_=canvas.width_||0;canvas.height_=canvas.height_||0;Object.defineProperty(canvas,"width",{set:function(value){canvas.width_=value;if(canvas===Module["canvas"]){postMessage({target:"canvas",op:"resize",width:canvas.width_,height:canvas.height_})}},get:function(){return canvas.width_}});Object.defineProperty(canvas,"height",{set:function(value){canvas.height_=value;if(canvas===Module["canvas"]){postMessage({target:"canvas",op:"resize",width:canvas.width_,height:canvas.height_})}},get:function(){return canvas.height_}});var style={parentCanvas:canvas,removeProperty:function(){},setProperty:function(){}};Object.defineProperty(style,"cursor",{set:function(value){if(!style.cursor_||style.cursor_!==value){style.cursor_=value;if(style.parentCanvas===Module["canvas"]){postMessage({target:"canvas",op:"setObjectProperty",object:"style",property:"cursor",value:style.cursor_})}}},get:function(){return style.cursor_}});canvas.style=style;return canvas}default:throw"document.createElement "+what}};document.getElementById=function(id){if(id==="canvas"||id==="application-canvas"){return Module.canvas}throw"document.getElementById failed on "+id};document.querySelector=function(id){if(id==="#canvas"||id==="#application-canvas"||id==="canvas"||id==="application-canvas"){return Module.canvas}throw"document.querySelector failed on "+id};document.documentElement={};document.styleSheets=[{cssRules:[],insertRule:function(rule,i){this.cssRules.splice(i,0,rule)}}];document.URL="http://worker.not.yet.ready.wait.for.window.onload?fake";function Audio(){warnOnce("faking Audio elements, no actual sound will play")}Audio.prototype=new EventListener;Object.defineProperty(Audio.prototype,"src",{set:function(value){if(value[0]==="d")return;this.onerror()}});Audio.prototype.play=function(){};Audio.prototype.pause=function(){};Audio.prototype.cloneNode=function(){return new Audio};var screen={width:0,height:0};Module.canvas=document.createElement("canvas");Module.setStatus=function(){};out=function Module_print(x){postMessage({target:"stdout",content:x})};err=function Module_printErr(x){postMessage({target:"stderr",content:x})};var frameId=0;var clientFrameId=0;var postMainLoop=Module["postMainLoop"];Module["postMainLoop"]=function(){if(postMainLoop)postMainLoop();postMessage({target:"tick",id:frameId++});commandBuffer=[]};addRunDependency("gl-prefetch");addRunDependency("worker-init");var messageBuffer=null;var messageResenderTimeout=null;var calledMain=false;if(!Module["postRun"])Module["postRun"]=[];if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];Module["postRun"].push(()=>{calledMain=true});function messageResender(){if(calledMain){assert(messageBuffer&&messageBuffer.length>0);messageResenderTimeout=null;messageBuffer.forEach(message=>onmessage(message));messageBuffer=null}else{messageResenderTimeout=setTimeout(messageResender,100)}}function onMessageFromMainEmscriptenThread(message){if(!calledMain&&!message.data.preMain){if(!messageBuffer){messageBuffer=[];messageResenderTimeout=setTimeout(messageResender,100)}messageBuffer.push(message);return}if(calledMain&&messageResenderTimeout){clearTimeout(messageResenderTimeout);messageResender()}switch(message.data.target){case"document":{document.fireEvent(message.data.event);break}case"window":{window.fireEvent(message.data.event);break}case"canvas":{if(message.data.event){Module.canvas.fireEvent(message.data.event)}else if(message.data.boundingClientRect){Module.canvas.boundingClientRect=message.data.boundingClientRect}else throw"ey?";break}case"gl":{webGLWorker.onmessage(message.data);break}case"tock":{clientFrameId=message.data.id;break}case"Image":{var img=IndexedObjects.cache[message.data.id];switch(message.data.method){case"onload":{img.width=message.data.width;img.height=message.data.height;img.data={width:img.width,height:img.height,data:message.data.data};img.complete=true;img.onload();break}case"onerror":{img.onerror({srcElement:img});break}}break}case"IDBStore":{assert(message.data.method==="response");assert(IDBStore.pending);IDBStore.pending(message.data);break}case"worker-init":{Module.canvas=document.createElement("canvas");screen.width=Module.canvas.width_=message.data.width;screen.height=Module.canvas.height_=message.data.height;Module.canvas.boundingClientRect=message.data.boundingClientRect;document.URL=message.data.URL;window.fireEvent({type:"load"});removeRunDependency("worker-init");break}case"custom":{if(Module["onCustomMessage"]){Module["onCustomMessage"](message)}else{throw"Custom message received but worker Module.onCustomMessage not implemented."}break}case"setimmediate":{if(Module["setImmediates"])Module["setImmediates"].shift()();break}default:throw"wha? "+message.data.target}}onmessage=onMessageFromMainEmscriptenThread;if(typeof specialHTMLTargets!="undefined"){specialHTMLTargets=[0,document,window]}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/Adventures in Lestoria/pge.wasm b/Adventures in Lestoria/pge.wasm new file mode 100644 index 00000000..dc5c3cab Binary files /dev/null and b/Adventures in Lestoria/pge.wasm differ diff --git a/Crawler/pixelGameEngine.cpp b/Adventures in Lestoria/pixelGameEngine.cpp similarity index 96% rename from Crawler/pixelGameEngine.cpp rename to Adventures in Lestoria/pixelGameEngine.cpp index 3073dcb5..8d693b5c 100644 --- a/Crawler/pixelGameEngine.cpp +++ b/Adventures in Lestoria/pixelGameEngine.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/play.html b/Adventures in Lestoria/play.html similarity index 100% rename from Crawler/play.html rename to Adventures in Lestoria/play.html diff --git a/Adventures in Lestoria/resource.h b/Adventures in Lestoria/resource.h new file mode 100644 index 00000000..c6a96a64 --- /dev/null +++ b/Adventures in Lestoria/resource.h @@ -0,0 +1,1624 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Adventures in Lestoria.rc +// +#define VERSION_MAJOR 0 +#define SW_HIDE 0 +#define HIDE_WINDOW 0 +#define WM_NULL 0x0000 +#define WA_INACTIVE 0 +#define HTNOWHERE 0 +#define SMTO_NORMAL 0x0000 +#define ICON_SMALL 0 +#define SIZE_RESTORED 0 +#define BN_CLICKED 0 +#define BST_UNCHECKED 0x0000 +#define HDS_HORZ 0x0000 +#define TBSTYLE_BUTTON 0x0000 +#define TBS_HORZ 0x0000 +#define TBS_BOTTOM 0x0000 +#define TBS_RIGHT 0x0000 +#define LVS_ICON 0x0000 +#define LVS_ALIGNTOP 0x0000 +#define TCS_TABS 0x0000 +#define TCS_SINGLELINE 0x0000 +#define TCS_RIGHTJUSTIFY 0x0000 +#define DTS_SHORTDATEFORMAT 0x0000 +#define PGS_VERT 0x00000000 +#define LANG_NEUTRAL 0x00 +#define SUBLANG_NEUTRAL 0x00 +#define SORT_DEFAULT 0x0 +#define SORT_JAPANESE_XJIS 0x0 +#define SORT_CHINESE_BIG5 0x0 +#define SORT_CHINESE_PRCP 0x0 +#define SORT_KOREAN_KSC 0x0 +#define SORT_HUNGARIAN_DEFAULT 0x0 +#define SORT_GEORGIAN_TRADITIONAL 0x0 +#define _USE_DECLSPECS_FOR_SAL 0 +#define _USE_ATTRIBUTES_FOR_SAL 0 +#define __drv_typeConst 0 +#define VERSION_PATCH 1 +#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 +#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID 1 +#define SW_SHOWNORMAL 1 +#define SW_NORMAL 1 +#define SHOW_OPENWINDOW 1 +#define SW_PARENTCLOSING 1 +#define VK_LBUTTON 0x01 +#define WM_CREATE 0x0001 +#define WA_ACTIVE 1 +#define PWR_OK 1 +#define PWR_SUSPENDREQUEST 1 +#define NFR_ANSI 1 +#define UIS_SET 1 +#define UISF_HIDEFOCUS 0x1 +#define XBUTTON1 0x0001 +#define WMSZ_LEFT 1 +#define HTCLIENT 1 +#define SMTO_BLOCK 0x0001 +#define MA_ACTIVATE 1 +#define ICON_BIG 1 +#define SIZE_MINIMIZED 1 +#define MK_LBUTTON 0x0001 +#define TME_HOVER 0x00000001 +#define CS_VREDRAW 0x0001 +#define CF_TEXT 1 +#define SCF_ISSECURE 0x00000001 +#define IDOK 1 +#define BN_PAINT 1 +#define BST_CHECKED 0x0001 +#define TBSTYLE_SEP 0x0001 +#define TTS_ALWAYSTIP 0x01 +#define TBS_AUTOTICKS 0x0001 +#define UDS_WRAP 0x0001 +#define PBS_SMOOTH 0x01 +#define LWS_TRANSPARENT 0x0001 +#define LVS_REPORT 0x0001 +#define TVS_HASBUTTONS 0x0001 +#define TVS_EX_NOSINGLECOLLAPSE 0x0001 +#define TCS_SCROLLOPPOSITE 0x0001 +#define ACS_CENTER 0x0001 +#define MCS_DAYSTATE 0x0001 +#define DTS_UPDOWN 0x0001 +#define PGS_HORZ 0x00000001 +#define NFS_EDIT 0x0001 +#define BCSIF_GLYPH 0x0001 +#define BCSS_NOSPLIT 0x0001 +#define LANG_ARABIC 0x01 +#define SUBLANG_DEFAULT 0x01 +#define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01 +#define SUBLANG_ALBANIAN_ALBANIA 0x01 +#define SUBLANG_ALSATIAN_FRANCE 0x01 +#define SUBLANG_AMHARIC_ETHIOPIA 0x01 +#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 +#define SUBLANG_ARMENIAN_ARMENIA 0x01 +#define SUBLANG_ASSAMESE_INDIA 0x01 +#define SUBLANG_AZERI_LATIN 0x01 +#define SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN 0x01 +#define SUBLANG_BANGLA_INDIA 0x01 +#define SUBLANG_BASHKIR_RUSSIA 0x01 +#define SUBLANG_BASQUE_BASQUE 0x01 +#define SUBLANG_BELARUSIAN_BELARUS 0x01 +#define SUBLANG_BENGALI_INDIA 0x01 +#define SUBLANG_BRETON_FRANCE 0x01 +#define SUBLANG_BULGARIAN_BULGARIA 0x01 +#define SUBLANG_CATALAN_CATALAN 0x01 +#define SUBLANG_CENTRAL_KURDISH_IRAQ 0x01 +#define SUBLANG_CHEROKEE_CHEROKEE 0x01 +#define SUBLANG_CHINESE_TRADITIONAL 0x01 +#define SUBLANG_CORSICAN_FRANCE 0x01 +#define SUBLANG_CZECH_CZECH_REPUBLIC 0x01 +#define SUBLANG_CROATIAN_CROATIA 0x01 +#define SUBLANG_DANISH_DENMARK 0x01 +#define SUBLANG_DARI_AFGHANISTAN 0x01 +#define SUBLANG_DIVEHI_MALDIVES 0x01 +#define SUBLANG_DUTCH 0x01 +#define SUBLANG_ENGLISH_US 0x01 +#define SUBLANG_ESTONIAN_ESTONIA 0x01 +#define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01 +#define SUBLANG_FILIPINO_PHILIPPINES 0x01 +#define SUBLANG_FINNISH_FINLAND 0x01 +#define SUBLANG_FRENCH 0x01 +#define SUBLANG_FRISIAN_NETHERLANDS 0x01 +#define SUBLANG_GALICIAN_GALICIAN 0x01 +#define SUBLANG_GEORGIAN_GEORGIA 0x01 +#define SUBLANG_GERMAN 0x01 +#define SUBLANG_GREEK_GREECE 0x01 +#define SUBLANG_GREENLANDIC_GREENLAND 0x01 +#define SUBLANG_GUJARATI_INDIA 0x01 +#define SUBLANG_HAUSA_NIGERIA_LATIN 0x01 +#define SUBLANG_HAWAIIAN_US 0x01 +#define SUBLANG_HEBREW_ISRAEL 0x01 +#define SUBLANG_HINDI_INDIA 0x01 +#define SUBLANG_HUNGARIAN_HUNGARY 0x01 +#define SUBLANG_ICELANDIC_ICELAND 0x01 +#define SUBLANG_IGBO_NIGERIA 0x01 +#define SUBLANG_INDONESIAN_INDONESIA 0x01 +#define SUBLANG_INUKTITUT_CANADA 0x01 +#define SUBLANG_ITALIAN 0x01 +#define SUBLANG_JAPANESE_JAPAN 0x01 +#define SUBLANG_KANNADA_INDIA 0x01 +#define SUBLANG_KAZAK_KAZAKHSTAN 0x01 +#define SUBLANG_KHMER_CAMBODIA 0x01 +#define SUBLANG_KICHE_GUATEMALA 0x01 +#define SUBLANG_KINYARWANDA_RWANDA 0x01 +#define SUBLANG_KONKANI_INDIA 0x01 +#define SUBLANG_KOREAN 0x01 +#define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01 +#define SUBLANG_LAO_LAO 0x01 +#define SUBLANG_LATVIAN_LATVIA 0x01 +#define SUBLANG_LITHUANIAN 0x01 +#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01 +#define SUBLANG_MACEDONIAN_MACEDONIA 0x01 +#define SUBLANG_MALAY_MALAYSIA 0x01 +#define SUBLANG_MALAYALAM_INDIA 0x01 +#define SUBLANG_MALTESE_MALTA 0x01 +#define SUBLANG_MAORI_NEW_ZEALAND 0x01 +#define SUBLANG_MAPUDUNGUN_CHILE 0x01 +#define SUBLANG_MARATHI_INDIA 0x01 +#define SUBLANG_MOHAWK_MOHAWK 0x01 +#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01 +#define SUBLANG_NEPALI_NEPAL 0x01 +#define SUBLANG_NORWEGIAN_BOKMAL 0x01 +#define SUBLANG_OCCITAN_FRANCE 0x01 +#define SUBLANG_ODIA_INDIA 0x01 +#define SUBLANG_ORIYA_INDIA 0x01 +#define SUBLANG_PASHTO_AFGHANISTAN 0x01 +#define SUBLANG_PERSIAN_IRAN 0x01 +#define SUBLANG_POLISH_POLAND 0x01 +#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 +#define SUBLANG_PUNJABI_INDIA 0x01 +#define SUBLANG_QUECHUA_BOLIVIA 0x01 +#define SUBLANG_ROMANIAN_ROMANIA 0x01 +#define SUBLANG_ROMANSH_SWITZERLAND 0x01 +#define SUBLANG_RUSSIAN_RUSSIA 0x01 +#define SUBLANG_SAKHA_RUSSIA 0x01 +#define SUBLANG_SAMI_NORTHERN_NORWAY 0x01 +#define SUBLANG_SANSKRIT_INDIA 0x01 +#define SUBLANG_SCOTTISH_GAELIC 0x01 +#define SUBLANG_SERBIAN_CROATIA 0x01 +#define SUBLANG_SINDHI_INDIA 0x01 +#define SUBLANG_SINHALESE_SRI_LANKA 0x01 +#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01 +#define SUBLANG_SLOVAK_SLOVAKIA 0x01 +#define SUBLANG_SLOVENIAN_SLOVENIA 0x01 +#define SUBLANG_SPANISH 0x01 +#define SUBLANG_SWAHILI_KENYA 0x01 +#define SUBLANG_SWEDISH 0x01 +#define SUBLANG_SYRIAC_SYRIA 0x01 +#define SUBLANG_TAJIK_TAJIKISTAN 0x01 +#define SUBLANG_TAMIL_INDIA 0x01 +#define SUBLANG_TATAR_RUSSIA 0x01 +#define SUBLANG_TELUGU_INDIA 0x01 +#define SUBLANG_THAI_THAILAND 0x01 +#define SUBLANG_TIBETAN_PRC 0x01 +#define SUBLANG_TIGRINYA_ETHIOPIA 0x01 +#define SUBLANG_TSWANA_SOUTH_AFRICA 0x01 +#define SUBLANG_TURKISH_TURKEY 0x01 +#define SUBLANG_TURKMEN_TURKMENISTAN 0x01 +#define SUBLANG_UIGHUR_PRC 0x01 +#define SUBLANG_UKRAINIAN_UKRAINE 0x01 +#define SUBLANG_UPPER_SORBIAN_GERMANY 0x01 +#define SUBLANG_URDU_PAKISTAN 0x01 +#define SUBLANG_UZBEK_LATIN 0x01 +#define SUBLANG_VIETNAMESE_VIETNAM 0x01 +#define SUBLANG_WELSH_UNITED_KINGDOM 0x01 +#define SUBLANG_WOLOF_SENEGAL 0x01 +#define SUBLANG_XHOSA_SOUTH_AFRICA 0x01 +#define SUBLANG_YAKUT_RUSSIA 0x01 +#define SUBLANG_YI_PRC 0x01 +#define SUBLANG_YORUBA_NIGERIA 0x01 +#define SUBLANG_ZULU_SOUTH_AFRICA 0x01 +#define SORT_INVARIANT_MATH 0x1 +#define SORT_JAPANESE_UNICODE 0x1 +#define SORT_CHINESE_UNICODE 0x1 +#define SORT_KOREAN_UNICODE 0x1 +#define SORT_GERMAN_PHONE_BOOK 0x1 +#define SORT_HUNGARIAN_TECHNICAL 0x1 +#define SORT_GEORGIAN_MODERN 0x1 +#define __drv_typeCond 1 +#define VS_VERSION_INFO 1 +#define VFFF_ISSHAREDFILE 0x0001 +#define VFF_CURNEDEST 0x0001 +#define VIFF_FORCEINSTALL 0x0001 +#define VERSION_MINOR 2 +#define WINAPI_FAMILY_PC_APP 2 +#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2 +#define SW_SHOWMINIMIZED 2 +#define SHOW_ICONWINDOW 2 +#define SW_OTHERZOOM 2 +#define VK_RBUTTON 0x02 +#define WM_DESTROY 0x0002 +#define WA_CLICKACTIVE 2 +#define PWR_SUSPENDRESUME 2 +#define NFR_UNICODE 2 +#define UIS_CLEAR 2 +#define UISF_HIDEACCEL 0x2 +#define XBUTTON2 0x0002 +#define WMSZ_RIGHT 2 +#define HTCAPTION 2 +#define SMTO_ABORTIFHUNG 0x0002 +#define MA_ACTIVATEANDEAT 2 +#define ICON_SMALL2 2 +#define SIZE_MAXIMIZED 2 +#define MK_RBUTTON 0x0002 +#define TME_LEAVE 0x00000002 +#define CS_HREDRAW 0x0002 +#define CF_BITMAP 2 +#define IDCANCEL 2 +#define BN_HILITE 2 +#define BST_INDETERMINATE 0x0002 +#define HDS_BUTTONS 0x0002 +#define TBSTYLE_CHECK 0x0002 +#define TTS_NOPREFIX 0x02 +#define TBS_VERT 0x0002 +#define UDS_SETBUDDYINT 0x0002 +#define LWS_IGNORERETURN 0x0002 +#define LVS_SMALLICON 0x0002 +#define TVS_HASLINES 0x0002 +#define TVS_EX_MULTISELECT 0x0002 +#define TCS_BOTTOM 0x0002 +#define TCS_RIGHT 0x0002 +#define ACS_TRANSPARENT 0x0002 +#define MCS_MULTISELECT 0x0002 +#define DTS_SHOWNONE 0x0002 +#define PGS_AUTOSCROLL 0x00000002 +#define NFS_STATIC 0x0002 +#define BCSIF_IMAGE 0x0002 +#define BCSS_STRETCH 0x0002 +#define LANG_BULGARIAN 0x02 +#define SUBLANG_SYS_DEFAULT 0x02 +#define SUBLANG_ARABIC_IRAQ 0x02 +#define SUBLANG_AZERI_CYRILLIC 0x02 +#define SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC 0x02 +#define SUBLANG_BANGLA_BANGLADESH 0x02 +#define SUBLANG_BENGALI_BANGLADESH 0x02 +#define SUBLANG_CHINESE_SIMPLIFIED 0x02 +#define SUBLANG_DUTCH_BELGIAN 0x02 +#define SUBLANG_ENGLISH_UK 0x02 +#define SUBLANG_FRENCH_BELGIAN 0x02 +#define SUBLANG_FULAH_SENEGAL 0x02 +#define SUBLANG_GERMAN_SWISS 0x02 +#define SUBLANG_INUKTITUT_CANADA_LATIN 0x02 +#define SUBLANG_IRISH_IRELAND 0x02 +#define SUBLANG_ITALIAN_SWISS 0x02 +#define SUBLANG_KASHMIRI_SASIA 0x02 +#define SUBLANG_KASHMIRI_INDIA 0x02 +#define SUBLANG_LOWER_SORBIAN_GERMANY 0x02 +#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 +#define SUBLANG_MONGOLIAN_PRC 0x02 +#define SUBLANG_NEPALI_INDIA 0x02 +#define SUBLANG_NORWEGIAN_NYNORSK 0x02 +#define SUBLANG_PORTUGUESE 0x02 +#define SUBLANG_PULAR_SENEGAL 0x02 +#define SUBLANG_PUNJABI_PAKISTAN 0x02 +#define SUBLANG_QUECHUA_ECUADOR 0x02 +#define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02 +#define SUBLANG_SERBIAN_LATIN 0x02 +#define SUBLANG_SINDHI_PAKISTAN 0x02 +#define SUBLANG_SINDHI_AFGHANISTAN 0x02 +#define SUBLANG_SPANISH_MEXICAN 0x02 +#define SUBLANG_SWEDISH_FINLAND 0x02 +#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02 +#define SUBLANG_TAMIL_SRI_LANKA 0x02 +#define SUBLANG_TIGRIGNA_ERITREA 0x02 +#define SUBLANG_TIGRINYA_ERITREA 0x02 +#define SUBLANG_TSWANA_BOTSWANA 0x02 +#define SUBLANG_URDU_INDIA 0x02 +#define SUBLANG_UZBEK_CYRILLIC 0x02 +#define SUBLANG_VALENCIAN_VALENCIA 0x02 +#define SORT_CHINESE_PRC 0x2 +#define __drv_typeBitset 2 +#define VFF_FILEINUSE 0x0002 +#define VIFF_DONTDELETEOLD 0x0002 +#define WINAPI_FAMILY_PHONE_APP 3 +#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3 +#define SW_SHOWMAXIMIZED 3 +#define SW_MAXIMIZE 3 +#define SHOW_FULLSCREEN 3 +#define SW_PARENTOPENING 3 +#define VK_CANCEL 0x03 +#define WM_MOVE 0x0003 +#define PWR_CRITICALRESUME 3 +#define NF_QUERY 3 +#define UIS_INITIALIZE 3 +#define WMSZ_TOP 3 +#define HTSYSMENU 3 +#define MA_NOACTIVATE 3 +#define SIZE_MAXSHOW 3 +#define CF_METAFILEPICT 3 +#define IDABORT 3 +#define BN_UNHILITE 3 +#define LVS_LIST 0x0003 +#define LVS_TYPEMASK 0x0003 +#define LANG_CATALAN 0x03 +#define LANG_VALENCIAN 0x03 +#define SUBLANG_CUSTOM_DEFAULT 0x03 +#define SUBLANG_ARABIC_EGYPT 0x03 +#define SUBLANG_CHINESE_HONGKONG 0x03 +#define SUBLANG_ENGLISH_AUS 0x03 +#define SUBLANG_FRENCH_CANADIAN 0x03 +#define SUBLANG_GERMAN_AUSTRIAN 0x03 +#define SUBLANG_QUECHUA_PERU 0x03 +#define SUBLANG_SAMI_NORTHERN_FINLAND 0x03 +#define SUBLANG_SERBIAN_CYRILLIC 0x03 +#define SUBLANG_SPANISH_MODERN 0x03 +#define SORT_CHINESE_BOPOMOFO 0x3 +#define __drv_typeExpr 3 +#define WINAPI_FAMILY_SYSTEM 4 +#define ISOLATIONPOLICY_MANIFEST_RESOURCE_ID 4 +#define SW_SHOWNOACTIVATE 4 +#define SHOW_OPENNOACTIVATE 4 +#define SW_OTHERUNZOOM 4 +#define VK_MBUTTON 0x04 +#define NF_REQUERY 4 +#define UISF_ACTIVE 0x4 +#define WMSZ_TOPLEFT 4 +#define HTGROWBOX 4 +#define MA_NOACTIVATEANDEAT 4 +#define SIZE_MAXHIDE 4 +#define MK_SHIFT 0x0004 +#define CF_SYLK 4 +#define IDRETRY 4 +#define BN_DISABLE 4 +#define BST_PUSHED 0x0004 +#define HDS_HOTTRACK 0x0004 +#define TBSTYLE_GROUP 0x0004 +#define TBS_TOP 0x0004 +#define TBS_LEFT 0x0004 +#define UDS_ALIGNRIGHT 0x0004 +#define PBS_VERTICAL 0x04 +#define LWS_NOPREFIX 0x0004 +#define LVS_SINGLESEL 0x0004 +#define TVS_LINESATROOT 0x0004 +#define TVS_EX_DOUBLEBUFFER 0x0004 +#define TCS_MULTISELECT 0x0004 +#define ACS_AUTOPLAY 0x0004 +#define MCS_WEEKNUMBERS 0x0004 +#define DTS_LONGDATEFORMAT 0x0004 +#define PGS_DRAGNDROP 0x00000004 +#define NFS_LISTCOMBO 0x0004 +#define BCSIF_STYLE 0x0004 +#define BCSS_ALIGNLEFT 0x0004 +#define LANG_CHINESE 0x04 +#define LANG_CHINESE_SIMPLIFIED 0x04 +#define SUBLANG_CUSTOM_UNSPECIFIED 0x04 +#define SUBLANG_ARABIC_LIBYA 0x04 +#define SUBLANG_CHINESE_SINGAPORE 0x04 +#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04 +#define SUBLANG_ENGLISH_CAN 0x04 +#define SUBLANG_FRENCH_SWISS 0x04 +#define SUBLANG_GERMAN_LUXEMBOURG 0x04 +#define SUBLANG_SAMI_LULE_NORWAY 0x04 +#define SUBLANG_SPANISH_GUATEMALA 0x04 +#define SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH 0x04 +#define SORT_JAPANESE_RADICALSTROKE 0x4 +#define SORT_CHINESE_RADICALSTROKE 0x4 +#define VFF_BUFFTOOSMALL 0x0004 +#define WINAPI_FAMILY_SERVER 5 +#define ISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID 5 +#define SW_SHOW 5 +#define VK_XBUTTON1 0x05 +#define WM_SIZE 0x0005 +#define WMSZ_TOPRIGHT 5 +#define HTMENU 5 +#define CF_DIF 5 +#define IDIGNORE 5 +#define BN_DOUBLECLICKED 5 +#define LANG_CZECH 0x05 +#define SUBLANG_UI_CUSTOM_DEFAULT 0x05 +#define SUBLANG_ARABIC_ALGERIA 0x05 +#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05 +#define SUBLANG_CHINESE_MACAU 0x05 +#define SUBLANG_ENGLISH_NZ 0x05 +#define SUBLANG_FRENCH_LUXEMBOURG 0x05 +#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 +#define SUBLANG_SAMI_LULE_SWEDEN 0x05 +#define SUBLANG_SPANISH_COSTA_RICA 0x05 +#define WINAPI_FAMILY_GAMES 6 +#define SW_MINIMIZE 6 +#define VK_XBUTTON2 0x06 +#define WM_ACTIVATE 0x0006 +#define WMSZ_BOTTOM 6 +#define HTHSCROLL 6 +#define CF_TIFF 6 +#define IDYES 6 +#define BN_SETFOCUS 6 +#define LANG_DANISH 0x06 +#define SUBLANG_ARABIC_MOROCCO 0x06 +#define SUBLANG_ENGLISH_EIRE 0x06 +#define SUBLANG_FRENCH_MONACO 0x06 +#define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06 +#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06 +#define SUBLANG_SPANISH_PANAMA 0x06 +#define SW_SHOWMINNOACTIVE 7 +#define WM_SETFOCUS 0x0007 +#define WMSZ_BOTTOMLEFT 7 +#define HTVSCROLL 7 +#define CF_OEMTEXT 7 +#define IDNO 7 +#define BN_KILLFOCUS 7 +#define LANG_GERMAN 0x07 +#define SUBLANG_ARABIC_TUNISIA 0x07 +#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 +#define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07 +#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07 +#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 +#define SW_SHOWNA 8 +#define VK_BACK 0x08 +#define WM_KILLFOCUS 0x0008 +#define WMSZ_BOTTOMRIGHT 8 +#define HTMINBUTTON 8 +#define SMTO_NOTIMEOUTIFNOTHUNG 0x0008 +#define MK_CONTROL 0x0008 +#define CS_DBLCLKS 0x0008 +#define CF_DIB 8 +#define IDCLOSE 8 +#define BST_FOCUS 0x0008 +#define HDS_HIDDEN 0x0008 +#define TBSTYLE_DROPDOWN 0x0008 +#define TBS_BOTH 0x0008 +#define UDS_ALIGNLEFT 0x0008 +#define PBS_MARQUEE 0x08 +#define LWS_USEVISUALSTYLE 0x0008 +#define LVS_SHOWSELALWAYS 0x0008 +#define TVS_EDITLABELS 0x0008 +#define TVS_EX_NOINDENTSTATE 0x0008 +#define TCS_FLATBUTTONS 0x0008 +#define ACS_TIMER 0x0008 +#define MCS_NOTODAYCIRCLE 0x0008 +#define NFS_BUTTON 0x0008 +#define BCSIF_SIZE 0x0008 +#define BCSS_IMAGE 0x0008 +#define LANG_GREEK 0x08 +#define SUBLANG_ARABIC_OMAN 0x08 +#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08 +#define SUBLANG_ENGLISH_JAMAICA 0x08 +#define SUBLANG_SAMI_SKOLT_FINLAND 0x08 +#define SUBLANG_SPANISH_VENEZUELA 0x08 +#define SW_RESTORE 9 +#define VK_TAB 0x09 +#define HTMAXBUTTON 9 +#define CF_PALETTE 9 +#define IDHELP 9 +#define DTS_TIMEFORMAT 0x0009 +#define LANG_ENGLISH 0x09 +#define SUBLANG_ARABIC_YEMEN 0x09 +#define SUBLANG_ENGLISH_CARIBBEAN 0x09 +#define SUBLANG_SAMI_INARI_FINLAND 0x09 +#define SUBLANG_SERBIAN_SERBIA_LATIN 0x09 +#define SUBLANG_SPANISH_COLOMBIA 0x09 +#define SW_SHOWDEFAULT 10 +#define WM_ENABLE 0x000A +#define HTLEFT 10 +#define CF_PENDATA 10 +#define IDTRYAGAIN 10 +#define HELP_CONTEXTMENU 0x000a +#define LANG_SPANISH 0x0a +#define SUBLANG_ARABIC_SYRIA 0x0a +#define SUBLANG_ENGLISH_BELIZE 0x0a +#define SUBLANG_SERBIAN_SERBIA_CYRILLIC 0x0a +#define SUBLANG_SPANISH_PERU 0x0a +#define SW_FORCEMINIMIZE 11 +#define SW_MAX 11 +#define WM_SETREDRAW 0x000B +#define HTRIGHT 11 +#define CF_RIFF 11 +#define IDCONTINUE 11 +#define HELP_FINDER 0x000b +#define LANG_FINNISH 0x0b +#define SUBLANG_ARABIC_JORDAN 0x0b +#define SUBLANG_ENGLISH_TRINIDAD 0x0b +#define SUBLANG_SERBIAN_MONTENEGRO_LATIN 0x0b +#define SUBLANG_SPANISH_ARGENTINA 0x0b +#define VK_CLEAR 0x0C +#define WM_SETTEXT 0x000C +#define HTTOP 12 +#define CF_WAVE 12 +#define HELP_WM_HELP 0x000c +#define DTS_SHORTDATECENTURYFORMAT 0x000C +#define LANG_FRENCH 0x0c +#define SUBLANG_ARABIC_LEBANON 0x0c +#define SUBLANG_ENGLISH_ZIMBABWE 0x0c +#define SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC 0x0c +#define SUBLANG_SPANISH_ECUADOR 0x0c +#define VK_RETURN 0x0D +#define WM_GETTEXT 0x000D +#define HTTOPLEFT 13 +#define CF_UNICODETEXT 13 +#define HELP_SETPOPUP_POS 0x000d +#define LANG_HEBREW 0x0d +#define SUBLANG_ARABIC_KUWAIT 0x0d +#define SUBLANG_ENGLISH_PHILIPPINES 0x0d +#define SUBLANG_SPANISH_CHILE 0x0d +#define WM_GETTEXTLENGTH 0x000E +#define HTTOPRIGHT 14 +#define CF_ENHMETAFILE 14 +#define LANG_HUNGARIAN 0x0e +#define SUBLANG_ARABIC_UAE 0x0e +#define SUBLANG_SPANISH_URUGUAY 0x0e +#define WM_PAINT 0x000F +#define HTBOTTOM 15 +#define CF_HDROP 15 +#define LANG_ICELANDIC 0x0f +#define SUBLANG_ARABIC_BAHRAIN 0x0f +#define SUBLANG_SPANISH_PARAGUAY 0x0f +#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID 16 +#define VK_SHIFT 0x10 +#define WM_CLOSE 0x0010 +#define HTBOTTOMLEFT 16 +#define WVR_ALIGNTOP 0x0010 +#define MK_MBUTTON 0x0010 +#define TME_NONCLIENT 0x00000010 +#define CF_LOCALE 16 +#define HELP_TCARD_DATA 0x0010 +#define TBSTYLE_AUTOSIZE 0x0010 +#define TTS_NOANIMATE 0x10 +#define TBS_NOTICKS 0x0010 +#define UDS_AUTOBUDDY 0x0010 +#define PBS_SMOOTHREVERSE 0x10 +#define LWS_USECUSTOMTEXT 0x0010 +#define LVS_SORTASCENDING 0x0010 +#define TVS_DISABLEDRAGDROP 0x0010 +#define TVS_EX_RICHTOOLTIP 0x0010 +#define TCS_FORCEICONLEFT 0x0010 +#define MCS_NOTODAY 0x0010 +#define DTS_APPCANPARSE 0x0010 +#define NFS_ALL 0x0010 +#define LANG_ITALIAN 0x10 +#define SUBLANG_ARABIC_QATAR 0x10 +#define SUBLANG_ENGLISH_INDIA 0x10 +#define SUBLANG_SPANISH_BOLIVIA 0x10 +#define VK_CONTROL 0x11 +#define WM_QUERYENDSESSION 0x0011 +#define HTBOTTOMRIGHT 17 +#define CF_DIBV5 17 +#define HELP_TCARD_OTHER_CALLER 0x0011 +#define LANG_JAPANESE 0x11 +#define SUBLANG_ENGLISH_MALAYSIA 0x11 +#define SUBLANG_SPANISH_EL_SALVADOR 0x11 +#define VK_MENU 0x12 +#define WM_QUIT 0x0012 +#define HTBORDER 18 +#define CF_MAX 18 +#define LANG_KOREAN 0x12 +#define SUBLANG_ENGLISH_SINGAPORE 0x12 +#define SUBLANG_SPANISH_HONDURAS 0x12 +#define VK_PAUSE 0x13 +#define WM_QUERYOPEN 0x0013 +#define HTOBJECT 19 +#define LANG_DUTCH 0x13 +#define SUBLANG_SPANISH_NICARAGUA 0x13 +#define VK_CAPITAL 0x14 +#define WM_ERASEBKGND 0x0014 +#define HTCLOSE 20 +#define LANG_NORWEGIAN 0x14 +#define SUBLANG_SPANISH_PUERTO_RICO 0x14 +#define _SAL_VERSION 20 +#define VK_KANA 0x15 +#define VK_HANGEUL 0x15 +#define VK_HANGUL 0x15 +#define WM_SYSCOLORCHANGE 0x0015 +#define HTHELP 21 +#define LANG_POLISH 0x15 +#define SUBLANG_SPANISH_US 0x15 +#define VK_IME_ON 0x16 +#define WM_ENDSESSION 0x0016 +#define LANG_PORTUGUESE 0x16 +#define VK_JUNJA 0x17 +#define LANG_ROMANSH 0x17 +#define RT_MANIFEST 24 +#define VK_FINAL 0x18 +#define WM_SHOWWINDOW 0x0018 +#define LANG_ROMANIAN 0x18 +#define VK_HANJA 0x19 +#define VK_KANJI 0x19 +#define LANG_RUSSIAN 0x19 +#define VK_IME_OFF 0x1A +#define WM_WININICHANGE 0x001A +#define LANG_BOSNIAN 0x1a +#define LANG_CROATIAN 0x1a +#define LANG_SERBIAN 0x1a +#define VK_ESCAPE 0x1B +#define WM_DEVMODECHANGE 0x001B +#define LANG_SLOVAK 0x1b +#define VK_CONVERT 0x1C +#define WM_ACTIVATEAPP 0x001C +#define LANG_ALBANIAN 0x1c +#define VK_NONCONVERT 0x1D +#define WM_FONTCHANGE 0x001D +#define LANG_SWEDISH 0x1d +#define VK_ACCEPT 0x1E +#define WM_TIMECHANGE 0x001E +#define LANG_THAI 0x1e +#define VK_MODECHANGE 0x1F +#define WM_CANCELMODE 0x001F +#define LANG_TURKISH 0x1f +#define VK_SPACE 0x20 +#define WM_SETCURSOR 0x0020 +#define SMTO_ERRORONEXIT 0x0020 +#define WVR_ALIGNLEFT 0x0020 +#define MK_XBUTTON1 0x0020 +#define CS_OWNDC 0x0020 +#define TBSTYLE_NOPREFIX 0x0020 +#define TTS_NOFADE 0x20 +#define TBS_ENABLESELRANGE 0x0020 +#define UDS_ARROWKEYS 0x0020 +#define LWS_RIGHT 0x0020 +#define LVS_SORTDESCENDING 0x0020 +#define TVS_SHOWSELALWAYS 0x0020 +#define TVS_EX_AUTOHSCROLL 0x0020 +#define TCS_FORCELABELLEFT 0x0020 +#define DTS_RIGHTALIGN 0x0020 +#define NFS_USEFONTASSOC 0x0020 +#define LANG_URDU 0x20 +#define VK_PRIOR 0x21 +#define WM_MOUSEACTIVATE 0x0021 +#define LANG_INDONESIAN 0x21 +#define VK_NEXT 0x22 +#define WM_CHILDACTIVATE 0x0022 +#define LANG_UKRAINIAN 0x22 +#define VK_END 0x23 +#define WM_QUEUESYNC 0x0023 +#define LANG_BELARUSIAN 0x23 +#define VK_HOME 0x24 +#define WM_GETMINMAXINFO 0x0024 +#define LANG_SLOVENIAN 0x24 +#define VK_LEFT 0x25 +#define LANG_ESTONIAN 0x25 +#define VK_UP 0x26 +#define WM_PAINTICON 0x0026 +#define LANG_LATVIAN 0x26 +#define VK_RIGHT 0x27 +#define WM_ICONERASEBKGND 0x0027 +#define LANG_LITHUANIAN 0x27 +#define VK_DOWN 0x28 +#define WM_NEXTDLGCTL 0x0028 +#define LANG_TAJIK 0x28 +#define VK_SELECT 0x29 +#define LANG_FARSI 0x29 +#define LANG_PERSIAN 0x29 +#define VK_PRINT 0x2A +#define WM_SPOOLERSTATUS 0x002A +#define LANG_VIETNAMESE 0x2a +#define VK_EXECUTE 0x2B +#define WM_DRAWITEM 0x002B +#define LANG_ARMENIAN 0x2b +#define VK_SNAPSHOT 0x2C +#define WM_MEASUREITEM 0x002C +#define LANG_AZERI 0x2c +#define LANG_AZERBAIJANI 0x2c +#define VK_INSERT 0x2D +#define WM_DELETEITEM 0x002D +#define LANG_BASQUE 0x2d +#define VK_DELETE 0x2E +#define WM_VKEYTOITEM 0x002E +#define LANG_LOWER_SORBIAN 0x2e +#define LANG_UPPER_SORBIAN 0x2e +#define VK_HELP 0x2F +#define WM_CHARTOITEM 0x002F +#define LANG_MACEDONIAN 0x2f +#define WM_SETFONT 0x0030 +#define WM_GETFONT 0x0031 +#define WM_SETHOTKEY 0x0032 +#define LANG_TSWANA 0x32 +#define WM_GETHOTKEY 0x0033 +#define LANG_XHOSA 0x34 +#define LANG_ZULU 0x35 +#define LANG_AFRIKAANS 0x36 +#define WM_QUERYDRAGICON 0x0037 +#define LANG_GEORGIAN 0x37 +#define LANG_FAEROESE 0x38 +#define WM_COMPAREITEM 0x0039 +#define LANG_HINDI 0x39 +#define LANG_MALTESE 0x3a +#define LANG_SAMI 0x3b +#define LANG_IRISH 0x3c +#define WM_GETOBJECT 0x003D +#define LANG_MALAY 0x3e +#define LANG_KAZAK 0x3f +#define WVR_ALIGNBOTTOM 0x0040 +#define MK_XBUTTON2 0x0040 +#define CS_CLASSDC 0x0040 +#define HDS_DRAGDROP 0x0040 +#define BTNS_SHOWTEXT 0x0040 +#define TTS_BALLOON 0x40 +#define TBS_FIXEDLENGTH 0x0040 +#define UDS_HORZ 0x0040 +#define LVS_SHAREIMAGELISTS 0x0040 +#define TVS_RTLREADING 0x0040 +#define TVS_EX_FADEINOUTEXPANDOS 0x0040 +#define TCS_HOTTRACK 0x0040 +#define MCS_NOTRAILINGDATES 0x0040 +#define LANG_KYRGYZ 0x40 +#define WM_COMPACTING 0x0041 +#define LANG_SWAHILI 0x41 +#define LANG_TURKMEN 0x42 +#define LANG_UZBEK 0x43 +#define WM_COMMNOTIFY 0x0044 +#define LANG_TATAR 0x44 +#define LANG_BANGLA 0x45 +#define LANG_BENGALI 0x45 +#define WM_WINDOWPOSCHANGING 0x0046 +#define LANG_PUNJABI 0x46 +#define WM_WINDOWPOSCHANGED 0x0047 +#define LANG_GUJARATI 0x47 +#define WM_POWER 0x0048 +#define LANG_ODIA 0x48 +#define LANG_ORIYA 0x48 +#define LANG_TAMIL 0x49 +#define WM_COPYDATA 0x004A +#define LANG_TELUGU 0x4a +#define WM_CANCELJOURNAL 0x004B +#define LANG_KANNADA 0x4b +#define LANG_MALAYALAM 0x4c +#define LANG_ASSAMESE 0x4d +#define WM_NOTIFY 0x004E +#define LANG_MARATHI 0x4e +#define LANG_SANSKRIT 0x4f +#define WM_INPUTLANGCHANGEREQUEST 0x0050 +#define LANG_MONGOLIAN 0x50 +#define WM_INPUTLANGCHANGE 0x0051 +#define LANG_TIBETAN 0x51 +#define WM_TCARD 0x0052 +#define LANG_WELSH 0x52 +#define WM_HELP 0x0053 +#define LANG_KHMER 0x53 +#define WM_USERCHANGED 0x0054 +#define LANG_LAO 0x54 +#define WM_NOTIFYFORMAT 0x0055 +#define LANG_GALICIAN 0x56 +#define LANG_KONKANI 0x57 +#define LANG_MANIPURI 0x58 +#define LANG_SINDHI 0x59 +#define LANG_SYRIAC 0x5a +#define VK_LWIN 0x5B +#define LANG_SINHALESE 0x5b +#define VK_RWIN 0x5C +#define LANG_CHEROKEE 0x5c +#define VK_APPS 0x5D +#define LANG_INUKTITUT 0x5d +#define LANG_AMHARIC 0x5e +#define VK_SLEEP 0x5F +#define LANG_TAMAZIGHT 0x5f +#define VK_NUMPAD0 0x60 +#define LANG_KASHMIRI 0x60 +#define VK_NUMPAD1 0x61 +#define LANG_NEPALI 0x61 +#define VK_NUMPAD2 0x62 +#define LANG_FRISIAN 0x62 +#define VK_NUMPAD3 0x63 +#define LANG_PASHTO 0x63 +#define WINAPI_FAMILY_DESKTOP_APP 100 +#define VK_NUMPAD4 0x64 +#define LANG_FILIPINO 0x64 +#define VS_USER_DEFINED 100 +#define VK_NUMPAD5 0x65 +#define LANG_DIVEHI 0x65 +#define IDB_PNG1 101 +#define MAINICON 102 +#define VK_NUMPAD6 0x66 +#define VK_NUMPAD7 0x67 +#define LANG_FULAH 0x67 +#define LANG_PULAR 0x67 +#define IDI_ICON1 103 +#define VK_NUMPAD8 0x68 +#define LANG_HAUSA 0x68 +#define VK_NUMPAD9 0x69 +#define VK_MULTIPLY 0x6A +#define LANG_YORUBA 0x6a +#define VK_ADD 0x6B +#define LANG_QUECHUA 0x6b +#define VK_SEPARATOR 0x6C +#define LANG_SOTHO 0x6c +#define VK_SUBTRACT 0x6D +#define LANG_BASHKIR 0x6d +#define VK_DECIMAL 0x6E +#define LANG_LUXEMBOURGISH 0x6e +#define VK_DIVIDE 0x6F +#define LANG_GREENLANDIC 0x6f +#define VK_F1 0x70 +#define LANG_IGBO 0x70 +#define VK_F2 0x71 +#define VK_F3 0x72 +#define VK_F4 0x73 +#define LANG_TIGRIGNA 0x73 +#define LANG_TIGRINYA 0x73 +#define VK_F5 0x74 +#define VK_F6 0x75 +#define LANG_HAWAIIAN 0x75 +#define VK_F7 0x76 +#define VK_F8 0x77 +#define VK_F9 0x78 +#define WHEEL_DELTA 120 +#define LANG_YI 0x78 +#define VK_F10 0x79 +#define VK_F11 0x7A +#define LANG_MAPUDUNGUN 0x7a +#define VK_F12 0x7B +#define WM_CONTEXTMENU 0x007B +#define VK_F13 0x7C +#define WM_STYLECHANGING 0x007C +#define LANG_MOHAWK 0x7c +#define VK_F14 0x7D +#define WM_STYLECHANGED 0x007D +#define VK_F15 0x7E +#define WM_DISPLAYCHANGE 0x007E +#define LANG_BRETON 0x7e +#define VK_F16 0x7F +#define WM_GETICON 0x007F +#define LANG_INVARIANT 0x7f +#define VK_F17 0x80 +#define WM_SETICON 0x0080 +#define WVR_ALIGNRIGHT 0x0080 +#define CS_PARENTDC 0x0080 +#define CF_OWNERDISPLAY 0x0080 +#define HDS_FULLDRAG 0x0080 +#define BTNS_WHOLEDROPDOWN 0x0080 +#define TTS_CLOSE 0x80 +#define TBS_NOTHUMB 0x0080 +#define UDS_NOTHOUSANDS 0x0080 +#define LVS_NOLABELWRAP 0x0080 +#define TVS_NOTOOLTIPS 0x0080 +#define TVS_EX_PARTIALCHECKBOXES 0x0080 +#define TCS_VERTICAL 0x0080 +#define MCS_SHORTDAYSOFWEEK 0x0080 +#define LANG_UIGHUR 0x80 +#define VK_F18 0x81 +#define WM_NCCREATE 0x0081 +#define CF_DSPTEXT 0x0081 +#define LANG_MAORI 0x81 +#define VK_F19 0x82 +#define WM_NCDESTROY 0x0082 +#define CF_DSPBITMAP 0x0082 +#define LANG_OCCITAN 0x82 +#define VK_F20 0x83 +#define WM_NCCALCSIZE 0x0083 +#define CF_DSPMETAFILEPICT 0x0083 +#define LANG_CORSICAN 0x83 +#define VK_F21 0x84 +#define WM_NCHITTEST 0x0084 +#define LANG_ALSATIAN 0x84 +#define VK_F22 0x85 +#define WM_NCPAINT 0x0085 +#define LANG_SAKHA 0x85 +#define LANG_YAKUT 0x85 +#define VK_F23 0x86 +#define WM_NCACTIVATE 0x0086 +#define LANG_KICHE 0x86 +#define VK_F24 0x87 +#define WM_GETDLGCODE 0x0087 +#define LANG_KINYARWANDA 0x87 +#define VK_NAVIGATION_VIEW 0x88 +#define WM_SYNCPAINT 0x0088 +#define LANG_WOLOF 0x88 +#define VK_NAVIGATION_MENU 0x89 +#define VK_NAVIGATION_UP 0x8A +#define VK_NAVIGATION_DOWN 0x8B +#define VK_NAVIGATION_LEFT 0x8C +#define LANG_DARI 0x8c +#define VK_NAVIGATION_RIGHT 0x8D +#define VK_NAVIGATION_ACCEPT 0x8E +#define CF_DSPENHMETAFILE 0x008E +#define VK_NAVIGATION_CANCEL 0x8F +#define VK_NUMLOCK 0x90 +#define VK_SCROLL 0x91 +#define LANG_SCOTTISH_GAELIC 0x91 +#define VK_OEM_NEC_EQUAL 0x92 +#define VK_OEM_FJ_JISHO 0x92 +#define LANG_CENTRAL_KURDISH 0x92 +#define VK_OEM_FJ_MASSHOU 0x93 +#define VK_OEM_FJ_TOUROKU 0x94 +#define VK_OEM_FJ_LOYA 0x95 +#define VK_OEM_FJ_ROYA 0x96 +#define VK_LSHIFT 0xA0 +#define WM_NCMOUSEMOVE 0x00A0 +#define VK_RSHIFT 0xA1 +#define WM_NCLBUTTONDOWN 0x00A1 +#define VK_LCONTROL 0xA2 +#define WM_NCLBUTTONUP 0x00A2 +#define VK_RCONTROL 0xA3 +#define WM_NCLBUTTONDBLCLK 0x00A3 +#define VK_LMENU 0xA4 +#define WM_NCRBUTTONDOWN 0x00A4 +#define VK_RMENU 0xA5 +#define WM_NCRBUTTONUP 0x00A5 +#define VK_BROWSER_BACK 0xA6 +#define WM_NCRBUTTONDBLCLK 0x00A6 +#define VK_BROWSER_FORWARD 0xA7 +#define WM_NCMBUTTONDOWN 0x00A7 +#define VK_BROWSER_REFRESH 0xA8 +#define WM_NCMBUTTONUP 0x00A8 +#define VK_BROWSER_STOP 0xA9 +#define WM_NCMBUTTONDBLCLK 0x00A9 +#define VK_BROWSER_SEARCH 0xAA +#define VK_BROWSER_FAVORITES 0xAB +#define WM_NCXBUTTONDOWN 0x00AB +#define VK_BROWSER_HOME 0xAC +#define WM_NCXBUTTONUP 0x00AC +#define VK_VOLUME_MUTE 0xAD +#define WM_NCXBUTTONDBLCLK 0x00AD +#define VK_VOLUME_DOWN 0xAE +#define VK_VOLUME_UP 0xAF +#define VK_MEDIA_NEXT_TRACK 0xB0 +#define EM_GETSEL 0x00B0 +#define VK_MEDIA_PREV_TRACK 0xB1 +#define EM_SETSEL 0x00B1 +#define VK_MEDIA_STOP 0xB2 +#define EM_GETRECT 0x00B2 +#define VK_MEDIA_PLAY_PAUSE 0xB3 +#define EM_SETRECT 0x00B3 +#define VK_LAUNCH_MAIL 0xB4 +#define EM_SETRECTNP 0x00B4 +#define VK_LAUNCH_MEDIA_SELECT 0xB5 +#define EM_SCROLL 0x00B5 +#define VK_LAUNCH_APP1 0xB6 +#define EM_LINESCROLL 0x00B6 +#define VK_LAUNCH_APP2 0xB7 +#define EM_SCROLLCARET 0x00B7 +#define EM_GETMODIFY 0x00B8 +#define EM_SETMODIFY 0x00B9 +#define VK_OEM_1 0xBA +#define EM_GETLINECOUNT 0x00BA +#define VK_OEM_PLUS 0xBB +#define EM_LINEINDEX 0x00BB +#define VK_OEM_COMMA 0xBC +#define EM_SETHANDLE 0x00BC +#define VK_OEM_MINUS 0xBD +#define EM_GETHANDLE 0x00BD +#define VK_OEM_PERIOD 0xBE +#define EM_GETTHUMB 0x00BE +#define VK_OEM_2 0xBF +#define VK_OEM_3 0xC0 +#define EM_LINELENGTH 0x00C1 +#define EM_REPLACESEL 0x00C2 +#define VK_GAMEPAD_A 0xC3 +#define VK_GAMEPAD_B 0xC4 +#define EM_GETLINE 0x00C4 +#define VK_GAMEPAD_X 0xC5 +#define EM_LIMITTEXT 0x00C5 +#define VK_GAMEPAD_Y 0xC6 +#define EM_CANUNDO 0x00C6 +#define VK_GAMEPAD_RIGHT_SHOULDER 0xC7 +#define EM_UNDO 0x00C7 +#define VK_GAMEPAD_LEFT_SHOULDER 0xC8 +#define EM_FMTLINES 0x00C8 +#define VK_GAMEPAD_LEFT_TRIGGER 0xC9 +#define EM_LINEFROMCHAR 0x00C9 +#define VK_GAMEPAD_RIGHT_TRIGGER 0xCA +#define VK_GAMEPAD_DPAD_UP 0xCB +#define EM_SETTABSTOPS 0x00CB +#define VK_GAMEPAD_DPAD_DOWN 0xCC +#define EM_SETPASSWORDCHAR 0x00CC +#define VK_GAMEPAD_DPAD_LEFT 0xCD +#define EM_EMPTYUNDOBUFFER 0x00CD +#define VK_GAMEPAD_DPAD_RIGHT 0xCE +#define EM_GETFIRSTVISIBLELINE 0x00CE +#define VK_GAMEPAD_MENU 0xCF +#define EM_SETREADONLY 0x00CF +#define VK_GAMEPAD_VIEW 0xD0 +#define EM_SETWORDBREAKPROC 0x00D0 +#define VK_GAMEPAD_LEFT_THUMBSTICK_BUTTON 0xD1 +#define EM_GETWORDBREAKPROC 0x00D1 +#define VK_GAMEPAD_RIGHT_THUMBSTICK_BUTTON 0xD2 +#define EM_GETPASSWORDCHAR 0x00D2 +#define VK_GAMEPAD_LEFT_THUMBSTICK_UP 0xD3 +#define EM_SETMARGINS 0x00D3 +#define VK_GAMEPAD_LEFT_THUMBSTICK_DOWN 0xD4 +#define EM_GETMARGINS 0x00D4 +#define VK_GAMEPAD_LEFT_THUMBSTICK_RIGHT 0xD5 +#define EM_GETLIMITTEXT 0x00D5 +#define VK_GAMEPAD_LEFT_THUMBSTICK_LEFT 0xD6 +#define EM_POSFROMCHAR 0x00D6 +#define VK_GAMEPAD_RIGHT_THUMBSTICK_UP 0xD7 +#define EM_CHARFROMPOS 0x00D7 +#define VK_GAMEPAD_RIGHT_THUMBSTICK_DOWN 0xD8 +#define EM_SETIMESTATUS 0x00D8 +#define VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT 0xD9 +#define EM_GETIMESTATUS 0x00D9 +#define VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT 0xDA +#define EM_ENABLEFEATURE 0x00DA +#define VK_OEM_4 0xDB +#define VK_OEM_5 0xDC +#define VK_OEM_6 0xDD +#define VK_OEM_7 0xDE +#define VK_OEM_8 0xDF +#define VK_OEM_AX 0xE1 +#define VK_OEM_102 0xE2 +#define VK_ICO_HELP 0xE3 +#define VK_ICO_00 0xE4 +#define VK_PROCESSKEY 0xE5 +#define VK_ICO_CLEAR 0xE6 +#define VK_PACKET 0xE7 +#define VK_OEM_RESET 0xE9 +#define VK_OEM_JUMP 0xEA +#define VK_OEM_PA1 0xEB +#define VK_OEM_PA2 0xEC +#define VK_OEM_PA3 0xED +#define VK_OEM_WSCTRL 0xEE +#define VK_OEM_CUSEL 0xEF +#define VK_OEM_ATTN 0xF0 +#define BM_GETCHECK 0x00F0 +#define VK_OEM_FINISH 0xF1 +#define BM_SETCHECK 0x00F1 +#define VK_OEM_COPY 0xF2 +#define BM_GETSTATE 0x00F2 +#define VK_OEM_AUTO 0xF3 +#define BM_SETSTATE 0x00F3 +#define VK_OEM_ENLW 0xF4 +#define BM_SETSTYLE 0x00F4 +#define VK_OEM_BACKTAB 0xF5 +#define BM_CLICK 0x00F5 +#define VK_ATTN 0xF6 +#define BM_GETIMAGE 0x00F6 +#define VK_CRSEL 0xF7 +#define BM_SETIMAGE 0x00F7 +#define VK_EXSEL 0xF8 +#define BM_SETDONTCLICK 0x00F8 +#define VK_EREOF 0xF9 +#define VK_PLAY 0xFA +#define VK_ZOOM 0xFB +#define VK_NONAME 0xFC +#define VK_PA1 0xFD +#define VK_OEM_CLEAR 0xFE +#define WM_INPUT_DEVICE_CHANGE 0x00FE +#define SUBVERSION_MASK 0x000000FF +#define WM_INPUT 0x00FF +#define WM_KEYFIRST 0x0100 +#define WM_KEYDOWN 0x0100 +#define WVR_HREDRAW 0x0100 +#define HDS_FILTERBAR 0x0100 +#define TBSTYLE_TOOLTIPS 0x0100 +#define RBS_TOOLTIPS 0x00000100 +#define TTS_USEVISUALSTYLE 0x100 +#define SBARS_SIZEGRIP 0x0100 +#define TBS_TOOLTIPS 0x0100 +#define UDS_HOTTRACK 0x0100 +#define LVS_AUTOARRANGE 0x0100 +#define TVS_CHECKBOXES 0x0100 +#define TVS_EX_EXCLUSIONCHECKBOXES 0x0100 +#define TCS_BUTTONS 0x0100 +#define MCS_NOSELCHANGEONNAV 0x0100 +#define WM_KEYUP 0x0101 +#define WM_CHAR 0x0102 +#define WM_DEADCHAR 0x0103 +#define WM_SYSKEYDOWN 0x0104 +#define WM_SYSKEYUP 0x0105 +#define WM_SYSCHAR 0x0106 +#define WM_SYSDEADCHAR 0x0107 +#define WM_UNICHAR 0x0109 +#define WM_KEYLAST 0x0109 +#define WM_IME_STARTCOMPOSITION 0x010D +#define WM_IME_ENDCOMPOSITION 0x010E +#define WM_IME_COMPOSITION 0x010F +#define WM_IME_KEYLAST 0x010F +#define WM_INITDIALOG 0x0110 +#define WM_COMMAND 0x0111 +#define WM_SYSCOMMAND 0x0112 +#define WM_TIMER 0x0113 +#define WM_HSCROLL 0x0114 +#define WM_VSCROLL 0x0115 +#define WM_INITMENU 0x0116 +#define WM_INITMENUPOPUP 0x0117 +#define WM_GESTURE 0x0119 +#define WM_GESTURENOTIFY 0x011A +#define WM_MENUSELECT 0x011F +#define WM_MENUCHAR 0x0120 +#define WM_ENTERIDLE 0x0121 +#define WM_MENURBUTTONUP 0x0122 +#define WM_MENUDRAG 0x0123 +#define WM_MENUGETOBJECT 0x0124 +#define WM_UNINITMENUPOPUP 0x0125 +#define WM_MENUCOMMAND 0x0126 +#define WM_CHANGEUISTATE 0x0127 +#define WM_UPDATEUISTATE 0x0128 +#define WM_QUERYUISTATE 0x0129 +#define WM_CTLCOLORMSGBOX 0x0132 +#define WM_CTLCOLOREDIT 0x0133 +#define WM_CTLCOLORLISTBOX 0x0134 +#define WM_CTLCOLORBTN 0x0135 +#define WM_CTLCOLORDLG 0x0136 +#define WM_CTLCOLORSCROLLBAR 0x0137 +#define WM_CTLCOLORSTATIC 0x0138 +#define MN_GETHMENU 0x01E1 +#define _WIN32_IE_IE20 0x0200 +#define WM_MOUSEFIRST 0x0200 +#define WM_MOUSEMOVE 0x0200 +#define WVR_VREDRAW 0x0200 +#define CS_NOCLOSE 0x0200 +#define CF_PRIVATEFIRST 0x0200 +#define HDS_FLAT 0x0200 +#define TBSTYLE_WRAPABLE 0x0200 +#define RBS_VARHEIGHT 0x00000200 +#define TBS_REVERSED 0x0200 +#define LVS_EDITLABELS 0x0200 +#define TVS_TRACKSELECT 0x0200 +#define TVS_EX_DIMMEDCHECKBOXES 0x0200 +#define TCS_MULTILINE 0x0200 +#define WM_LBUTTONDOWN 0x0201 +#define WM_LBUTTONUP 0x0202 +#define WM_LBUTTONDBLCLK 0x0203 +#define WM_RBUTTONDOWN 0x0204 +#define WM_RBUTTONUP 0x0205 +#define WM_RBUTTONDBLCLK 0x0206 +#define WM_MBUTTONDOWN 0x0207 +#define WM_MBUTTONUP 0x0208 +#define WM_MBUTTONDBLCLK 0x0209 +#define WM_MOUSEWHEEL 0x020A +#define WM_XBUTTONDOWN 0x020B +#define WM_XBUTTONUP 0x020C +#define WM_XBUTTONDBLCLK 0x020D +#define WM_MOUSEHWHEEL 0x020E +#define WM_MOUSELAST 0x020E +#define WM_PARENTNOTIFY 0x0210 +#define WM_ENTERMENULOOP 0x0211 +#define WM_EXITMENULOOP 0x0212 +#define WM_NEXTMENU 0x0213 +#define WM_SIZING 0x0214 +#define WM_CAPTURECHANGED 0x0215 +#define WM_MOVING 0x0216 +#define WM_POWERBROADCAST 0x0218 +#define WM_DEVICECHANGE 0x0219 +#define WM_MDICREATE 0x0220 +#define WM_MDIDESTROY 0x0221 +#define WM_MDIACTIVATE 0x0222 +#define WM_MDIRESTORE 0x0223 +#define WM_MDINEXT 0x0224 +#define WM_MDIMAXIMIZE 0x0225 +#define WM_MDITILE 0x0226 +#define WM_MDICASCADE 0x0227 +#define WM_MDIICONARRANGE 0x0228 +#define WM_MDIGETACTIVE 0x0229 +#define WM_MDISETMENU 0x0230 +#define WM_ENTERSIZEMOVE 0x0231 +#define WM_EXITSIZEMOVE 0x0232 +#define WM_DROPFILES 0x0233 +#define WM_MDIREFRESHMENU 0x0234 +#define WM_POINTERDEVICECHANGE 0x238 +#define WM_POINTERDEVICEINRANGE 0x239 +#define WM_POINTERDEVICEOUTOFRANGE 0x23A +#define WM_TOUCH 0x0240 +#define WM_NCPOINTERUPDATE 0x0241 +#define WM_NCPOINTERDOWN 0x0242 +#define WM_NCPOINTERUP 0x0243 +#define WM_POINTERUPDATE 0x0245 +#define WM_POINTERDOWN 0x0246 +#define WM_POINTERUP 0x0247 +#define WM_POINTERENTER 0x0249 +#define WM_POINTERLEAVE 0x024A +#define WM_POINTERACTIVATE 0x024B +#define WM_POINTERCAPTURECHANGED 0x024C +#define WM_TOUCHHITTESTING 0x024D +#define WM_POINTERWHEEL 0x024E +#define WM_POINTERHWHEEL 0x024F +#define DM_POINTERHITTEST 0x0250 +#define WM_POINTERROUTEDTO 0x0251 +#define WM_POINTERROUTEDAWAY 0x0252 +#define WM_POINTERROUTEDRELEASED 0x0253 +#define WM_IME_SETCONTEXT 0x0281 +#define WM_IME_NOTIFY 0x0282 +#define WM_IME_CONTROL 0x0283 +#define WM_IME_COMPOSITIONFULL 0x0284 +#define WM_IME_SELECT 0x0285 +#define WM_IME_CHAR 0x0286 +#define WM_IME_REQUEST 0x0288 +#define WM_IME_KEYDOWN 0x0290 +#define WM_IME_KEYUP 0x0291 +#define WM_NCMOUSEHOVER 0x02A0 +#define WM_MOUSEHOVER 0x02A1 +#define WM_NCMOUSELEAVE 0x02A2 +#define WM_MOUSELEAVE 0x02A3 +#define WM_WTSSESSION_CHANGE 0x02B1 +#define WM_TABLET_FIRST 0x02c0 +#define WM_TABLET_LAST 0x02df +#define WM_DPICHANGED 0x02E0 +#define WM_DPICHANGED_BEFOREPARENT 0x02E2 +#define WM_DPICHANGED_AFTERPARENT 0x02E3 +#define WM_GETDPISCALEDSIZE 0x02E4 +#define CF_PRIVATELAST 0x02FF +#define _WIN32_IE_IE30 0x0300 +#define WM_CUT 0x0300 +#define CF_GDIOBJFIRST 0x0300 +#define WM_COPY 0x0301 +#define _WIN32_IE_IE302 0x0302 +#define WM_PASTE 0x0302 +#define WM_CLEAR 0x0303 +#define WM_UNDO 0x0304 +#define WM_RENDERFORMAT 0x0305 +#define WM_RENDERALLFORMATS 0x0306 +#define WM_DESTROYCLIPBOARD 0x0307 +#define WM_DRAWCLIPBOARD 0x0308 +#define WM_PAINTCLIPBOARD 0x0309 +#define WM_VSCROLLCLIPBOARD 0x030A +#define WM_SIZECLIPBOARD 0x030B +#define WM_ASKCBFORMATNAME 0x030C +#define WM_CHANGECBCHAIN 0x030D +#define WM_HSCROLLCLIPBOARD 0x030E +#define WM_QUERYNEWPALETTE 0x030F +#define WM_PALETTEISCHANGING 0x0310 +#define WM_PALETTECHANGED 0x0311 +#define WM_HOTKEY 0x0312 +#define WM_PRINT 0x0317 +#define WM_PRINTCLIENT 0x0318 +#define WM_APPCOMMAND 0x0319 +#define WM_THEMECHANGED 0x031A +#define WM_CLIPBOARDUPDATE 0x031D +#define WM_DWMCOMPOSITIONCHANGED 0x031E +#define WM_DWMNCRENDERINGCHANGED 0x031F +#define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320 +#define WM_DWMWINDOWMAXIMIZEDCHANGE 0x0321 +#define WM_DWMSENDICONICTHUMBNAIL 0x0323 +#define WM_DWMSENDICONICLIVEPREVIEWBITMAP 0x0326 +#define WM_GETTITLEBARINFOEX 0x033F +#define WM_HANDHELDFIRST 0x0358 +#define WM_HANDHELDLAST 0x035F +#define WM_AFXFIRST 0x0360 +#define WM_AFXLAST 0x037F +#define WM_PENWINFIRST 0x0380 +#define WM_PENWINLAST 0x038F +#define WM_DDE_FIRST 0x03E0 +#define CF_GDIOBJLAST 0x03FF +#define _WIN32_WINNT_NT4 0x0400 +#define _WIN32_IE_IE40 0x0400 +#define WM_USER 0x0400 +#define WVR_VALIDRECTS 0x0400 +#define HDS_CHECKBOXES 0x0400 +#define TBSTYLE_ALTDRAG 0x0400 +#define RBS_BANDBORDERS 0x00000400 +#define TBS_DOWNISLEFT 0x0400 +#define LVS_OWNERDRAWFIXED 0x0400 +#define TVS_SINGLEEXPAND 0x0400 +#define TVS_EX_DRAWIMAGEASYNC 0x0400 +#define TCS_FIXEDWIDTH 0x0400 +#define ctlFirst 0x0400 +#define psh1 0x0400 +#define _WIN32_IE_IE401 0x0401 +#define psh2 0x0401 +#define psh3 0x0402 +#define psh4 0x0403 +#define psh5 0x0404 +#define psh6 0x0405 +#define psh7 0x0406 +#define psh8 0x0407 +#define psh9 0x0408 +#define psh10 0x0409 +#define psh11 0x040a +#define psh12 0x040b +#define psh13 0x040c +#define psh14 0x040d +#define psh15 0x040e +#define psh16 0x040f +#define _WIN32_WINDOWS 0x0410 +#define chx1 0x0410 +#define chx2 0x0411 +#define chx3 0x0412 +#define chx4 0x0413 +#define chx5 0x0414 +#define chx6 0x0415 +#define chx7 0x0416 +#define chx8 0x0417 +#define chx9 0x0418 +#define chx10 0x0419 +#define chx11 0x041a +#define chx12 0x041b +#define chx13 0x041c +#define chx14 0x041d +#define chx15 0x041e +#define chx16 0x041f +#define rad1 0x0420 +#define rad2 0x0421 +#define rad3 0x0422 +#define rad4 0x0423 +#define rad5 0x0424 +#define rad6 0x0425 +#define rad7 0x0426 +#define rad8 0x0427 +#define rad9 0x0428 +#define rad10 0x0429 +#define rad11 0x042a +#define rad12 0x042b +#define rad13 0x042c +#define rad14 0x042d +#define rad15 0x042e +#define rad16 0x042f +#define grp1 0x0430 +#define grp2 0x0431 +#define grp3 0x0432 +#define grp4 0x0433 +#define frm1 0x0434 +#define frm2 0x0435 +#define frm3 0x0436 +#define frm4 0x0437 +#define rct1 0x0438 +#define rct2 0x0439 +#define rct3 0x043a +#define rct4 0x043b +#define ico1 0x043c +#define ico2 0x043d +#define ico3 0x043e +#define ico4 0x043f +#define stc1 0x0440 +#define stc2 0x0441 +#define stc3 0x0442 +#define stc4 0x0443 +#define stc5 0x0444 +#define stc6 0x0445 +#define stc7 0x0446 +#define stc8 0x0447 +#define stc9 0x0448 +#define stc10 0x0449 +#define stc11 0x044a +#define stc12 0x044b +#define stc13 0x044c +#define stc14 0x044d +#define stc15 0x044e +#define stc16 0x044f +#define stc17 0x0450 +#define stc18 0x0451 +#define stc19 0x0452 +#define stc20 0x0453 +#define stc21 0x0454 +#define stc22 0x0455 +#define stc23 0x0456 +#define stc24 0x0457 +#define stc25 0x0458 +#define stc26 0x0459 +#define stc27 0x045a +#define stc28 0x045b +#define stc29 0x045c +#define stc30 0x045d +#define stc31 0x045e +#define stc32 0x045f +#define lst1 0x0460 +#define lst2 0x0461 +#define lst3 0x0462 +#define lst4 0x0463 +#define lst5 0x0464 +#define lst6 0x0465 +#define lst7 0x0466 +#define lst8 0x0467 +#define lst9 0x0468 +#define lst10 0x0469 +#define lst11 0x046a +#define lst12 0x046b +#define lst13 0x046c +#define lst14 0x046d +#define lst15 0x046e +#define lst16 0x046f +#define cmb1 0x0470 +#define cmb2 0x0471 +#define cmb3 0x0472 +#define cmb4 0x0473 +#define cmb5 0x0474 +#define cmb6 0x0475 +#define cmb7 0x0476 +#define cmb8 0x0477 +#define cmb9 0x0478 +#define cmb10 0x0479 +#define cmb11 0x047a +#define cmb12 0x047b +#define cmb13 0x047c +#define cmb14 0x047d +#define cmb15 0x047e +#define cmb16 0x047f +#define edt1 0x0480 +#define edt2 0x0481 +#define edt3 0x0482 +#define edt4 0x0483 +#define edt5 0x0484 +#define edt6 0x0485 +#define edt7 0x0486 +#define edt8 0x0487 +#define edt9 0x0488 +#define edt10 0x0489 +#define edt11 0x048a +#define edt12 0x048b +#define edt13 0x048c +#define edt14 0x048d +#define edt15 0x048e +#define edt16 0x048f +#define scr1 0x0490 +#define scr2 0x0491 +#define scr3 0x0492 +#define scr4 0x0493 +#define scr5 0x0494 +#define scr6 0x0495 +#define scr7 0x0496 +#define scr8 0x0497 +#define ctl1 0x04A0 +#define ctlLast 0x04ff +#define _WIN32_WINNT_WIN2K 0x0500 +#define _WIN32_IE_IE50 0x0500 +#define _WIN32_WINNT_WINXP 0x0501 +#define _WIN32_IE_IE501 0x0501 +#define _WIN32_WINNT_WS03 0x0502 +#define _WIN32_IE_IE55 0x0550 +#define _WIN32_WINNT_WIN6 0x0600 +#define _WIN32_WINNT_VISTA 0x0600 +#define _WIN32_WINNT_WS08 0x0600 +#define _WIN32_WINNT_LONGHORN 0x0600 +#define _WIN32_IE_IE60 0x0600 +#define FILEOPENORD 1536 +#define _WIN32_WINNT_WIN7 0x0601 +#define _WIN32_IE_IE60SP1 0x0601 +#define MULTIFILEOPENORD 1537 +#define _WIN32_WINNT_WIN8 0x0602 +#define _WIN32_IE_WS03 0x0602 +#define PRINTDLGORD 1538 +#define _WIN32_WINNT_WINBLUE 0x0603 +#define _WIN32_IE_IE60SP2 0x0603 +#define PRNSETUPDLGORD 1539 +#define FINDDLGORD 1540 +#define REPLACEDLGORD 1541 +#define FONTDLGORD 1542 +#define FORMATDLGORD31 1543 +#define FORMATDLGORD30 1544 +#define RUNDLGORD 1545 +#define PAGESETUPDLGORD 1546 +#define NEWFILEOPENORD 1547 +#define PRINTDLGEXORD 1549 +#define PAGESETUPDLGORDMOTIF 1550 +#define COLORMGMTDLGORD 1551 +#define NEWFILEOPENV2ORD 1552 +#define NEWFILEOPENV3ORD 1553 +#define NEWFORMATDLGWITHLINK 1591 +#define IDC_MANAGE_LINK 1592 +#define _WIN32_IE_IE70 0x0700 +#define _WIN32_IE_IE80 0x0800 +#define CS_SAVEBITS 0x0800 +#define HDS_NOSIZING 0x0800 +#define TBSTYLE_FLAT 0x0800 +#define RBS_FIXEDORDER 0x00000800 +#define SBARS_TOOLTIPS 0x0800 +#define SBT_TOOLTIPS 0x0800 +#define TBS_NOTIFYBEFOREMOVE 0x0800 +#define LVS_ALIGNLEFT 0x0800 +#define TVS_INFOTIP 0x0800 +#define TCS_RAGGEDRIGHT 0x0800 +#define _WIN32_IE_IE90 0x0900 +#define _WIN32_WINNT_WINTHRESHOLD 0x0A00 +#define _WIN32_WINNT_WIN10 0x0A00 +#define _WIN32_IE_IE100 0x0A00 +#define _WIN32_IE_IE110 0x0A00 +#define _WIN32_WINNT 0x0A00 +#define _WIN32_IE 0x0A00 +#define LVS_ALIGNMASK 0x0c00 +#define CS_BYTEALIGNCLIENT 0x1000 +#define HDS_OVERFLOW 0x1000 +#define TBSTYLE_LIST 0x1000 +#define RBS_REGISTERDROP 0x00001000 +#define TBS_TRANSPARENTBKGND 0x1000 +#define LVS_OWNERDATA 0x1000 +#define TVS_FULLROWSELECT 0x1000 +#define TCS_FOCUSONBUTTONDOWN 0x1000 +#define VERSION_BUILD 5299 +#define CS_BYTEALIGNWINDOW 0x2000 +#define TBSTYLE_CUSTOMERASE 0x2000 +#define RBS_AUTOSIZE 0x00002000 +#define LVS_NOSCROLL 0x2000 +#define TVS_NOSCROLL 0x2000 +#define TCS_OWNERDRAWFIXED 0x2000 +#define CS_GLOBALCLASS 0x4000 +#define TBSTYLE_REGISTERDROP 0x4000 +#define RBS_VERTICALGRIPPER 0x00004000 +#define LVS_NOCOLUMNHEADER 0x4000 +#define TVS_NONEVENHEIGHT 0x4000 +#define TCS_TOOLTIPS 0x4000 +#define IDH_NO_HELP 28440 +#define IDH_MISSING_CONTEXT 28441 +#define IDH_GENERIC_HELP_BUTTON 28442 +#define IDH_OK 28443 +#define IDH_CANCEL 28444 +#define IDH_HELP 28445 +#define LANG_BOSNIAN_NEUTRAL 0x781a +#define LANG_CHINESE_TRADITIONAL 0x7c04 +#define LANG_SERBIAN_NEUTRAL 0x7c1a +#define IDTIMEOUT 32000 +#define OCR_NORMAL 32512 +#define OIC_SAMPLE 32512 +#define IDI_APPLICATION 32512 +#define OCR_IBEAM 32513 +#define OIC_HAND 32513 +#define IDI_HAND 32513 +#define OCR_WAIT 32514 +#define OIC_QUES 32514 +#define IDI_QUESTION 32514 +#define OCR_CROSS 32515 +#define OIC_BANG 32515 +#define IDI_EXCLAMATION 32515 +#define OCR_UP 32516 +#define OIC_NOTE 32516 +#define IDI_ASTERISK 32516 +#define OIC_WINLOGO 32517 +#define IDI_WINLOGO 32517 +#define OIC_SHIELD 32518 +#define IDI_SHIELD 32518 +#define OCR_SIZE 32640 +#define OCR_ICON 32641 +#define OCR_SIZENWSE 32642 +#define OCR_SIZENESW 32643 +#define OCR_SIZEWE 32644 +#define OCR_SIZENS 32645 +#define OCR_SIZEALL 32646 +#define OCR_ICOCUR 32647 +#define OCR_NO 32648 +#define OCR_HAND 32649 +#define OCR_APPSTARTING 32650 +#define OBM_LFARROWI 32734 +#define OBM_RGARROWI 32735 +#define OBM_DNARROWI 32736 +#define OBM_UPARROWI 32737 +#define OBM_COMBO 32738 +#define OBM_MNARROW 32739 +#define OBM_LFARROWD 32740 +#define OBM_RGARROWD 32741 +#define OBM_DNARROWD 32742 +#define OBM_UPARROWD 32743 +#define OBM_RESTORED 32744 +#define OBM_ZOOMD 32745 +#define OBM_REDUCED 32746 +#define OBM_RESTORE 32747 +#define OBM_ZOOM 32748 +#define OBM_REDUCE 32749 +#define OBM_LFARROW 32750 +#define OBM_RGARROW 32751 +#define OBM_DNARROW 32752 +#define OBM_UPARROW 32753 +#define OBM_CLOSE 32754 +#define OBM_OLD_RESTORE 32755 +#define OBM_OLD_ZOOM 32756 +#define OBM_OLD_REDUCE 32757 +#define OBM_BTNCORNERS 32758 +#define OBM_CHECKBOXES 32759 +#define OBM_CHECK 32760 +#define OBM_BTSIZE 32761 +#define OBM_OLD_LFARROW 32762 +#define OBM_OLD_RGARROW 32763 +#define OBM_OLD_DNARROW 32764 +#define OBM_OLD_UPARROW 32765 +#define OBM_SIZE 32766 +#define OBM_OLD_CLOSE 32767 +#define WM_APP 0x8000 +#define HELP_TCARD 0x8000 +#define TBSTYLE_TRANSPARENT 0x8000 +#define RBS_DBLCLKTOGGLE 0x00008000 +#define LVS_NOSORTHEADER 0x8000 +#define TVS_NOHSCROLL 0x8000 +#define TCS_FOCUSNEVER 0x8000 +#define SC_SIZE 0xF000 +#define SC_SEPARATOR 0xF00F +#define SC_MOVE 0xF010 +#define SC_MINIMIZE 0xF020 +#define SC_MAXIMIZE 0xF030 +#define SC_NEXTWINDOW 0xF040 +#define SC_PREVWINDOW 0xF050 +#define SC_CLOSE 0xF060 +#define SC_VSCROLL 0xF070 +#define SC_HSCROLL 0xF080 +#define SC_MOUSEMENU 0xF090 +#define SC_KEYMENU 0xF100 +#define SC_ARRANGE 0xF110 +#define SC_RESTORE 0xF120 +#define SC_TASKLIST 0xF130 +#define SC_SCREENSAVE 0xF140 +#define SC_HOTKEY 0xF150 +#define SC_DEFAULT 0xF160 +#define SC_MONITORPOWER 0xF170 +#define SC_CONTEXTHELP 0xF180 +#define LVS_TYPESTYLEMASK 0xfc00 +#define SPVERSION_MASK 0x0000FF00 +#define HTERROR -2 +#define PWR_FAIL -1 +#define UNICODE_NOCHAR 0xFFFF +#define HTTRANSPARENT -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 104 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 103 +#endif +#endif diff --git a/Crawler/resource1.h b/Adventures in Lestoria/resource1.h similarity index 97% rename from Crawler/resource1.h rename to Adventures in Lestoria/resource1.h index d9cf662a..2254caec 100644 --- a/Crawler/resource1.h +++ b/Adventures in Lestoria/resource1.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Crawler/safemap.h b/Adventures in Lestoria/safemap.h similarity index 98% rename from Crawler/safemap.h rename to Adventures in Lestoria/safemap.h index 3772138c..f7a9be22 100644 --- a/Crawler/safemap.h +++ b/Adventures in Lestoria/safemap.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: diff --git a/Adventures in Lestoria/sig b/Adventures in Lestoria/sig new file mode 100644 index 00000000..525a60fd --- /dev/null +++ b/Adventures in Lestoria/sig @@ -0,0 +1,10 @@ +export AUTO_UPDATE=true + +source utils/define.sh + +define PROJECT_NAME "Adventures in Lestoria" +define CUSTOM_PARAMS "-Idiscord-files -I/usr/include/freetype2 -I/usr/include/libpng16 -std=c++20 -lGL -lX11 -lpthread -lpng -lstdc++fs -lfreetype -I/usr/include/lua5.3 ./discord_game_sdk.so" +define EMSCRIPTEN_CUSTOM_PARAMS "-s MAXIMUM_MEMORY=4GB" +define LANGUAGE "C++" + +source utils/main.sh diff --git a/Crawler/switch-class.snippet b/Adventures in Lestoria/switch-class.snippet similarity index 100% rename from Crawler/switch-class.snippet rename to Adventures in Lestoria/switch-class.snippet diff --git a/Adventures in Lestoria/testPal.pal b/Adventures in Lestoria/testPal.pal new file mode 100644 index 00000000..82b54fb5 Binary files /dev/null and b/Adventures in Lestoria/testPal.pal differ diff --git a/Crawler/update_version.ps1 b/Adventures in Lestoria/update_version.ps1 similarity index 100% rename from Crawler/update_version.ps1 rename to Adventures in Lestoria/update_version.ps1 diff --git a/Crawler/util.cpp b/Adventures in Lestoria/util.cpp similarity index 93% rename from Crawler/util.cpp rename to Adventures in Lestoria/util.cpp index be087022..5a616df7 100644 --- a/Crawler/util.cpp +++ b/Adventures in Lestoria/util.cpp @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -39,8 +39,17 @@ All rights reserved. #include "olcPixelGameEngine.h" #include "olcPGEX_TTF.h" +std::random_device rd; +std::mt19937 rng(rd()); + float util::random(float range){ - return float(rand())/RAND_MAX*range; + static std::uniform_real_distributiondistrib(0,1); + return distrib(rng)*range; +} + +int util::random(){ + static std::uniform_int_distributiondistrib(0,32767); + return distrib(rng); } vf2d util::pointTo(vf2d posFrom,vf2d posTo){ diff --git a/Crawler/util.h b/Adventures in Lestoria/util.h similarity index 95% rename from Crawler/util.h rename to Adventures in Lestoria/util.h index b22ae02e..133288ba 100644 --- a/Crawler/util.h +++ b/Adventures in Lestoria/util.h @@ -3,7 +3,7 @@ License (OLC-3) ~~~~~~~~~~~~~~~ -Copyright 2018 - 2023 OneLoneCoder.com +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: @@ -38,10 +38,13 @@ All rights reserved. #pragma once #include #include "olcUTIL_Geometry2D.h" +#include namespace olc::util{ //Returns 0-range (as a float). float random(float range); + //Returns 0-32767 (as an int). + int random(); //Returns a normalized vector pointing from posFrom towards posTo. vf2d pointTo(vf2d posFrom,vf2d posTo); //Returns the angle (in radians) pointing from posFrom towards posTo. diff --git a/Crawler/utils/.coauthors b/Adventures in Lestoria/utils/.coauthors similarity index 100% rename from Crawler/utils/.coauthors rename to Adventures in Lestoria/utils/.coauthors diff --git a/Crawler/utils/.updateDirectories b/Adventures in Lestoria/utils/.updateDirectories similarity index 100% rename from Crawler/utils/.updateDirectories rename to Adventures in Lestoria/utils/.updateDirectories diff --git a/Crawler/utils/define.sh b/Adventures in Lestoria/utils/define.sh old mode 100755 new mode 100644 similarity index 100% rename from Crawler/utils/define.sh rename to Adventures in Lestoria/utils/define.sh diff --git a/Crawler/utils/filelist b/Adventures in Lestoria/utils/filelist similarity index 100% rename from Crawler/utils/filelist rename to Adventures in Lestoria/utils/filelist diff --git a/Crawler/utils/main.sh b/Adventures in Lestoria/utils/main.sh similarity index 100% rename from Crawler/utils/main.sh rename to Adventures in Lestoria/utils/main.sh diff --git a/Crawler/utils/md5 b/Adventures in Lestoria/utils/md5 similarity index 100% rename from Crawler/utils/md5 rename to Adventures in Lestoria/utils/md5 diff --git a/Crawler/utils/search.sh b/Adventures in Lestoria/utils/search.sh similarity index 100% rename from Crawler/utils/search.sh rename to Adventures in Lestoria/utils/search.sh diff --git a/Adventures in Lestoria/x64/Release Desktop/CodeAnalysisResultManifest.txt b/Adventures in Lestoria/x64/Release Desktop/CodeAnalysisResultManifest.txt new file mode 100644 index 00000000..d628a824 Binary files /dev/null and b/Adventures in Lestoria/x64/Release Desktop/CodeAnalysisResultManifest.txt differ diff --git a/Adventures in Lestoria/x64/Release Desktop/Crawler.exe.recipe b/Adventures in Lestoria/x64/Release Desktop/Crawler.exe.recipe new file mode 100644 index 00000000..1bc46602 --- /dev/null +++ b/Adventures in Lestoria/x64/Release Desktop/Crawler.exe.recipe @@ -0,0 +1,11 @@ + + + + + C:\Users\sigon\source\repos\Crawler\x64\Release\Crawler.exe + + + + + + \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release Desktop/Crawler.res b/Adventures in Lestoria/x64/Release Desktop/Crawler.res new file mode 100644 index 00000000..93c41532 Binary files /dev/null and b/Adventures in Lestoria/x64/Release Desktop/Crawler.res differ diff --git a/Adventures in Lestoria/x64/Release Desktop/Crawler.vcxproj.FileListAbsolute.txt b/Adventures in Lestoria/x64/Release Desktop/Crawler.vcxproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/Adventures in Lestoria/x64/Release Desktop/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.d.json b/Adventures in Lestoria/x64/Release Desktop/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.d.json new file mode 100644 index 00000000..93a69a13 --- /dev/null +++ b/Adventures in Lestoria/x64/Release Desktop/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.d.json @@ -0,0 +1,379 @@ +{ + "Version": "1.2", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\fallingdebris.h", + "ProvidedModule": "", + "Includes": [ + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\effect.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cmath", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals_core.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concurrencysal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vadefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xkeycheck.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\crtdbg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new_debug.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\crtdefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\use_ansi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdlib", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdlib.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_malloc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_search.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdlib.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtr1common", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.inl.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xutility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_iter_core.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\utility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\type_traits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdint", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdint.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstddef", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstddef", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\initializer_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concepts", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\compare", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\bit", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\isa_availability.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cfloat", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\float.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\climits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cwchar", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdio", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_stdio_config.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\wchar.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memcpy_s.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\errno.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wconio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wctype.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wdirect.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_share.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wprocess.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstring.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wtime.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\stat.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\types.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstring", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memory.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\string", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstring", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iosfwd", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xmemory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\new", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\exception", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\malloc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_exception.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\eh.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_terminate.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\tuple", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xpolymorphic_allocator.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cctype", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\ctype.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\string_view", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\istream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ios", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocnum", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iterator", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\streambuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xiosbase", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\share.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\system_error", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_system_error_abi.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cerrno", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdexcept", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcall_once.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xerrc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\atomic", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic_wait.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xthreads.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtimec.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ctime", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\time.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\memory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\typeinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_typeinfo.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfacet", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_xlocinfo_types.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\clocale", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\locale.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\chrono", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_chrono.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ratio", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfilesystem_abi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_tzdb.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\algorithm", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\forward_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\optional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xsmf_control.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vector", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xloctime", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\format", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_format_ucd_tables.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\charconv", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xbit_ops.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\locale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocbuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmes", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmon", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\mutex", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\thread", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\process.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_startup.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_startup.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stop_token", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iomanip", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\fstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtree", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xnode_handle.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\functional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\unordered_map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xhash", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\array", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\error.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\source_location", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\filesystem", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\windows.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winapifamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winpackagefamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdkddkver.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\excpt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdarg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\windef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\minwindef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_strict.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_undef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdv_driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\kernelspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\basetsd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\ktmtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apisetcconv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\minwinbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\apiquery2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processenv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapifromapp.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\debugapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\utilapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\handleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\errhandlingapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fibersapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namedpipeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\profileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\heapapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ioapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\synchapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\interlockedapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processthreadsapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\sysinfoapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\memoryapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\enclaveapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoollegacyapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoolapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wow64apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\libloaderapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securitybaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namespaceapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\systemtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securityappcontainer.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\realtimeapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winerror.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timezoneapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wingdi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winuser.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\tvout.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\datetimeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\stringapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincontypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi3.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winver.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\verrsrc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winreg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\reason.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnetwk.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wnnc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\cderr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dde.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ddeml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dlgs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\lzexpand.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsystem.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsyscom.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mciapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\playsoundapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\joystickapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\nb30.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdce.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdcep.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcnterr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcasync.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\shellapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winperf.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsock.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\bcrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ncrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dpapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winefs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winscard.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcndr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsip.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcsal.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypesbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winioctl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winsmcrd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winspool.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ole2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\combaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwnbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\cguid.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\coml2api.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwn.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oaidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\urlmon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\servprov.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\msxml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleauto.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\commdlg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\stralign.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsvc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mcx.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\imm.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ime_cmodes.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\animation.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_animate2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_geometry2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\defines.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\safemap.h" + ], + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release Desktop/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json b/Adventures in Lestoria/x64/Release Desktop/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json new file mode 100644 index 00000000..ec074239 --- /dev/null +++ b/Adventures in Lestoria/x64/Release Desktop/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json @@ -0,0 +1,9 @@ +{ + "Version": "1.1", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\fallingdebris.h", + "ProvidedModule": "", + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release Desktop/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json.command b/Adventures in Lestoria/x64/Release Desktop/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json.command new file mode 100644 index 00000000..618d9a9f Binary files /dev/null and b/Adventures in Lestoria/x64/Release Desktop/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json.command differ diff --git a/Adventures in Lestoria/x64/Release Desktop/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.d.json b/Adventures in Lestoria/x64/Release Desktop/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.d.json new file mode 100644 index 00000000..7579a6e9 --- /dev/null +++ b/Adventures in Lestoria/x64/Release Desktop/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.d.json @@ -0,0 +1,469 @@ +{ + "Version": "1.2", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menuanimatediconbutton.h", + "ProvidedModule": "", + "Includes": [ + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menuiconbutton.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menucomponent.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menu.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\item.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\string", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals_core.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concurrencysal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vadefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xkeycheck.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstring", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iosfwd", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\crtdbg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new_debug.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\crtdefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\use_ansi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdio", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_stdio_config.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstring", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memory.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memcpy_s.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\errno.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstring.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cwchar", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\wchar.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wconio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wctype.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wdirect.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_share.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wprocess.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdlib.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wtime.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\stat.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\types.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstddef", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstddef", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stddef.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtr1common", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdlib", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdlib.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_malloc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_search.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\initializer_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xmemory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdint", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdint.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cfloat", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\float.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\climits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.inl.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\isa_availability.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\new", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\exception", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\type_traits", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\malloc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_exception.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\eh.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_terminate.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xutility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_iter_core.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\utility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concepts", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\compare", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\bit", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\tuple", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xpolymorphic_allocator.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cctype", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\ctype.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\functional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\typeinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_typeinfo.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\unordered_map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xhash", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cmath", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vector", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xbit_ops.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xnode_handle.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtree", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\string_view", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\istream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ios", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocnum", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iterator", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\streambuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xiosbase", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\share.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\system_error", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_system_error_abi.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cerrno", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdexcept", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcall_once.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xerrc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\atomic", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic_wait.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xthreads.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtimec.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ctime", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\time.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\memory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfacet", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_xlocinfo_types.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\clocale", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\locale.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\chrono", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_chrono.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ratio", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfilesystem_abi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_tzdb.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\algorithm", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\forward_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\optional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xsmf_control.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xloctime", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\format", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_format_ucd_tables.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\charconv", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\locale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocbuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmes", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmon", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\mutex", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\thread", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\process.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_startup.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_startup.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stop_token", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iomanip", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\fstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\array", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\error.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\source_location", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\filesystem", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\windows.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winapifamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winpackagefamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdkddkver.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\excpt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdarg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\windef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\minwindef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_strict.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_undef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdv_driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\kernelspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\basetsd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\ktmtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apisetcconv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\minwinbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\apiquery2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processenv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapifromapp.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\debugapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\utilapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\handleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\errhandlingapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fibersapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namedpipeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\profileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\heapapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ioapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\synchapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\interlockedapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processthreadsapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\sysinfoapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\memoryapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\enclaveapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoollegacyapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoolapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wow64apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\libloaderapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securitybaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namespaceapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\systemtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securityappcontainer.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\realtimeapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winerror.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timezoneapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wingdi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winuser.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\tvout.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\datetimeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\stringapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincontypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi3.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winver.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\verrsrc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winreg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\reason.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnetwk.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wnnc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\cderr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dde.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ddeml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dlgs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\lzexpand.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsystem.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsyscom.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mciapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\playsoundapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\joystickapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\nb30.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdce.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdcep.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcnterr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcasync.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\shellapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winperf.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsock.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\bcrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ncrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dpapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winefs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winscard.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcndr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsip.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcsal.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypesbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winioctl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winsmcrd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winspool.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ole2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\combaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwnbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\cguid.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\coml2api.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwn.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oaidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\urlmon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\servprov.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\msxml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleauto.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\commdlg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\stralign.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsvc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mcx.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\imm.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ime_cmodes.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_datafile.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stack", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\deque", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\attributablestat.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\safemap.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\variant", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\bitwiseenum.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\merchant.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\functionpriming.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\theme.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\attributable.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\monsterattribute.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\defines.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_geometry2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpgex_viewport.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpgex_ttf.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\documents\\include\\ft2build.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftheader.h", + "c:\\users\\sigon\\documents\\include\\freetype\\freetype.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftconfig.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftoption.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftstdlib.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\setjmp.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\integer-types.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\public-macros.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\mac-support.h", + "c:\\users\\sigon\\documents\\include\\freetype\\fttypes.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftsystem.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftimage.h", + "c:\\users\\sigon\\documents\\include\\freetype\\fterrors.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftmoderr.h", + "c:\\users\\sigon\\documents\\include\\freetype\\fterrdef.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftglyph.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\crawler.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\animation.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_animate2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\monster.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\state.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\buff.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\set", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpgex_transformedview.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\player.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\ability.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\key.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\pathfinding.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\config.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\class.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_camera2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\bullet.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\effect.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\map.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\tmxparser.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\gamestate.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\discord.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\types.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\ffi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\dxgi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ocidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\dxgicommon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\dxgitype.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\dxgiformat.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\event.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\core.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\application_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\user_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\image_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\activity_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\relationship_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\lobby_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\network_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\overlay_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\storage_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\store_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\voice_manager.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\discord-files\\achievement_manager.h" + ], + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release Desktop/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json b/Adventures in Lestoria/x64/Release Desktop/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json new file mode 100644 index 00000000..baf36605 --- /dev/null +++ b/Adventures in Lestoria/x64/Release Desktop/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json @@ -0,0 +1,9 @@ +{ + "Version": "1.1", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menuanimatediconbutton.h", + "ProvidedModule": "", + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release Desktop/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json.command b/Adventures in Lestoria/x64/Release Desktop/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json.command new file mode 100644 index 00000000..68388cb8 Binary files /dev/null and b/Adventures in Lestoria/x64/Release Desktop/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json.command differ diff --git a/Adventures in Lestoria/x64/Release/Crawler.exe.recipe b/Adventures in Lestoria/x64/Release/Crawler.exe.recipe new file mode 100644 index 00000000..1bc46602 --- /dev/null +++ b/Adventures in Lestoria/x64/Release/Crawler.exe.recipe @@ -0,0 +1,11 @@ + + + + + C:\Users\sigon\source\repos\Crawler\x64\Release\Crawler.exe + + + + + + \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release/Crawler.res b/Adventures in Lestoria/x64/Release/Crawler.res new file mode 100644 index 00000000..93305dff Binary files /dev/null and b/Adventures in Lestoria/x64/Release/Crawler.res differ diff --git a/Adventures in Lestoria/x64/Release/Crawler.vcxproj.FileListAbsolute.txt b/Adventures in Lestoria/x64/Release/Crawler.vcxproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/Adventures in Lestoria/x64/Release/FallingDebris.h.ifc b/Adventures in Lestoria/x64/Release/FallingDebris.h.ifc new file mode 100644 index 00000000..e14d5b5d Binary files /dev/null and b/Adventures in Lestoria/x64/Release/FallingDebris.h.ifc differ diff --git a/Adventures in Lestoria/x64/Release/FallingDebris.h.ifc.d.json b/Adventures in Lestoria/x64/Release/FallingDebris.h.ifc.d.json new file mode 100644 index 00000000..77661d61 --- /dev/null +++ b/Adventures in Lestoria/x64/Release/FallingDebris.h.ifc.d.json @@ -0,0 +1,378 @@ +{ + "Version": "1.2", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\fallingdebris.h", + "ProvidedModule": "", + "Includes": [ + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\effect.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cmath", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals_core.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concurrencysal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vadefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xkeycheck.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\crtdbg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new_debug.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\crtdefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\use_ansi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdlib", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdlib.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_malloc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_search.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdlib.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtr1common", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.inl.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xutility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_iter_core.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\utility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\type_traits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdint", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdint.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstddef", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstddef", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\initializer_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concepts", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\compare", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\bit", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\isa_availability.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cfloat", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\float.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\climits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cwchar", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdio", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_stdio_config.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\wchar.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memcpy_s.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\errno.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wconio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wctype.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wdirect.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_share.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wprocess.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstring.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wtime.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\stat.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\types.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstring", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memory.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\string", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstring", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iosfwd", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xmemory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\new", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\exception", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\malloc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_exception.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\eh.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_terminate.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\tuple", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xpolymorphic_allocator.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cctype", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\ctype.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\istream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ios", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocnum", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iterator", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\streambuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xiosbase", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\share.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\system_error", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_system_error_abi.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cerrno", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdexcept", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcall_once.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xerrc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\atomic", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic_wait.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xthreads.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtimec.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ctime", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\time.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\memory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\typeinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_typeinfo.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfacet", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_xlocinfo_types.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\clocale", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\locale.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\chrono", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_chrono.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ratio", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfilesystem_abi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_tzdb.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\algorithm", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\forward_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\optional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xsmf_control.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vector", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xloctime", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\format", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_format_ucd_tables.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\charconv", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xbit_ops.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\locale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocbuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmes", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmon", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\mutex", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\thread", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\process.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_startup.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_startup.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stop_token", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iomanip", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\fstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtree", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xnode_handle.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\functional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\unordered_map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xhash", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\array", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\error.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\source_location", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\filesystem", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\windows.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winapifamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winpackagefamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdkddkver.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\excpt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdarg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\windef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\minwindef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_strict.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_undef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdv_driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\kernelspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\basetsd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\ktmtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apisetcconv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\minwinbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\apiquery2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processenv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapifromapp.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\debugapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\utilapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\handleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\errhandlingapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fibersapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namedpipeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\profileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\heapapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ioapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\synchapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\interlockedapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processthreadsapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\sysinfoapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\memoryapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\enclaveapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoollegacyapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoolapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wow64apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\libloaderapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securitybaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namespaceapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\systemtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securityappcontainer.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\realtimeapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winerror.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timezoneapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wingdi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winuser.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\tvout.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\datetimeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\stringapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincontypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi3.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winver.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\verrsrc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winreg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\reason.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnetwk.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wnnc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\cderr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dde.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ddeml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dlgs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\lzexpand.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsystem.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsyscom.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mciapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\playsoundapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\joystickapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\nb30.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdce.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdcep.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcnterr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcasync.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\shellapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winperf.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsock.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\bcrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ncrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dpapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winefs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winscard.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcndr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsip.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcsal.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypesbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winioctl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winsmcrd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winspool.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ole2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\combaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwnbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\cguid.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\coml2api.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwn.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oaidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\urlmon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\servprov.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\msxml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleauto.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\commdlg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\stralign.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsvc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mcx.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\imm.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ime_cmodes.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\animation.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_animate2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_geometry2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\defines.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\safemap.h" + ], + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.d.json b/Adventures in Lestoria/x64/Release/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.d.json new file mode 100644 index 00000000..77661d61 --- /dev/null +++ b/Adventures in Lestoria/x64/Release/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.d.json @@ -0,0 +1,378 @@ +{ + "Version": "1.2", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\fallingdebris.h", + "ProvidedModule": "", + "Includes": [ + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\effect.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cmath", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals_core.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concurrencysal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vadefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xkeycheck.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\crtdbg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new_debug.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\crtdefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\use_ansi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdlib", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdlib.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_malloc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_search.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdlib.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtr1common", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.inl.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xutility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_iter_core.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\utility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\type_traits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdint", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdint.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstddef", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstddef", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\initializer_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concepts", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\compare", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\bit", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\isa_availability.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cfloat", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\float.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\climits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cwchar", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdio", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_stdio_config.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\wchar.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memcpy_s.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\errno.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wconio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wctype.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wdirect.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_share.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wprocess.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstring.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wtime.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\stat.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\types.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstring", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memory.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\string", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstring", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iosfwd", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xmemory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\new", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\exception", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\malloc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_exception.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\eh.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_terminate.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\tuple", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xpolymorphic_allocator.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cctype", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\ctype.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\istream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ios", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocnum", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iterator", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\streambuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xiosbase", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\share.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\system_error", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_system_error_abi.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cerrno", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdexcept", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcall_once.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xerrc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\atomic", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic_wait.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xthreads.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtimec.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ctime", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\time.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\memory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\typeinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_typeinfo.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfacet", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_xlocinfo_types.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\clocale", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\locale.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\chrono", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_chrono.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ratio", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfilesystem_abi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_tzdb.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\algorithm", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\forward_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\optional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xsmf_control.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vector", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xloctime", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\format", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_format_ucd_tables.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\charconv", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xbit_ops.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\locale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocbuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmes", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmon", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\mutex", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\thread", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\process.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_startup.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_startup.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stop_token", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iomanip", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\fstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtree", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xnode_handle.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\functional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\unordered_map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xhash", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\array", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\error.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\source_location", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\filesystem", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\windows.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winapifamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winpackagefamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdkddkver.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\excpt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdarg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\windef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\minwindef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_strict.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_undef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdv_driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\kernelspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\basetsd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\ktmtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apisetcconv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\minwinbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\apiquery2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processenv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapifromapp.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\debugapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\utilapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\handleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\errhandlingapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fibersapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namedpipeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\profileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\heapapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ioapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\synchapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\interlockedapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processthreadsapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\sysinfoapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\memoryapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\enclaveapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoollegacyapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoolapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wow64apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\libloaderapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securitybaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namespaceapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\systemtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securityappcontainer.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\realtimeapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winerror.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timezoneapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wingdi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winuser.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\tvout.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\datetimeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\stringapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincontypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi3.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winver.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\verrsrc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winreg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\reason.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnetwk.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wnnc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\cderr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dde.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ddeml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dlgs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\lzexpand.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsystem.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsyscom.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mciapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\playsoundapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\joystickapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\nb30.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdce.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdcep.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcnterr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcasync.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\shellapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winperf.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsock.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\bcrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ncrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dpapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winefs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winscard.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcndr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsip.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcsal.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypesbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winioctl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winsmcrd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winspool.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ole2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\combaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwnbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\cguid.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\coml2api.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwn.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oaidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\urlmon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\servprov.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\msxml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleauto.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\commdlg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\stralign.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsvc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mcx.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\imm.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ime_cmodes.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\animation.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_animate2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_geometry2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\defines.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\safemap.h" + ], + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json b/Adventures in Lestoria/x64/Release/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json new file mode 100644 index 00000000..ec074239 --- /dev/null +++ b/Adventures in Lestoria/x64/Release/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json @@ -0,0 +1,9 @@ +{ + "Version": "1.1", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\fallingdebris.h", + "ProvidedModule": "", + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json.command b/Adventures in Lestoria/x64/Release/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json.command new file mode 100644 index 00000000..f0576f5b Binary files /dev/null and b/Adventures in Lestoria/x64/Release/FallingDebris.h_E064C29D12DC7EF6.ifc.dt.module.json.command differ diff --git a/Crawler/Crawler b/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h.ifc old mode 100755 new mode 100644 similarity index 64% rename from Crawler/Crawler rename to Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h.ifc index 4b0de35a..c815eeeb Binary files a/Crawler/Crawler and b/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h.ifc differ diff --git a/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h.ifc.d.json b/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h.ifc.d.json new file mode 100644 index 00000000..5ee6f7a6 --- /dev/null +++ b/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h.ifc.d.json @@ -0,0 +1,446 @@ +{ + "Version": "1.2", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menuanimatediconbutton.h", + "ProvidedModule": "", + "Includes": [ + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menuiconbutton.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menucomponent.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menu.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\item.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\string", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals_core.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concurrencysal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vadefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xkeycheck.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstring", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iosfwd", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\crtdbg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new_debug.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\crtdefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\use_ansi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdio", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_stdio_config.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstring", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memory.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memcpy_s.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\errno.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstring.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cwchar", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\wchar.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wconio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wctype.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wdirect.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_share.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wprocess.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdlib.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wtime.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\stat.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\types.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstddef", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstddef", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stddef.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtr1common", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdlib", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdlib.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_malloc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_search.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\initializer_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xmemory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdint", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdint.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cfloat", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\float.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\climits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.inl.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\isa_availability.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\new", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\exception", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\type_traits", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\malloc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_exception.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\eh.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_terminate.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xutility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_iter_core.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\utility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concepts", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\compare", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\bit", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\tuple", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xpolymorphic_allocator.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cctype", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\ctype.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\functional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\typeinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_typeinfo.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\unordered_map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xhash", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cmath", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vector", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xbit_ops.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xnode_handle.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtree", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\istream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ios", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocnum", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iterator", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\streambuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xiosbase", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\share.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\system_error", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_system_error_abi.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cerrno", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdexcept", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcall_once.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xerrc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\atomic", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic_wait.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xthreads.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtimec.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ctime", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\time.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\memory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfacet", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_xlocinfo_types.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\clocale", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\locale.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\chrono", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_chrono.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ratio", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfilesystem_abi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_tzdb.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\algorithm", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\forward_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\optional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xsmf_control.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xloctime", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\format", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_format_ucd_tables.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\charconv", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\locale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocbuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmes", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmon", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\mutex", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\thread", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\process.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_startup.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_startup.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stop_token", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iomanip", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\fstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\array", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\error.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\source_location", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\filesystem", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\windows.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winapifamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winpackagefamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdkddkver.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\excpt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdarg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\windef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\minwindef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_strict.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_undef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdv_driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\kernelspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\basetsd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\ktmtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apisetcconv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\minwinbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\apiquery2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processenv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapifromapp.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\debugapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\utilapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\handleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\errhandlingapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fibersapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namedpipeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\profileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\heapapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ioapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\synchapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\interlockedapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processthreadsapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\sysinfoapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\memoryapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\enclaveapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoollegacyapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoolapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wow64apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\libloaderapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securitybaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namespaceapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\systemtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securityappcontainer.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\realtimeapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winerror.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timezoneapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wingdi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winuser.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\tvout.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\datetimeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\stringapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincontypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi3.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winver.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\verrsrc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winreg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\reason.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnetwk.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wnnc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\cderr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dde.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ddeml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dlgs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\lzexpand.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsystem.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsyscom.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mciapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\playsoundapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\joystickapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\nb30.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdce.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdcep.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcnterr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcasync.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\shellapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winperf.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsock.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\bcrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ncrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dpapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winefs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winscard.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcndr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsip.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcsal.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypesbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winioctl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winsmcrd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winspool.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ole2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\combaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwnbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\cguid.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\coml2api.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwn.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oaidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\urlmon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\servprov.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\msxml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleauto.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\commdlg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\stralign.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsvc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mcx.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\imm.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ime_cmodes.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_datafile.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stack", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\deque", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\attributablestat.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\bitwiseenum.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\merchant.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\functionpriming.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\safemap.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\theme.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\attributable.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\monsterattribute.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\defines.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\variant", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_geometry2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpgex_viewport.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpgex_ttf.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\documents\\include\\ft2build.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftheader.h", + "c:\\users\\sigon\\documents\\include\\freetype\\freetype.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftconfig.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftoption.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftstdlib.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\setjmp.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\integer-types.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\public-macros.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\mac-support.h", + "c:\\users\\sigon\\documents\\include\\freetype\\fttypes.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftsystem.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftimage.h", + "c:\\users\\sigon\\documents\\include\\freetype\\fterrors.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftmoderr.h", + "c:\\users\\sigon\\documents\\include\\freetype\\fterrdef.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftglyph.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\crawler.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\animation.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_animate2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\monster.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\state.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\buff.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpgex_transformedview.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\player.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\ability.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\key.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\set", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\pathfinding.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\config.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\class.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_camera2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\bullet.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\effect.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\map.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\tmxparser.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\gamestate.h" + ], + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.d.json b/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.d.json new file mode 100644 index 00000000..5ee6f7a6 --- /dev/null +++ b/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.d.json @@ -0,0 +1,446 @@ +{ + "Version": "1.2", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menuanimatediconbutton.h", + "ProvidedModule": "", + "Includes": [ + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menuiconbutton.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menucomponent.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menu.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\item.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\string", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals_core.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concurrencysal.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vadefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xkeycheck.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstring", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iosfwd", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\yvals.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\crtdbg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new_debug.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_new.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\crtdefs.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\use_ansi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdio", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_stdio_config.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstring", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memory.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_memcpy_s.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\errno.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_string.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstring.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cwchar", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\wchar.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wconio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wctype.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wdirect.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wio.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_share.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wprocess.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wstdlib.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_wtime.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\stat.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\sys\\types.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xstddef", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstddef", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stddef.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtr1common", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdlib", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_math.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\stdlib.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_malloc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_search.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\initializer_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xmemory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cstdint", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdint.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\limits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cfloat", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\float.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\climits", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\intrin0.inl.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\isa_availability.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\new", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\exception", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\type_traits", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\malloc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_exception.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\eh.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_terminate.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xutility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_iter_core.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\utility", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\concepts", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\compare", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\bit", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\tuple", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xpolymorphic_allocator.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cctype", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\ctype.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\functional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\typeinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_typeinfo.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\unordered_map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xhash", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cmath", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vector", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xbit_ops.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xnode_handle.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\map", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtree", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\istream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ostream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ios", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocnum", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iterator", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\streambuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xiosbase", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\share.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\system_error", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_system_error_abi.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\cerrno", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdexcept", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcall_once.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xerrc.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\atomic", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xatomic_wait.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xthreads.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xtimec.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ctime", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\time.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\memory", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfacet", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocinfo", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_xlocinfo_types.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\clocale", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\locale.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\sstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\chrono", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_chrono.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\ratio", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xfilesystem_abi.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_tzdb.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\algorithm", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\forward_list", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\optional", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xsmf_control.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xloctime", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\format", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\__msvc_format_ucd_tables.hpp", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\charconv", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_ryu_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xcharconv_tables.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\locale", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocbuf", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmes", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\xlocmon", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\mutex", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\thread", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\process.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\corecrt_startup.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\ucrt\\math.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\vcruntime_startup.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stop_token", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\iomanip", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\fstream", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\array", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\error.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\source_location", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\filesystem", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\windows.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winapifamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winpackagefamily.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdkddkver.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\excpt.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stdarg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\windef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\minwindef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_strict.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\specstrings_undef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\sdv_driverspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\kernelspecs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\basetsd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\ktmtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\apisetcconv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\minwinbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\apiquery2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processenv.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapifromapp.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\debugapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\utilapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\handleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\errhandlingapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\fibersapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namedpipeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\profileapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\heapapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ioapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\synchapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\interlockedapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processthreadsapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\sysinfoapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\memoryapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\enclaveapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoollegacyapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\threadpoolapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\jobapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wow64apiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\libloaderapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securitybaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\namespaceapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\systemtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\processtopologyapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\securityappcontainer.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\realtimeapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winerror.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timezoneapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wingdi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack4.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winuser.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\tvout.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\datetimeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\stringapiset.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnls.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincontypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\consoleapi3.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winver.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\verrsrc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winreg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\reason.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winnetwk.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wnnc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\cderr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dde.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ddeml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dlgs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\lzexpand.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsystem.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmsyscom.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mciapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmiscapi2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\playsoundapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mmeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\timeapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\joystickapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\nb30.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdce.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcdcep.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcnterr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcasync.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\shellapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winperf.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsock.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\wincrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\bcrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ncrypt.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\dpapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winefs.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winscard.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypes.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcndr.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\rpcnsip.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\rpcsal.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\wtypesbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winioctl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack1.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\winsmcrd.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winspool.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ole2.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\combaseapi.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwnbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\guiddef.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\cguid.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\coml2api.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\objidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\unknwn.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidlbase.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oaidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\urlmon.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\servprov.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\msxml.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\propidl.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\oleauto.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\pshpack8.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\poppack.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\commdlg.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\prsht.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\shared\\stralign.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\winsvc.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\mcx.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\imm.h", + "c:\\program files (x86)\\windows kits\\10\\include\\10.0.22000.0\\um\\ime_cmodes.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_datafile.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\stack", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\deque", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\attributablestat.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\bitwiseenum.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\merchant.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\functionpriming.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\safemap.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\theme.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\attributable.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\monsterattribute.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\defines.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\variant", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_geometry2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpgex_viewport.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpgex_ttf.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\documents\\include\\ft2build.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftheader.h", + "c:\\users\\sigon\\documents\\include\\freetype\\freetype.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftconfig.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftoption.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\ftstdlib.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\setjmp.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\integer-types.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\public-macros.h", + "c:\\users\\sigon\\documents\\include\\freetype\\config\\mac-support.h", + "c:\\users\\sigon\\documents\\include\\freetype\\fttypes.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftsystem.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftimage.h", + "c:\\users\\sigon\\documents\\include\\freetype\\fterrors.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftmoderr.h", + "c:\\users\\sigon\\documents\\include\\freetype\\fterrdef.h", + "c:\\users\\sigon\\documents\\include\\freetype\\ftglyph.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\crawler.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\animation.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_animate2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\monster.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\state.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\buff.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpgex_transformedview.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\player.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\ability.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\key.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\program files\\microsoft visual studio\\2022\\community\\vc\\tools\\msvc\\14.35.32215\\include\\set", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\pathfinding.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\config.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\class.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcutil_camera2d.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\bullet.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\effect.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\map.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\tmxparser.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\olcpixelgameengine.h", + "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\gamestate.h" + ], + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json b/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json new file mode 100644 index 00000000..baf36605 --- /dev/null +++ b/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json @@ -0,0 +1,9 @@ +{ + "Version": "1.1", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menuanimatediconbutton.h", + "ProvidedModule": "", + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json.command b/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json.command new file mode 100644 index 00000000..1ccfe08d Binary files /dev/null and b/Adventures in Lestoria/x64/Release/MenuAnimatedIconButton.h_9CBED568997653E1.ifc.dt.module.json.command differ diff --git a/Adventures in Lestoria/x64/Release/fallingdebris.h.module.json b/Adventures in Lestoria/x64/Release/fallingdebris.h.module.json new file mode 100644 index 00000000..ec074239 --- /dev/null +++ b/Adventures in Lestoria/x64/Release/fallingdebris.h.module.json @@ -0,0 +1,9 @@ +{ + "Version": "1.1", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\fallingdebris.h", + "ProvidedModule": "", + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/Adventures in Lestoria/x64/Release/menuanimatediconbutton.h.module.json b/Adventures in Lestoria/x64/Release/menuanimatediconbutton.h.module.json new file mode 100644 index 00000000..baf36605 --- /dev/null +++ b/Adventures in Lestoria/x64/Release/menuanimatediconbutton.h.module.json @@ -0,0 +1,9 @@ +{ + "Version": "1.1", + "Data": { + "Source": "c:\\users\\sigon\\source\\repos\\crawler\\crawler\\menuanimatediconbutton.h", + "ProvidedModule": "", + "ImportedModules": [], + "ImportedHeaderUnits": [] + } +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..b93890b4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,374 @@ +# require version 3.10 or higher +cmake_minimum_required(VERSION 3.10) + +# +# Project +# +# - dictates the output executable filename +# +project("Adventures in Lestoria") + +add_compile_options("-s" "USE_FREETYPE=1") +add_compile_options("-O2") + +# Options you can set via command-line +option(HAS_TERMINAL "Show a terminal window for STDOUT/STDERR" ON) +option(USE_ALSA "Force using ALSA as audio backend (Linux-only)") +option(USE_PULSEAUDIO "Force using PulseAudio as audio backend (Linux-only)") +option(USE_SDL2_MIXER "Force using SDL2_mixer as audio backend") + +# +# C_CXX_SOURCES_DIR +# +# - the place where your C/C++ source files are located +# +set(C_CXX_SOURCES_DIR "Adventures in Lestoria") + +# +# C_CXX_HEADERS_DIR +# +# - the place where your C/C++ header files are located +# +set(C_CXX_HEADERS_DIR "Adventures in Lestoria") + +# +# ASSETS_DIR +# +# - the place where your pictures, sound files, etc.. live +# +set(ASSETS_DIR "Adventures in Lestoria/assets") + +########################################################################## +# DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING!! # +########################################################################## + +# Set C++ Standards +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +# Build utilizing 8 cores simultaneously. +set(CMAKE_BUILD_PARALLEL_LEVEL 8) + +# output executable basename +set(OutputExecutable "AdventuresInLestoria") + +###################################################################### +# Directories + +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + +# We need to specify the output for each configuration to make it work +# on Visual Studio solutions. +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/bin") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/bin") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/bin") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_PROFILE "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_PROFILE "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_PROFILE "${CMAKE_BINARY_DIR}/bin") + +set(SOURCE_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${ASSETS_DIR}) +set(SOURCE_CXX_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${C_CXX_HEADERS_DIR}) +set(SOURCE_CXX_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${C_CXX_SOURCES_DIR}) + +# Source Files are Curated Here +file( + GLOB SOURCE_CXX_FILES + "${SOURCE_CXX_SRC_DIR}/*.cpp" +) + +# Search in the "cmake" directory for additional CMake modules. +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + +# Executable aka binary output +add_executable("${OutputExecutable}" ${SOURCE_CXX_FILES}) + +###################################################################### +# MacOS +###################################################################### + + +if(APPLE) + + # OpenGL + set(OpenGL_GL_PREFERENCE LEGACY) + find_package(OpenGL REQUIRED) + include_directories(${OpenGL_INCLUDE_DIRS}) + target_link_libraries(${OutputExecutable} ${OpenGL_LIBRARIES} OpenGL::GL) + + # Carbon + FIND_LIBRARY(CARBON_LIBRARY Carbon) + target_link_libraries(${OutputExecutable} ${CARBON_LIBRARY}) + + # GLUT + find_package(GLUT REQUIRED) + target_link_libraries(${OutputExecutable} ${GLUT_LIBRARIES}) + + # Threads + find_package(Threads REQUIRED) + target_link_libraries(${OutputExecutable} Threads::Threads) + include_directories(${Threads_INCLUDE_DIRS}) + + # SDL2_mixer + set(USE_SDL2_MIXER ON) + + find_package(PNG REQUIRED) + target_link_libraries(${OutputExecutable} PNG::PNG) + include_directories(${PNG_INCLUDE_DIRS}) + +endif() # APPLE + +###################################################################### +# Windows: MinGW +###################################################################### +if(WIN32 AND MINGW) + + # OpenGL + set(OpenGL_GL_PREFERENCE LEGACY) + find_package(OpenGL REQUIRED) + include_directories(${OpenGL_INCLUDE_DIRS}) + target_link_libraries(${OutputExecutable} ${OpenGL_LIBRARIES} OpenGL::GL) + + if (NOT HAS_TERMINAL) + target_link_libraries(${OutputExecutable} -mwindows -municode) + endif (NOT HAS_TERMINAL) + + # GDI+ + set(GDIPLUS_LIBRARY gdiplus) + target_link_libraries(${OutputExecutable} ${GDIPLUS_LIBRARY}) + + # Shlwapi + set(SHLWAPI_LIBRARY shlwapi) + target_link_libraries(${OutputExecutable} ${SHLWAPI_LIBRARY}) + + # Dwmapi + set(DWMAPI_LIBRARY dwmapi) + target_link_libraries(${OutputExecutable} ${DWMAPI_LIBRARY}) + + if(NOT USE_SDL2_MIXER) + + # winmm + set(WINMM_LIBRARY winmm) + target_link_libraries(${OutputExecutable} ${WINMM_LIBRARY}) + + endif() # NOT USE_SDL2_MIXER + + + # stdc++fs + target_link_libraries(${OutputExecutable} stdc++fs) + +endif() + +###################################################################### +# Windows: Visual Studio / MSVC +###################################################################### +if(WIN32 AND MSVC) + + # OpenGL + set(OpenGL_GL_PREFERENCE LEGACY) + find_package(OpenGL REQUIRED) + include_directories(${OpenGL_INCLUDE_DIRS}) + target_link_libraries(${OutputExecutable} ${OpenGL_LIBRARIES} OpenGL::GL) + + # set the startup project to the target executable instead of ALL_BUILD + set_property( + DIRECTORY + ${CMAKE_CURRENT_SOURCE_DIR} + PROPERTY + VS_STARTUP_PROJECT + ${OutputExecutable} + ) + + # set working directory for Visual Studio Debugger + set_target_properties( + ${OutputExecutable} PROPERTIES + VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/bin" + ) + + # set subsytem, console if HAS_TERMINAL is true. windows if not + if (HAS_TERMINAL) + target_link_options(${OutputExecutable} PRIVATE "/SUBSYSTEM:CONSOLE") + else () + target_link_options(${OutputExecutable} PRIVATE "/SUBSYSTEM:WINDOWS") + endif () + + # GDI+ + set(GDIPLUS_LIBRARY gdiplus) + target_link_libraries(${OutputExecutable} ${GDIPLUS_LIBRARY}) + + # Shlwapi + set(SHLWAPI_LIBRARY shlwapi) + target_link_libraries(${OutputExecutable} ${SHLWAPI_LIBRARY}) + + # Dwmapi + set(DWMAPI_LIBRARY dwmapi) + target_link_libraries(${OutputExecutable} ${DWMAPI_LIBRARY}) + + if(NOT USE_SDL2_MIXER) + + # winmm + set(WINMM_LIBRARY winmm) + target_link_libraries(${OutputExecutable} ${WINMM_LIBRARY}) + + endif() + +endif() # Visual Studio / MSVC + +###################################################################### +# Linux: using anything? +###################################################################### +if(UNIX AND NOT APPLE AND NOT EMSCRIPTEN) + + # OpenGL + set(OpenGL_GL_PREFERENCE LEGACY) + find_package(OpenGL REQUIRED) + include_directories(${OpenGL_INCLUDE_DIRS}) + target_link_libraries(${OutputExecutable} ${OpenGL_LIBRARIES} OpenGL::GL) + + # X11 + find_package(X11 REQUIRED) + target_link_libraries(${OutputExecutable} X11::X11) + + include_directories(${X11_INCLUDE_DIRS}) + + # Threads + find_package(Threads REQUIRED) + target_link_libraries(${OutputExecutable} Threads::Threads) + include_directories(${Threads_INCLUDE_DIRS}) + + # TODO: sanity checks + + if(USE_ALSA) + + # ALSA + find_package(ALSA REQUIRED) + target_link_libraries(${OutputExecutable} ALSA::ALSA) + include_directories(${ALSA_INCLUDE_DIRS}) + add_compile_definitions(SOUNDWAVE_USING_ALSA=1) + + elseif(USE_SDL2_MIXER) + + # Because SDL2_mixer can be used on multiple platforms, we + # defer it's inclusion until outside of the platform/toolchain + # selection logic. + + else() # PulseAudio is Default + + # PulseAudio + find_package(PulseAudio REQUIRED) + target_link_libraries(${OutputExecutable} ${PULSEAUDIO_LIBRARY} pulse-simple) + include_directories(${PULSEAUDIO_INCLUDE_DIR}) + + add_compile_definitions(SOUNDWAVE_USING_PULSE=1) + + endif() + + find_package(PNG REQUIRED) + target_link_libraries(${OutputExecutable} PNG::PNG) + include_directories(${PNG_INCLUDE_DIRS}) + + # stdc++fs + target_link_libraries(${OutputExecutable} stdc++fs) + +endif() # Linux + +###################################################################### +# Emscripten +###################################################################### +if (EMSCRIPTEN) + + # Generate an HTML file + set(CMAKE_EXECUTABLE_SUFFIX .html) + + # Build Cache: SDL2_mixer, libpng, zlib + execute_process(COMMAND "${EMSCRIPTEN_ROOT_PATH}/embuilder${EMCC_SUFFIX}" build sdl2_mixer freetype libpng zlib) + + if(EXISTS "${SOURCE_DATA_DIR}" AND IS_DIRECTORY "${SOURCE_DATA_DIR}") + target_link_options( + ${OutputExecutable} + PRIVATE + -sALLOW_MEMORY_GROWTH=1 + -sMAX_WEBGL_VERSION=2 + -sMIN_WEBGL_VERSION=2 + -sUSE_LIBPNG=1 + -sUSE_FREETYPE=1 + -sLLD_REPORT_UNDEFINED + -sFETCH=1 + -sEXPORTED_RUNTIME_METHODS=stringToNewUTF8 + -std=c++20 + --proxy-to-worker + -O2 + --preload-file ${SOURCE_DATA_DIR}@assets) + else() + target_link_options( + ${OutputExecutable} + PRIVATE + -sALLOW_MEMORY_GROWTH=1 + -sMAX_WEBGL_VERSION=2 + -sMIN_WEBGL_VERSION=2 + -sUSE_LIBPNG=1 + -sUSE_FREETYPE=1 + -sFETCH=1 + -sEXPORTED_RUNTIME_METHODS=stringToNewUTF8 + -std=c++20 + --proxy-to-worker + -O2 + -sLLD_REPORT_UNDEFINED) + endif() + +endif() # Emscripten + + +if(USE_SDL2_MIXER AND NOT EMSCRIPTEN) + + # SDL2_mixer + find_package(SDL2_mixer REQUIRED) + target_link_libraries(${OutputExecutable} SDL2_mixer::SDL2_mixer) + + add_compile_definitions(SOUNDWAVE_USING_SDLMIXER=1) + +endif() # USE_SDL2_MIXER + + +###################################################################### +# Set include directory +###################################################################### +if(IS_DIRECTORY ${SOURCE_CXX_INCLUDE_DIR}) + include_directories(${SOURCE_CXX_INCLUDE_DIR}) +endif() + + +###################################################################### +# Copy assets/ directory target +###################################################################### + +set(DATA_OUTPUT_DIR ${CMAKE_BINARY_DIR}/bin/${ASSETS_DIR}) + +set (EXCLUDE_DIR "/assets/saves/") +file(GLOB_RECURSE src_data_files + RELATIVE ${SOURCE_DATA_DIR}/ "${SOURCE_DATA_DIR}/*.*" "${SOURCE_DATA_DIR}/*") +foreach(fn ${src_data_files}) + string (FIND ${fn} ${EXCLUDE_DIR} EXCLUDE_DIR_FOUND) + if (NOT ${EXCLUDE_DIR_FOUND} EQUAL -1) + add_custom_command( + OUTPUT ${DATA_OUTPUT_DIR}/${fn} + COMMAND ${CMAKE_COMMAND} -E copy ${SOURCE_DATA_DIR}/${fn} ${DATA_OUTPUT_DIR}/${fn} + MAIN_DEPENDENCY ${SOURCE_DATA_DIR}/${fn}) + list(APPEND out_data_files ${DATA_OUTPUT_DIR}/${fn}) + endif() +endforeach() + +add_custom_target(copy_data DEPENDS ${out_data_files}) + +# Copy Asset Files, if not Emscripten +if (NOT EMSCRIPTEN) + add_dependencies(${OutputExecutable} copy_data) +endif() diff --git a/Crawler/.vscode/settings.json b/Crawler/.vscode/settings.json deleted file mode 100644 index ef676559..00000000 --- a/Crawler/.vscode/settings.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "files.associations": { - "array": "cpp", - "atomic": "cpp", - "bit": "cpp", - "*.tcc": "cpp", - "cctype": "cpp", - "chrono": "cpp", - "clocale": "cpp", - "cmath": "cpp", - "codecvt": "cpp", - "compare": "cpp", - "concepts": "cpp", - "cstdarg": "cpp", - "cstddef": "cpp", - "cstdint": "cpp", - "cstdio": "cpp", - "cstdlib": "cpp", - "cstring": "cpp", - "ctime": "cpp", - "cwchar": "cpp", - "cwctype": "cpp", - "deque": "cpp", - "list": "cpp", - "map": "cpp", - "set": "cpp", - "string": "cpp", - "unordered_map": "cpp", - "vector": "cpp", - "exception": "cpp", - "algorithm": "cpp", - "functional": "cpp", - "iterator": "cpp", - "memory": "cpp", - "memory_resource": "cpp", - "numeric": "cpp", - "random": "cpp", - "ratio": "cpp", - "string_view": "cpp", - "system_error": "cpp", - "tuple": "cpp", - "type_traits": "cpp", - "utility": "cpp", - "fstream": "cpp", - "initializer_list": "cpp", - "iomanip": "cpp", - "iosfwd": "cpp", - "iostream": "cpp", - "istream": "cpp", - "limits": "cpp", - "new": "cpp", - "numbers": "cpp", - "ostream": "cpp", - "semaphore": "cpp", - "sstream": "cpp", - "stdexcept": "cpp", - "stop_token": "cpp", - "streambuf": "cpp", - "thread": "cpp", - "cinttypes": "cpp", - "typeinfo": "cpp", - "variant": "cpp" - } -} \ No newline at end of file diff --git a/Crawler/assets/heart.ico b/Crawler/assets/heart.ico deleted file mode 100644 index 4cdd093b..00000000 Binary files a/Crawler/assets/heart.ico and /dev/null differ diff --git a/Crawler/emscripten_build.ps1 b/Crawler/emscripten_build.ps1 deleted file mode 100644 index 3ca64ce8..00000000 --- a/Crawler/emscripten_build.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -~\Documents\emsdk\emsdk_env.ps1 activate latest -em++ -std=c++20 -fexperimental-library -O2 -s ALLOW_MEMORY_GROWTH=1 -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_LIBPNG=1 -s USE_FREETYPE=1 $(Get-ChildItem *.cpp) -o pge.html --preload-file assets \ No newline at end of file diff --git a/Crawler/pge.js b/Crawler/pge.js deleted file mode 100644 index 2ac573b6..00000000 --- a/Crawler/pge.js +++ /dev/null @@ -1 +0,0 @@ -var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="pge.data";var REMOTE_PACKAGE_BASE="pge.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);Module["FS_createPath"]("/assets","Ability Icons",true,true);Module["FS_createPath"]("/assets","Campaigns",true,true);Module["FS_createPath"]("/assets","backgrounds",true,true);Module["FS_createPath"]("/assets","characters",true,true);Module["FS_createPath"]("/assets","config",true,true);Module["FS_createPath"]("/assets/config","classes",true,true);Module["FS_createPath"]("/assets/config","gfx",true,true);Module["FS_createPath"]("/assets/config","items",true,true);Module["FS_createPath"]("/assets/config","shops",true,true);Module["FS_createPath"]("/assets/config","story",true,true);Module["FS_createPath"]("/assets","items",true,true);Module["FS_createPath"]("/assets","maps",true,true);Module["FS_createPath"]("/assets/maps","commercial_assets",true,true);Module["FS_createPath"]("/assets","menus",true,true);Module["FS_createPath"]("/assets","monsters",true,true);Module["FS_createPath"]("/assets","themes",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="pge.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateMemoryViews();wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={329140:()=>{window.onunload=Module._olc_OnPageUnload},329184:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;oncontextmenu=function(e){return false};var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()},331157:()=>{return window.scrollX},331181:()=>{return window.scrollY},331205:()=>{return window.scrollX},331229:()=>{return window.scrollY},331253:()=>{return window.scrollX},331277:()=>{return window.scrollY},331301:()=>{return Module.canvas.getBoundingClientRect().left},331353:()=>{return Module.canvas.getBoundingClientRect().top},331404:()=>{return Module.canvas.getBoundingClientRect().left},331456:()=>{return Module.canvas.getBoundingClientRect().top}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var exceptionCaught=[];var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_rethrow(){var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function _abort(){abort("")}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:2};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents=="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglInitialize(display,majorVersion,minorVersion){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function _eglSwapBuffers(dpy,surface){if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(e=event){var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function fillMouseEventData(eventStruct,e,target){HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-rect.left;HEAP32[idx+14]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(e=event){fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(e=event){var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _glBindVertexArrayOES=_glBindVertexArray;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}function _glClear(x0){GLctx.clear(x0)}function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glEnable(x0){GLctx.enable(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var preloadedImages={};var preloadedAudios={};var GLctx;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/Crawler/pge.wasm b/Crawler/pge.wasm deleted file mode 100644 index 6f7e527a..00000000 Binary files a/Crawler/pge.wasm and /dev/null differ diff --git a/Crawler/sig b/Crawler/sig deleted file mode 100755 index b2587723..00000000 --- a/Crawler/sig +++ /dev/null @@ -1,10 +0,0 @@ -export AUTO_UPDATE=true - -source utils/define.sh - -define PROJECT_NAME "Crawler" -define CUSTOM_PARAMS "-I/usr/include/freetype2 -I/usr/include/libpng16 -std=c++20 -lGL -lX11 -lpthread -lpng -lstdc++fs -lfreetype -I/usr/include/lua5.3" -define EMSCRIPTEN_CUSTOM_PARAMS "-s MAXIMUM_MEMORY=4GB" -define LANGUAGE "C++" - -source utils/main.sh diff --git a/emscripten_build.ps1 b/emscripten_build.ps1 new file mode 100644 index 00000000..4f92be1c --- /dev/null +++ b/emscripten_build.ps1 @@ -0,0 +1,3 @@ +clear +emcmake cmake . +cmake --build . -j 8 \ No newline at end of file diff --git a/emscripten_run.ps1 b/emscripten_run.ps1 new file mode 100644 index 00000000..3b0e6d4a --- /dev/null +++ b/emscripten_run.ps1 @@ -0,0 +1 @@ +emrun bin/index.html \ No newline at end of file diff --git a/runGame.bat b/runGame.bat index abc54ba7..3a3485b9 100644 --- a/runGame.bat +++ b/runGame.bat @@ -1,2 +1,2 @@ -cd Crawler -..\x64\Release\Crawler.exe \ No newline at end of file +cd "Adventures in Lestoria" +"..\x64\Release\Adventures in Lestoria.exe" \ No newline at end of file diff --git a/x64/Release/Adventures in Lestoria.exe b/x64/Release/Adventures in Lestoria.exe new file mode 100644 index 00000000..54ff5fcb Binary files /dev/null and b/x64/Release/Adventures in Lestoria.exe differ diff --git a/x64/Release/Crawler.exe b/x64/Release/Crawler.exe deleted file mode 100644 index 61a88d6a..00000000 Binary files a/x64/Release/Crawler.exe and /dev/null differ diff --git a/x64/Release/discord_game_sdk.dll b/x64/Release/discord_game_sdk.dll new file mode 100644 index 00000000..be946ea7 Binary files /dev/null and b/x64/Release/discord_game_sdk.dll differ