diff --git a/Adventures in Lestoria/Adventures in Lestoria.vcxproj b/Adventures in Lestoria/Adventures in Lestoria.vcxproj index 2c240039..01751b4e 100644 --- a/Adventures in Lestoria/Adventures in Lestoria.vcxproj +++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj @@ -790,6 +790,7 @@ + diff --git a/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters b/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters index af5ad58c..1785aa8a 100644 --- a/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters +++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters @@ -858,6 +858,7 @@ Documentation + diff --git a/Adventures in Lestoria/CharacterMenuWindow.cpp b/Adventures in Lestoria/CharacterMenuWindow.cpp index 2c3ac5da..597d9375 100644 --- a/Adventures in Lestoria/CharacterMenuWindow.cpp +++ b/Adventures in Lestoria/CharacterMenuWindow.cpp @@ -60,13 +60,13 @@ namespace CharacterMenuWindow{ const std::functioncalcFunc; }; const static std::arraydisplayAttrs{ - AttributeData{"Health",[&]()->int{return game->GetPlayer()->GetMaxHealth();}}, - AttributeData{"Attack",[&]()->int{return game->GetPlayer()->GetAttack();}}, - AttributeData{"Defense",[&]()->int{return game->GetPlayer()->GetStat("Defense");}}, - AttributeData{"Move Spd %",[&]()->int{return ceil(game->GetPlayer()->GetMoveSpdMult()*100);}}, - AttributeData{"CDR",[&]()->int{return ceil(game->GetPlayer()->GetCooldownReductionPct()*100);}}, - AttributeData{"Crit Rate",[&]()->int{return ceil(game->GetPlayer()->GetCritRatePct()*100);}}, - AttributeData{"Crit Dmg",[&]()->int{return ceil(game->GetPlayer()->GetCritDmgPct()*100);}}, + AttributeData{"Health",[]()->int{return game->GetPlayer()->GetMaxHealth();}}, + AttributeData{"Attack",[]()->int{return game->GetPlayer()->GetAttack();}}, + AttributeData{"Defense",[]()->int{return game->GetPlayer()->GetStat("Defense");}}, + AttributeData{"Move Spd %",[]()->int{return ceil(game->GetPlayer()->GetMoveSpdMult()*100);}}, + AttributeData{"CDR",[]()->int{return ceil(game->GetPlayer()->GetCooldownReductionPct()*100);}}, + AttributeData{"Crit Rate",[]()->int{return ceil(game->GetPlayer()->GetCritRatePct()*100);}}, + AttributeData{"Crit Dmg",[]()->int{return ceil(game->GetPlayer()->GetCritDmgPct()*100);}}, }; const static std::arrayslotNames{"Helmet","Weapon","Armor","Gloves","Pants","Shoes","Ring 1","Ring 2"}; template diff --git a/Adventures in Lestoria/ClassDiagram.cd b/Adventures in Lestoria/ClassDiagram.cd new file mode 100644 index 00000000..d269cc19 --- /dev/null +++ b/Adventures in Lestoria/ClassDiagram.cd @@ -0,0 +1,1334 @@ + + + + + + AAQACAAAABAQAgAAAAAAAAAAAIAIAAAAAAAAEAAAAAA= + AccessoryRowItemDisplay.h + + + + + + AEQAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgA= + CharacterAbilityPreviewComponent.h + + + + + + IQQAAAAAAAAAAAAAAAAAAAAAAEAAIAAAAQAAAAAAAgA= + CharacterRotatingDisplay.h + + + + + + AQAAAAAAAKAAAAAAAAAAAAAAAAAAABAAAgAAAAAEAgA= + Checkbox.h + + + + + + ACAAAAAAAAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAgA= + EnhancementStatsLabel.h + + + + + + AAQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAIACAAAAAgE= + EquipSlotButton.h + + + + + + AgAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAQAAAAAAgA= + FloatingMenuComponent.h + + + + + + AQAAAIAAAAAAAAAAAAAAAAAAAAABABEAAAEAAAAAAgA= + InputDisplayComponent.h + + + + + + AAAAAAQAAAAAAwAAAAIgAAAAAAAAAAAACAQAAAAAAAA= + InputHelper.h + + + + + + AAAAAAAAAAgAAAAAAAAAAAAABAAAAAAAAAAAAAAIACA= + InventoryCreator.h + + + + + + gEQAAIoAAAgIAAAIAgAgAAAAABAAEACAAAAAAEAIIIA= + InventoryScrollableWindowComponent.h + + + + + + AAAAAAAAAACABEAAAABAAAAAAAAAAAAAAAAAAAAAAAA= + ItemMenuLabel.h + + + + + + gAQAAIAAAAAAAAgAAAAAAEAAAAECAAFAQAAAAAAAAgA= + LoadFileButton.h + + + + + + iA1CJhDEAFVCQkAVYIatQMAiF5xZQ4EYtS1JQEoCUSA= + Menu.h + + + + + + AAQAAAAAAAAAAAgAAAAAAIAAAAAAAIAAAAAAAAAAAgA= + MenuAnimatedIconButton.h + + + + + + AAQAAAAAAAAAAAgAAAQAAAAAAAAgAAAAAAAAAAAAAgA= + MenuAnimatedIconToggleButton.h + + + + + + AUYAAIAAQBACBVmSBAUIqgjUQAA1FgEFAIYoc0QKJg0= + MenuComponent.h + + + + + + AwQAAAAAAAAAAAAAAAAAAAAAAACQAAAAAQAAAAEAAgA= + MenuIconButton.h + + + + + + gAQABIYAAAACAUAAAAAAAAAAAAAAEAABAAAAAhAKIgA= + MenuItemButton.h + + + + + + gAQAAIIABAACBMAABABAAAAAAAABEAABAAAAAAQKAgA= + MenuItemItemButton.h + + + + + + AAQAAAAAAAAABAAAAABAAAAAAAAAAAAAACAIAAAAAAA= + MenuItemLabel.h + + + + + + AAQAAAQAEAAQAAACAAAAAAADBAIRQAAACAAAAEAAAgA= + MenuLabel.h + + + + + + AAAAAAAgAAAAAAAABAAAAAAAAAAAAACAAgAAAAAAAIA= + PlayerMoneyLabel.h + + + + + + AAQAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAgA= + PopupMenuLabel.h + + + + + + AAEAIAIAAAAAEAAAAAAgAAKAAAAAABCAAAAAgAgAAgA= + ProgressBar.h + + + + + + AAAAAAAAAAAABEAAAABAAAAAAAAAAICAAAAgAAAAAgA= + RequiredMaterialsList.h + + + + + + AAAAAAJIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAA= + RowInventoryScrollableWindowComponent.h + + + + + + gAQAAIIIAABABMAIAABAAAAAABAAEAAHAAAAAAEKEgA= + RowItemDisplay.h + + + + + + AAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + SaveFileNameButton.h + + + + + + AASBiAAAQIQhADABwACATAEmAAACIgAgAAwiEExARwA= + ScrollableWindowComponent.h + + + + + + AAQAAIAAAAAAAAAIAEAIAAAABAQAAAAAAAAQAAAIBgA= + Slider.h + + + + + + AAQAAAAgAQAAAAAAgAAAAAAAAAAAAAAEAQAAAAAAAgA= + SpawnEncounterLabel.h + + + + + + AAQAAEAAAAIAAgAgAAAAAAABAAABEiAAAAAAAAAAAAA= + StatLabel.h + + + + + + CAQAAAAAAAAAAAAAAAACAAAQACAAAAAAQAAAAAIQAAA= + TextEntryLabel.h + + + + + + QgAAAAgIAAAhBwAAAAQAAAKAAAgAAAAEAAAAAAQAAAA= + GameState.h + + + + + + AgAAAAAIAAABAgAAAAAAADAAAAAAAAAAAAAAAAQAAAA= + State_Death.h + + + + + + AgAAAAAIAAAAAgAAAAAAAAAAAAAAAAgAAAABAAQAAAA= + State_GameHub.h + + + + + + AgAAAAAIAAAAAgAAAAAAAAAAAAAAAAgAAAABAAQAAAA= + State_GameRun.h + + + + + + AgAAAAEIAAAAAgAIAEAAAACQAAAAAAAAAAIAAAQAAEQ= + State_LevelComplete.h + + + + + + AgAAAAAIAAABBgAAAAAAAAAAAAAACAACAAABAgQAAAA= + State_MainMenu.h + + + + + + AgEQABAKAQAAAgAAQAEACACABQAAACSAIAAEAAQAAAA= + State_OverworldMap.h + + + + + + AgAAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAQAAAA= + State_Story.h + + + + + + AAAAAAAAAAAAAAQAAAAABAAAAAAAAAEAAAAAAAAAAAA= + VisualNovel.h + + + + + + AAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAABAAAA= + VisualNovel.h + + + + + + AAAAAAAAAAEAAAQAAAAAAAAAAAAQAAEAAAAAAAAAAAA= + VisualNovel.h + + + + + + AABAAAAAgAAAAAQAAAACAAAAAAAAAAEAAAAAAAAAAAA= + VisualNovel.h + + + + + + AAABAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAQAAAAAA= + VisualNovel.h + + + + + + AAAAAAAAAAAAAAQAAAAAAAAAAAABAAEBAAAAAAAAAAA= + VisualNovel.h + + + + + + AAAAAAAAAAAAAAQAAAAAAAAAAAABAAEAAAAAAAAAAAA= + VisualNovel.h + + + + + + AAAAAAAAAAAAAAQAAAAAAQACAAAAAAEAAAAAAAAAAAA= + VisualNovel.h + + + + + + AAAAAAAAAAAAAAQAAAAAAAAAAAAAAEEAAAAQAAAAAAA= + VisualNovel.h + + + + + + AAAAAAACAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAIA= + VisualNovel.h + + + + + + QAYAAAAwAAIgYwQgMBYCAAkQAAAgBEAKAAAAQAQCACA= + VisualNovel.h + + + + + + AACEAAAABAAABAAAAAAAAAAAAAAAAEBAAAAAAIABAAA= + Player.h + + + + + + OO/k1fYU9sL+4X7wnuG/Qc17P2citlndYHHlzT/lsjQ= + Player.h + + + + + + gAAAEAACAFBAFAAABIAIAAAQAAEAAAAAiAAAAAAAAAA= + safemap.h + + + + + + AAAAEAACABAAFAAABIgAAAAQAAEAAAAAgAAAAAAAAAA= + safemap.h + + + + + + FAAEAAAFEAAQAAAACQAAAAkAAAChAAlCBAAAAAAABAE= + SaveFile.h + + + + + + AAAAABBAgAAEAQAAAAAAACAAQAAAAAACEAAAAAAQAAA= + SoundEffect.h + + + + + + AAAAAAAAACAAAAAAAIAAAAAAAAAAAAAAQAAAAAAAAAA= + Test.h + + + + + + AAAAAEEAARAAAAAQAAAAQAAAAAASAAAAAACAAAAAIAA= + Theme.h + + + + + + AAQAAAAAAAAABwgACAgQAAAAAAAAAAAEAACAAAAAEAA= + TitleScreen.h + + + + + + AAEAAAAAEAABYQABCAAUAAAAACAFIEgAKEAAAAABAAA= + TMXParser.h + + + + + + AAIAABAEEAAAAAAAAAAAAAAAAAAAAAAAIgAACAAQAAA= + TSXParser.h + + + + + + AQQAACAAAgAABwAACAAAAAAAAgAAAAFAAAAAAAAAAAA= + Tutorial.h + + + + + + AgQAQAAAAAAAAwgAgBAAIAAAIAAAAAAAAAAAAAAAAAA= + Tutorial.h + + + + + + AAAAACIAAAAAAQAAAAAAAAAAAAAAAABAAAAAAAAAAAA= + Tutorial.h + + + + + + AAQABCAAAAAAAwAAAAAAAAAAAAgAAABAAAAAAEAAAAA= + Tutorial.h + + + + + + AIAAACAAAAAAAgAAAAAAAAAAAAAAAAFAgAAAAAAAAAA= + Tutorial.h + + + + + + AAAAACAAAAAAAkAAAAAAAAABAAAAAAFAAAAAAAAAAAA= + Tutorial.h + + + + + + AAAAACAAAAAAAgAAAAAAAgAAAAAAAAFAAAAAAAAAAIA= + Tutorial.h + + + + + + AAAAADACAAAAAgAAAAAAAAAAAAAAAAFAAAAAAAAAAAA= + Tutorial.h + + + + + + AAAAACAAAAAAAgAAAABAAAAAAAAAAAFAAAAAAAAAAAA= + Tutorial.h + + + + + + AAAAAAAAAAAAARAAAAAAgAAAAAAAAAAAAAAAAEAACAA= + Unlock.h + + + + + + PaRAlGA0EoA8qx5o8aQuAJwTJYYG6ABMCmHMCTBxtgA= + Monster.h + + + + + + GQBAAABgABIggSABgAAAAAACggAAAAAAQIRAAAAAQQA= + Merchant.h + + + + + + AgAACggAAAAAA0AAAIQAAIgAIAAgAQAAAAEAAYAAAQA= + ItemDrop.h + + + + + + AhgAABAAAAAAAIABAQAeAAEAEAABACEAAAAgAAAEAAA= + Key.h + + + + + + AEAAABAAAAAIAJABAAbAAAAAIAEIoAEEIEAgAAEMABA= + Key.h + + + + + + QAAAAIAAAAAgAAAAAAAAAAAAAAABABAEYAAgAAAAAAA= + Key.h + + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA= + Key.h + + + + + + AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Key.h + + + + + + AAQAAAIAAAAADwAAAABSAAAAAACAAACgAAAAAAAAAAA= + LoadingScreen.h + + + + + + AAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Map.h + + + + + + AAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAASAAAAAA= + Item.h + + + + + + AEAAAQAAAAAAAAIIAAAACAAAAEEEAAAAAAAgAAAAAAA= + Item.h + + + + + + gAgRHIQFMAUgIdAAAAoAQAAMCAAAAQjoEwEAQAAhSAg= + Item.h + + + + + + JAAAAAUAAAIAIEIAAQABQAAAgSAUgACEAAIAgBJVAAA= + Item.h + + + + + + AAEAAAAAAAAAAAAAAQIAAAAAAAAAAAAAAEAEIAAAQAA= + Item.h + + + + + + AAkABIQAMABosGCAIAcAgAQBCAEEBUBkEgAKXEABTlg= + Item.h + + + + + + AAQAAAAAAAAAAgAAQAgAAAAAAABAAASAAAAwAAAAAAA= + Item.h + + + + + + e21Fy+pnyjuvayvhM8PdnwulBWBzzXEPL8SANUe7eaw= + AdventuresInLestoria.h + + + + + + ABCAAAAAACAAAAAAAAAABAAgAAAAEAAAAAAAAACABAA= + Attributable.h + + + + + + AAAAAAAQAAAAEQBAIAAAAQYAAACGEACAAAAgAAAAAAk= + AttributableStat.h + + + + + + AEAgAAACAAAAAAAABAAAQQAQAAAAEAAAAAAAAAAAAAA= + AttributableStat.h + + + + + + AAQgAAABCIAAIwbwcQVBBEAAAIBggQJYhQEAAEQCBQY= + Audio.h + + + + + + AAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAgAA= + ClassInfo.h + + + + + + gQAAACAAAAAAAAAAAAAAAABAAAAwAgAAAAAAAAAAAAA= + CraftingRequirement.h + + + + + + AAQgAAAAIAAAAQAQAAAgAAIAAAIAAAggACABCAiACAM= + DynamicCounter.h + + + + + + BAAAAAQAQAgEAAAEAIBAAAAAAAAEAAAAAAgAgAAACAA= + C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\gdipluseffects.h + + + + + + AAAAAAAAAAAAAAEAAIAAABAAABAAAAAAAAAAAAAAEAI= + Emitter.h + + + + + + AAAAAAAAAAAAAAAAAAABAAAIAAAAAAAAAAAAAEAAAAA= + EncountersSpawnListScrollableWindowComponent.h + + + + + + AIQAAAAABAhAAQBAAACAQICAAAAAAAIBAAAABAAAAAA= + EnvironmentalAudio.h + + + + + + AAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAA= + Error.h + + + + + + AAQAQAAAAAAAAABAAAAAABAKCAAAAAIAAAAAAAAAAAA= + GameEvent.h + + + + + + EAQAAAAAAAAAAABAAAAAAAAIAAAAAAAAAgAAAAAAAAA= + GameEvent.h + + + + + + AgAAAAABAAAAQQMAAIAAQCiBCRAAAAAAAAAAAAQAEAg= + GameSettings.h + + + + + + AAAAAAAABAAAAAAAAAAgAQAAAAAAAAAAAAAAAAAAAIA= + IT.h + + + + + + ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA= + Animation.h + + + + + + AAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAACAAA= + InventoryScrollableWindowComponent.h + + + + + + AAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAA= + Menu.h + + + + + + AAAAAAAAAAACAAAAAAAAAAAAAAAIAAAAAAAAAgAAgAA= + Menu.h + + + + + + AAAAAAAAgAAAAQAEAAgAAAAAQAAAAAAAQAAAAAAAIAA= + Pathfinding.h + + + + + + AAAAAAAAAAAAAAAAAAAAAAABAAAEAAAAAIAACAAAAAA= + Player.h + + + + + + ACkAwQEAQAAIoQBQAAAEIAQACAAEMgAABAAEAAkgAgA= + Player.h + + + + + + AAkAwQEAYAAIoQBQAAAEIAQACAAEMgAABAAEAAkgAgA= + Player.h + + + + + + AAkAwQEAQAAIqQBQAAAEIAQACAAEMgAABAAEAAkgAgA= + Player.h + + + + + + AAkAwQEAQAAIoQBQAAAEIAQECAAEMgAABAAEAAkgAgA= + Player.h + + + + + + AAkAwQEAQAAIoQBQAAAEIAQACAAEMgAABAIEAAkgAgA= + Player.h + + + + + + AAkAwQEAQAAIoQBQAAAEKAQACAAEMgAABAAEAAkgAgA= + Player.h + + + + + + EAEAwQgWkYAEAQEBmQdUOYBDitQgEARYaQPUoA0EABA= + stb_vorbis.cpp + + + + + + AACAACAgACAAAIAAAAAABAAAAAAAACAAAAAQAAAAQAA= + TMXParser.h + + + + + + AAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAA= + TMXParser.h + + + + + + AAQAAAAIAAAgACUBQAAAAAAAAAAAAAAAAgAAAAAAAAA= + TMXParser.h + + + + + + AAQAACAAAAAAAAAAAAAAAAAAAgAAACAAAAAAAAAAAAA= + TMXParser.h + + + + + + AAAAAAAAQAAIAAAIAIAAAAAAAAAAACAAAAAAAAAAAAA= + TMXParser.h + + + + + + AAIAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA= + TMXParser.h + + + + + + AAQAAABAAAAAAAAAAgQAAAAAABAEAAAAAAAAAAIAAAA= + TMXParser.h + + + + + + QBRAAAQEABAQBAICEgDAAAABAACEgAgECACAAEAAAAg= + TMXParser.h + + + + + + AACAAAAgACAAAIAAAAAAAAAAAAAEACAAAAAAAAAAAAA= + TMXParser.h + + + + + + AAIAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + TMXParser.h + + + + + + AAAAAIAEAgAgAgABgAAAAIACAQAAAAAAAAAgBAAAAAA= + TSXParser.h + + + + + + AAAAAAAAAAAAAAAAAAQAAAACACAAAAIAAAAAAAAAgAA= + Monster.h + + + + + + EAAACGAAsABAAwERAIAgAAISAAAEEGAYgCBCCmAwIEA= + Monster.h + + + + + + AAAAAAAIQAAAAAAIAIgIAIgAAAAAAAAAAAgBAgAAAAA= + Monster.h + + + + + + AAAAAAAAAAAAAAAAAAQEAAAABAAAAEAAAAAAAAQAAAA= + ItemMapData.h + + + + + + AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Map.h + + + + + + AAAAgAAAAAAgAgABAAAAAIAAAAAAAAAAIAAEAQIAIAA= + Map.h + + + + + + AAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAIAAAAAAAAAA= + Map.h + + + + + + QAAAQAAECAAAAAAAAAAIAYAAQAAAAAAAAAAAAAAAAAA= + Map.h + + + + + + CDAAQAAISAgAAAAAAAAAAAAAAgAAACAAAAkAADBAAAA= + Map.h + + + + + + AAAAAAAAAAAAAAACAAAAAAgAAAAAAAAMAAAAAAAAQAA= + MenuDefinitions.h + + + + + + AAAAIgACAAAAAAAAAIAABQIQAAAAAAAAAAAgAAAAAAA= + Item.h + + + + + + IQAAAAAQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Item.h + + + + + + AAAAAAAAACAAAAAAAIAAAAAAEAEAQAAABAABAAAAAAA= + Item.h + + + + + + AAAAAAAIAAAAAAAEAIAAAAABAAAAAAAAAAAgAAAAAAA= + Ability.h + + + + + + AAAABAAAAAAAAwADIBBAAAgAACgEABACAQCAAAAAIAg= + Ability.h + + + + + + AAAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAAAAAA= + Animation.h + + + + + + AAAAAAIAAAAAgCAAAACAKAAAAAABCAAAAAAAAAAAAAA= + Buff.h + + + + + + CgREEAAACAAAggAAIKgABYACAAAAABAMBEAAgQBYAgA= + Bullet.h + + + + + + CAQAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAA= + BulletTypes.h + + + + + + CAQAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAQAAA= + BulletTypes.h + + + + + + CAQAAAAAAAAAAAAAAAgAAAAAAAAkAAAAAAAAAAAAAAA= + BulletTypes.h + + + + + + CAQAQAAAAAABAAAAAIgAAAAAAAAAAAAAAAgAAAAAAAA= + BulletTypes.h + + + + + + CAQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAABAAAAAAAE= + BulletTypes.h + + + + + + CAQAAAIAAAAAAgAAAAgAAAAAAAAIAAAACAAQAAAAAAA= + BulletTypes.h + + + + + + CAQAAAAAAAAAAAAAAAgAAAAAAAAAAABAAAAAAAAAAAA= + BulletTypes.h + + + + + + AAgAQIAAAAAAAAAABIAAIAAAAAAAEAAQBAAACAAAAAA= + ClassInfo.h + + + + + + AARAEAAAQAAAAABAAAAIIAABAAA3AAAAAAAAAAAAAAA= + ConnectionPoint.h + + + + + + gAhAAAAIJAAAwAAAAIAAAIACAAABAAIAAAAAAAAAAAA= + DamageNumber.h + + + + + + AAQAAAAAAAAAQgAAAAEAAAAAAAAAAAAAAAAAAACAAAA= + Effect.h + + + + + + AAQBAAAAAAAAAgAAAAAAAEAAAAAAAAAAAAAAEAAAAAE= + Effect.h + + + + + + AAQAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA= + Effect.h + + + + + + AAQAAAgAAAAAAAAAAAAAABAABAAAAACIAAgAAAAAAAA= + Emitter.h + + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAACAAA= + EnvironmentalAudio.h + + + + + + AEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAgAAAACAA= + FunctionPriming.h + + + + + + AAgAAAAAAACAABAAAAQAAAAAAAAAAAAAAAAgAAAAAAA= + FunctionPriming.h + + + + + + AAAAAAAAAACAAAQAAAwAAAAAAAAAAIAAAAAgAAAAAAA= + FunctionPriming.h + + + + + + AIAAAAAAQAAAAAAAAQAAAAAAAAAAAAAAAABAAAAAAAA= + MenuComponent.h + + + + + + AAgACAAAQAAAACAAAQAAABAAAAABAAAAAAAAAAAAKAA= + MenuComponent.h + + + + + + AAAAAAAEIAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAA= + MenuComponent.h + + + + + + AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQIAAAAEAAAAA= + MenuIconButton.h + + + + + + AAAIBKgANAEAAgEoGCAAAIAGAQAAAIKAgQiQAAAEAAA= + MenuType.h + + + + + + AAAAAAAAAAAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAA= + MenuItemLabel.h + + + + + + AAAAAAAAAAAAAAgAAQAAACAAgAAAAAAAAAEAAAAAAAA= + RowItemDisplay.h + + + + + + AAAAAAgAAAAAAAAACAAAAAAAAAAAgBAAAAAwACAAAEA= + GameState.h + + + + + + AAACEAAAoAAAAiAAAAAAAAAAACAAAAAgAAAAACAAAAA= + VisualNovel.h + + + + + + 0AAAAAAAgAAAAAAAEABQQAAAA6gAQYAIAAASBAAIAAA= + stb_vorbis.h + + + + + + AAAAAAAAAIEQAAAAAQAACAAAIEAAAAACAAAAAAAAAAA= + Tutorial.h + + + + + + AAAAAAEAAACAAAAAAAAAAAAAIAAAAAAAAAAAAAAgAAA= + SaveFile.h + + + + + + BAAAAABAQCAAgCAACABABEBKAgACAAAABAgAAAAAAAA= + State.h + + + + + + AAAEAAAAAAAAgAAACAAAAAAAQAAAAAAAAAAAAAAAAAA= + Monster.h + + + + + + AwSBgAIKAF4gAokBTIIAQAoGJCAhSCSACgi+AAiUEAI= + MonsterAttribute.h + + + + + + AAAAAAAAAAAQQAAAAAAABAAAAAAAAAAAAAAAAAAAAQA= + Key.h + + + + + + AAAAAIAAAAACAAAEASAAAAASAQAQAAAAAAAAAAAAAAA= + Item.h + + + + + + IAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA= + Item.h + + + + + + AAgAAAAEAAEAoAAAAIAAAABAAEAgAABAAAAAAAAAgAA= + Buff.h + + + + + + AACAAAAAAAAAAAAAAAgAAAAEAAggAAAAAAAAAAAACAA= + Class.h + + + + + + AAAAAAABAAAAAAAABAAAAAACAAgAAAAAAAAAEAAAAAA= + DamageNumber.h + + + + + + CAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA= + IconType.h + + + + \ No newline at end of file diff --git a/Adventures in Lestoria/TODO.txt b/Adventures in Lestoria/TODO.txt index ada871f3..de3f43ca 100644 --- a/Adventures in Lestoria/TODO.txt +++ b/Adventures in Lestoria/TODO.txt @@ -8,4 +8,6 @@ Materials for initial craft seems to be wrong? need to recheck do we need a minimap? (maybe with fog of war?) Maybe polling that once testing with more people. should gemstones dropp from boss stages aswell? (Maybe lower droprate?) -Toggle for displaying error messages \ No newline at end of file +Toggle for displaying error messages + +Low health warning \ No newline at end of file diff --git a/Adventures in Lestoria/Version.h b/Adventures in Lestoria/Version.h index 696f345b..43e6586f 100644 --- a/Adventures in Lestoria/Version.h +++ b/Adventures in Lestoria/Version.h @@ -39,7 +39,7 @@ All rights reserved. #define VERSION_MAJOR 0 #define VERSION_MINOR 5 #define VERSION_PATCH 1 -#define VERSION_BUILD 8113 +#define VERSION_BUILD 8114 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Adventures in Lestoria/olcPixelGameEngine.h b/Adventures in Lestoria/olcPixelGameEngine.h index f3197d98..c67327b4 100644 --- a/Adventures in Lestoria/olcPixelGameEngine.h +++ b/Adventures in Lestoria/olcPixelGameEngine.h @@ -3,7 +3,7 @@ olcPixelGameEngine.h +-------------------------------------------------------------+ -| OneLoneCoder Pixel Game Engine v2.24 | +| OneLoneCoder Pixel Game Engine v2.25 | | "What do you need? Pixels... Lots of Pixels..." - javidx9 | +-------------------------------------------------------------+ @@ -323,6 +323,7 @@ Fix Pixel -= operator (thanks Au Lit) 2.23: Fixed Emscripten host sizing errors - Thanks Moros Fixed v2d_generic.clamp() function 2.24: Fix FillTexturedTriangle() to remove const-ref + 2.25: +DrawPolygonDecal(pos, tex, w, col) !! Apple Platforms will not see these updates immediately - Sorry, I dont have a mac to test... !! !! Volunteers willing to help appreciated, though PRs are manually integrated with credit !! @@ -407,7 +408,7 @@ return 0; #include "olcUTIL_Geometry2D.h" #pragma endregion -#define PGE_VER 224 +#define PGE_VER 225 // O------------------------------------------------------------------------------O // | COMPILER CONFIGURATION ODDITIES | @@ -591,6 +592,7 @@ namespace olc // O------------------------------------------------------------------------------O // | olc::Pixel - Represents a 32-Bit RGBA colour | // O------------------------------------------------------------------------------O + #if !defined(OLC_IGNORE_PIXEL) struct Pixel { union @@ -636,7 +638,7 @@ namespace olc BLUE(0, 0, 255), DARK_BLUE(0, 0, 128), VERY_DARK_BLUE(0, 0, 64), MAGENTA(255, 0, 255), DARK_MAGENTA(128, 0, 128), VERY_DARK_MAGENTA(64, 0, 64), WHITE(255, 255, 255), BLACK(0, 0, 0), BLANK(0, 0, 0, 0); - + #endif // Thanks to scripticuk and others for updating the key maps // NOTE: The GLUT platform will need updating, open to contributions ;) enum Key @@ -907,10 +909,12 @@ namespace olc std::vector pos; std::vector uv; std::vector w; + std::vector z; std::vector tint; olc::DecalMode mode = olc::DecalMode::NORMAL; olc::DecalStructure structure = olc::DecalStructure::FAN; uint32_t points = 0; + bool depth = false; }; struct LayerDesc @@ -1204,6 +1208,7 @@ namespace olc void DrawPolygonDecal(olc::Decal* decal, const std::vector& pos, const std::vector& depth, const std::vector& uv, const olc::Pixel tint = olc::WHITE); void DrawPolygonDecal(olc::Decal* decal, const std::vector& pos, const std::vector& uv, const std::vector& tint); void DrawPolygonDecal(olc::Decal* decal, const std::vector& pos, const std::vector& uv, const std::vector& colours, const olc::Pixel tint); + void DrawPolygonDecal(olc::Decal* decal, const std::vector& pos, const std::vector& depth, const std::vector& uv, const std::vector& colours, const olc::Pixel tint); // Draws a line in Decal Space void DrawLineDecal(const olc::vf2d& pos1, const olc::vf2d& pos2, Pixel p = olc::WHITE); void DrawRotatedStringDecal(const olc::vf2d& pos, const std::string& sText, const float fAngle, const olc::vf2d& center = { 0.0f, 0.0f }, const olc::Pixel col = olc::WHITE, const olc::vf2d& scale = { 1.0f, 1.0f }); @@ -1289,6 +1294,7 @@ namespace olc // Draws a vector of vertices, interprted as individual triangles void LW3D_DrawTriangles(olc::Decal* decal, const std::vector>& pos, const std::vector& tex, const std::vector& col); + void LW3D_DrawWarpedDecal(olc::Decal* decal, const std::vector>& pos, const olc::Pixel& tint); void LW3D_ModelTranslate(const float x, const float y, const float z); @@ -1602,6 +1608,7 @@ namespace olc // O------------------------------------------------------------------------------O // | olc::Pixel IMPLEMENTATION | // O------------------------------------------------------------------------------O + #if !defined(OLC_IGNORE_PIXEL) Pixel::Pixel() { r = 0; g = 0; b = 0; a = nDefaultAlpha; } @@ -1712,7 +1719,7 @@ namespace olc Pixel PixelLerp(const olc::Pixel& p1, const olc::Pixel& p2, float t) { return (p2 * t) + p1 * (1.0f - t); } - + #endif // O------------------------------------------------------------------------------O // | olc::Sprite IMPLEMENTATION | // O------------------------------------------------------------------------------O @@ -3247,6 +3254,27 @@ namespace olc vLayers[nTargetLayer].vecDecalInstance.push_back(di); } + void PixelGameEngine::DrawPolygonDecal(olc::Decal* decal, const std::vector& pos, const std::vector& depth, const std::vector& uv, const std::vector& colours, const olc::Pixel tint) + { + DecalInstance di; + di.decal = decal; + di.points = uint32_t(pos.size()); + di.pos.resize(di.points); + di.uv.resize(di.points); + di.w.resize(di.points); + di.tint.resize(di.points); + for (uint32_t i = 0; i < di.points; i++) + { + di.pos[i] = { (pos[i].x * vInvScreenSize.x) * 2.0f - 1.0f, ((pos[i].y * vInvScreenSize.y) * 2.0f - 1.0f) * -1.0f }; + di.uv[i] = uv[i]; + di.tint[i] = colours[i] * tint; + di.w[i] = depth[i]; + } + di.mode = nDecalMode; + di.structure = nDecalStructure; + vLayers[nTargetLayer].vecDecalInstance.push_back(di); + } + #ifdef OLC_ENABLE_EXPERIMENTAL // Lightweight 3D void PixelGameEngine::LW3D_DrawTriangles(olc::Decal* decal, const std::vector>& pos, const std::vector& tex, const std::vector& col) @@ -3257,17 +3285,63 @@ namespace olc di.pos.resize(di.points); di.uv.resize(di.points); di.w.resize(di.points); + di.z.resize(di.points); di.tint.resize(di.points); for (uint32_t i = 0; i < di.points; i++) { di.pos[i] = { pos[i][0], pos[i][1] }; di.w[i] = pos[i][2]; + di.z[i] = pos[i][2]; di.uv[i] = tex[i]; di.tint[i] = col[i]; } - di.mode = DecalMode::MODEL3D; + di.mode = nDecalMode; + di.structure = DecalStructure::LIST; + di.depth = true; vLayers[nTargetLayer].vecDecalInstance.push_back(di); } + void PixelGameEngine::LW3D_DrawWarpedDecal(olc::Decal* decal, const std::vector>& pos, const olc::Pixel& tint) + { + // Thanks Nathan Reed, a brilliant article explaining whats going on here + // http://www.reedbeta.com/blog/quadrilateral-interpolation-part-1/ + DecalInstance di; + di.points = 4; + di.decal = decal; + di.tint = { tint, tint, tint, tint }; + di.w = { 1, 1, 1, 1 }; + di.z = { 1, 1, 1, 1 }; + di.pos.resize(4); + di.uv = { { 0.0f, 0.0f}, {0.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, 0.0f} }; + olc::vf2d center; + float rd = ((pos[2][0] - pos[0][0]) * (pos[3][1] - pos[1][1]) - (pos[3][0] - pos[1][0]) * (pos[2][1] - pos[0][1])); + if (rd != 0) + { + rd = 1.0f / rd; + float rn = ((pos[3][0] - pos[1][0]) * (pos[0][1] - pos[1][1]) - (pos[3][1] - pos[1][1]) * (pos[0][0] - pos[1][0])) * rd; + float sn = ((pos[2][0] - pos[0][0]) * (pos[0][1] - pos[1][1]) - (pos[2][1] - pos[0][1]) * (pos[0][0] - pos[1][0])) * rd; + if (!(rn < 0.f || rn > 1.f || sn < 0.f || sn > 1.f)) + { + center.x = pos[0][0] + rn * (pos[2][0] - pos[0][0]); + center.y = pos[0][1] + rn * (pos[2][1] - pos[0][1]); + } + float d[4]; + for (int i = 0; i < 4; i++) + d[i] = std::sqrt((pos[i][0] - center.x) * (pos[i][0] - center.x) + (pos[i][1] - center.y) * (pos[i][1] - center.y)); + + for (int i = 0; i < 4; i++) + { + float q = d[i] == 0.0f ? 1.0f : (d[i] + d[(i + 2) & 3]) / d[(i + 2) & 3]; + di.uv[i] *= q; + di.w[i] *= q; + di.z[i] = pos[i][2]; + di.pos[i] = { (pos[i][0] * vInvScreenSize.x) * 2.0f - 1.0f, ((pos[i][1] * vInvScreenSize.y) * 2.0f - 1.0f) * -1.0f }; + } + di.mode = nDecalMode; + di.structure = nDecalStructure; + di.depth = true; + vLayers[nTargetLayer].vecDecalInstance.push_back(di); + } + } #endif void PixelGameEngine::DrawLineDecal(const olc::vf2d& pos1, const olc::vf2d& pos2, Pixel p) @@ -5284,7 +5358,6 @@ namespace olc switch (mode) { case olc::DecalMode::NORMAL: - case olc::DecalMode::MODEL3D: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); break; case olc::DecalMode::ADDITIVE: @@ -5337,58 +5410,18 @@ namespace olc else glBindTexture(GL_TEXTURE_2D, decal.decal->id); - if (nDecalMode == DecalMode::MODEL3D) + if (decal.depth) { -#ifdef OLC_ENABLE_EXPERIMENTAL - glMatrixMode(GL_PROJECTION); glPushMatrix(); - glMatrixMode(GL_MODELVIEW); glPushMatrix(); - - glEnable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0f, 1.0f, -1.0f, 1.0f, 1, 1000); - -#pragma comment (lib, "winmm.lib") - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, -40, -200); - glRotatef(float(clock()) * 0.1f, 1, 0, 0); - glRotatef(float(clock()) * 0.1f * 2, 0, 1, 0); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glBegin(GL_TRIANGLES); - - // Render as 3D Spatial Entity for (uint32_t n = 0; n < decal.points; n++) { glColor4ub(decal.tint[n].r, decal.tint[n].g, decal.tint[n].b, decal.tint[n].a); - glTexCoord2f(decal.uv[n].x, decal.uv[n].y); - glVertex3f(decal.pos[n].x, decal.pos[n].y, decal.w[n]); + glTexCoord4f(decal.uv[n].x, decal.uv[n].y, 0.0f, decal.w[n]); + glVertex3f(decal.pos[n].x, decal.pos[n].y, decal.z[n]); } - - glEnd(); - - glMatrixMode(GL_PROJECTION); glPopMatrix(); - glMatrixMode(GL_MODELVIEW); glPopMatrix(); - glDisable(GL_DEPTH_TEST); -#endif } else { - if (nDecalMode == DecalMode::WIREFRAME) - glBegin(GL_LINE_LOOP); - else - { - if(decal.structure == olc::DecalStructure::FAN) - glBegin(GL_TRIANGLE_FAN); - else if(decal.structure == olc::DecalStructure::STRIP) - glBegin(GL_TRIANGLE_STRIP); - else if(decal.structure == olc::DecalStructure::LIST) - glBegin(GL_TRIANGLES); - } // Render as 2D Spatial entity for (uint32_t n = 0; n < decal.points; n++) @@ -5397,12 +5430,15 @@ namespace olc glTexCoord4f(decal.uv[n].x, decal.uv[n].y, 0.0f, decal.w[n]); glVertex2f(decal.pos[n].x, decal.pos[n].y); } - - glEnd(); } - //glDisable(GL_DEPTH_TEST); + glEnd(); + + if (decal.depth) + { + glDisable(GL_DEPTH_TEST); + } } uint32_t CreateTexture(const uint32_t width, const uint32_t height, const bool filtered, const bool clamp) override diff --git a/ClassDiagram.png b/ClassDiagram.png new file mode 100644 index 00000000..6711b0b5 Binary files /dev/null and b/ClassDiagram.png differ diff --git a/x64/Release/Adventures in Lestoria.exe b/x64/Release/Adventures in Lestoria.exe index d557b94a..b37cbb43 100644 Binary files a/x64/Release/Adventures in Lestoria.exe and b/x64/Release/Adventures in Lestoria.exe differ