diff --git a/Crawler/Crawler.vcxproj b/Crawler/Crawler.vcxproj index c957ffa2..b707914c 100644 --- a/Crawler/Crawler.vcxproj +++ b/Crawler/Crawler.vcxproj @@ -415,6 +415,7 @@ + diff --git a/Crawler/Crawler.vcxproj.filters b/Crawler/Crawler.vcxproj.filters index bd4a52f1..99f3878e 100644 --- a/Crawler/Crawler.vcxproj.filters +++ b/Crawler/Crawler.vcxproj.filters @@ -497,6 +497,9 @@ Configurations\Items + + Documentation + diff --git a/Crawler/Crawler_System_Overview.txt b/Crawler/Crawler_System_Overview.txt new file mode 100644 index 00000000..31277a57 --- /dev/null +++ b/Crawler/Crawler_System_Overview.txt @@ -0,0 +1,48 @@ +Systems: + +Game Loop: +After Every Dungeon. you get set in the hub. In the hub there is an npc that brings you to the world Map. +on The world map you can choose a stage. +Could be a normal Stage or a Story Stage where you only encounter the story, maybe not even free movement there. +(Will be marked as story and can be skipped, Maybe just some text to read like a book depending how much ressources we want to put into the story.) +In a normal Dungeon you can leave by dieing, finishing the stage or leave it in the esc menu. +Monster Kills in a Stage needs to be tracked. Exiting a Stage, independed what made you exit it, gives loot for killed monster. A finished stage gives a stage specific bonus. + +Gear: +- Weapon and Armor Crafting +- Weapon and Armor enhancing (+0-+10) +- Armor Set Bonuses +- Accessory dropps from bosses with randomized stats inside of a specific range (z.B. a ring that can roll between 10 and 20 Atk) +- Stat max rolls of Accessorys should be displayed in a different color to showcase that its a max roll. +- Legendary Modifiers on Accessorys in Post game (Depending on what modify it could be some baseline stuff like +MoveSPd or something that modifies a skill) +- Consumabels (Hp Pots, Mp Pots, short duration buffs) + => Consumable Loadout needs to be set up before entering a dungeon. + => Amount of Consumables you can bring will be lower then the amount you can overall have. + +Chapter Specific Unlock +- Every Story Chapter has 1 side boss that unlocks something new. +- Chapter 1 in addition unlocks the Blacksmith after 1-2 +- Chapter 1 side boss unlocks an npc to craft consumables +- Chapter 2 unlocks a Jeweler + => you can melt accesories to get ressources to "repair" your acceosries = you increase the stat rolls + => cant exceed max roll this way. Just a way to grind your way up if you are unlucky with stat rolls +- Chapter 3 ??? (Maybe the Legendary Modifier mechanic from Post game gear will be used here instead if i dont find another idea i like) +- Chapter 4 "Hero Soul Infusion" (Name may change later) + => Allows you to unlock a 4th skill from the other class that uses the same weapon type. + => Maybe locked behind a second boss fight where you fight a shadow of that class. + Would mean 6 additional boss fights though of which you only encounter one of them in a normal playthrough. + So that idea may gets dropped. + => Skill will be exchangeable at an NPC in Town. +- Chapter 5 - Randomized arena + => You fight waves of enemies from all chapters. + => Each wave a buff stacks up that increases the strengt of the enemies. + => earn a special currency that allows you to buy small upgrades for specific biomes. (Buff is active outside of this endless survival arena aswell) + => there are 5 arenas of the biomes of the 5 chapters which randomly change (or stay the same) every 5 waves. + (Therefore you cant snipe a specific Biome where you got the biggest buffs for) + +Hub +- Hub will have an NPC to bring you to the Stage select Map / World Map +- Hub will have additional NPCs for all the Additional Chapter specific Unlocks +- There will be traveling merchants that sell consumables or over priced Materials from Monster dropps. + What get offered will change around at random after every stage +- Money can only be received by Selling dropps to the merchants. \ No newline at end of file diff --git a/Crawler/LevelCompleteWindow.cpp b/Crawler/LevelCompleteWindow.cpp index e1c54fd9..9ac4758c 100644 --- a/Crawler/LevelCompleteWindow.cpp +++ b/Crawler/LevelCompleteWindow.cpp @@ -1,10 +1,72 @@ +/* +License (OLC-3) +~~~~~~~~~~~~~~~ + +Copyright 2018 - 2023 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. +*/ #include "Menu.h" #include "Crawler.h" +#include "MenuLabel.h" +#include "MenuComponent.h" +#include "InventoryScrollableWindowComponent.h" INCLUDE_game void Menu::InitializeLevelCompleteWindow(){ - Menu*levelCompleteWindow=Menu::CreateMenu(LEVEL_COMPLETE,{28,28},game->GetScreenSize()-vf2d{56,56}); + geom2d::rectwindowSize={{28,28},game->GetScreenSize()-vf2d{56,56}}; + + Menu*levelCompleteWindow=Menu::CreateMenu(LEVEL_COMPLETE,windowSize.pos,windowSize.size); + + MenuLabel*stageCompleteLabel=NEW MenuLabel(LEVEL_COMPLETE,{{0,4},{windowSize.size.x-1.f,20}},"Stage Completed",2,ComponentAttr::OUTLINE|ComponentAttr::BACKGROUND|ComponentAttr::SHADOW); + + levelCompleteWindow->AddComponent("Stage Complete Label",stageCompleteLabel); + + MenuComponent*monsterLootOutline=NEW MenuComponent(LEVEL_COMPLETE,{{0,32},{windowSize.size.x-80.f,72}},"",DO_NOTHING,ButtonAttr::UNSELECTABLE); + MenuLabel*monsterLootLabel=NEW MenuLabel(LEVEL_COMPLETE,{{0,32},{windowSize.size.x-80.f,12}},"Monster Loot",1,ComponentAttr::LEFT_ALIGN|ComponentAttr::SHADOW|ComponentAttr::OUTLINE); + InventoryScrollableWindowComponent*monsterLootWindow=NEW InventoryScrollableWindowComponent(LEVEL_COMPLETE,{{0,44},{windowSize.size.x-80.f,60}},"Monster Loot"); + + levelCompleteWindow->AddComponent("Monster Loot Outline",monsterLootOutline); + levelCompleteWindow->AddComponent("Monster Loot Label",monsterLootLabel); + levelCompleteWindow->AddComponent("Monster Loot Window",monsterLootWindow); + + MenuComponent*stageLootOutline=NEW MenuComponent(LEVEL_COMPLETE,{{0,108},{windowSize.size.x-80.f,72}},"",DO_NOTHING,ButtonAttr::UNSELECTABLE); + MenuLabel*stageLootLabel=NEW MenuLabel(LEVEL_COMPLETE,{{0,108},{windowSize.size.x-80.f,12}},"Stage Loot",1,ComponentAttr::LEFT_ALIGN|ComponentAttr::SHADOW|ComponentAttr::OUTLINE); + InventoryScrollableWindowComponent*stageLootWindow=NEW InventoryScrollableWindowComponent(LEVEL_COMPLETE,{{0,120},{windowSize.size.x-80.f,60}},"Stage Loot"); + levelCompleteWindow->AddComponent("Stage Loot Outline",stageLootOutline); + levelCompleteWindow->AddComponent("Stage Loot Label",stageLootLabel); + levelCompleteWindow->AddComponent("Stage Loot Window",stageLootWindow); + + MenuComponent*detailsOutline=NEW MenuComponent(LEVEL_COMPLETE,{{windowSize.size.x-72.f,32},{71,72}},"",DO_NOTHING,ButtonAttr::UNSELECTABLE); + MenuLabel*detailsExpGain=NEW MenuLabel(LEVEL_COMPLETE,{{windowSize.size.x-72.f,104},{71,36}},"+ Exp",1,ComponentAttr::SHADOW|ComponentAttr::OUTLINE|ComponentAttr::BACKGROUND); + MenuComponent*nextButton=NEW MenuComponent(LEVEL_COMPLETE,{{windowSize.size.x-72.f,144},{71,32}},"Next",DO_NOTHING); + levelCompleteWindow->AddComponent("Level Details Outline",detailsOutline); + levelCompleteWindow->AddComponent("Level EXP Gain Outline",detailsExpGain); + levelCompleteWindow->AddComponent("Next Button",nextButton); } \ No newline at end of file diff --git a/Crawler/Version.h b/Crawler/Version.h index 867b9e0c..1f9f5a4b 100644 --- a/Crawler/Version.h +++ b/Crawler/Version.h @@ -33,7 +33,7 @@ SUCH DAMAGE. #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 1 -#define VERSION_BUILD 2938 +#define VERSION_BUILD 2954 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Crawler/assets/config/items/ItemCategory.txt b/Crawler/assets/config/items/ItemCategory.txt index 1ee1fe60..dfc605d0 100644 --- a/Crawler/assets/config/items/ItemCategory.txt +++ b/Crawler/assets/config/items/ItemCategory.txt @@ -5,4 +5,6 @@ ItemCategory Equipment = Gear that can be placed onto a player. Accessories = Items worn as extra items on the player. Materials = Items used as crafting materials for the forge. + Monster Loot = Monster drops obtained while navigating a level. + Stage Loot = Stage drops obtained while navigating a level. } \ No newline at end of file