From 90d465fd7b4e82402f3d82409a53fa263acf5189 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Mon, 27 Nov 2023 23:33:45 -0600 Subject: [PATCH] Written the basic outlines for the story visual novel file management, the file parser, and the visual novel class commands. Untested parser initialization code implemented. Added some assets. --- Crawler/Crawler.cpp | 3 + Crawler/Crawler.vcxproj | 5 + Crawler/Crawler.vcxproj.filters | 21 ++ Crawler/GameState.cpp | 2 + Crawler/GameState.h | 1 + Crawler/State_Story.cpp | 43 +++ Crawler/State_Story.h | 41 +++ Crawler/Version.h | 2 +- Crawler/VisualNovel.cpp | 198 ++++++++++++ Crawler/VisualNovel.h | 117 +++++++ Crawler/assets/backgrounds/cave.png | Bin 0 -> 3443 bytes Crawler/assets/backgrounds/cave_dark.png | Bin 0 -> 1855 bytes Crawler/assets/backgrounds/sea.png | Bin 0 -> 1540 bytes Crawler/assets/characters/greg.png | Bin 0 -> 813 bytes Crawler/assets/characters/player_f.png | Bin 0 -> 813 bytes Crawler/assets/characters/player_m.png | Bin 0 -> 814 bytes Crawler/assets/characters/red_stone.png | Bin 0 -> 1004 bytes Crawler/assets/characters/sherman.png | Bin 0 -> 812 bytes Crawler/assets/config/configuration.txt | 3 + Crawler/assets/config/story/Chapter 1.txt | 350 +++++++++++++++++++++ Crawler/assets/config/story/Chapter 2.txt | 0 Crawler/assets/config/story/Chapter 3.txt | 0 Crawler/assets/config/story/Chapter 4.txt | 0 Crawler/assets/config/story/Chapter 5.txt | 0 Crawler/assets/config/story/Chapter 6.txt | 0 Crawler/assets/config/story/characters.txt | 10 + 26 files changed, 795 insertions(+), 1 deletion(-) create mode 100644 Crawler/State_Story.cpp create mode 100644 Crawler/State_Story.h create mode 100644 Crawler/VisualNovel.cpp create mode 100644 Crawler/VisualNovel.h create mode 100644 Crawler/assets/backgrounds/cave.png create mode 100644 Crawler/assets/backgrounds/cave_dark.png create mode 100644 Crawler/assets/backgrounds/sea.png create mode 100644 Crawler/assets/characters/greg.png create mode 100644 Crawler/assets/characters/player_f.png create mode 100644 Crawler/assets/characters/player_m.png create mode 100644 Crawler/assets/characters/red_stone.png create mode 100644 Crawler/assets/characters/sherman.png create mode 100644 Crawler/assets/config/story/Chapter 1.txt create mode 100644 Crawler/assets/config/story/Chapter 2.txt create mode 100644 Crawler/assets/config/story/Chapter 3.txt create mode 100644 Crawler/assets/config/story/Chapter 4.txt create mode 100644 Crawler/assets/config/story/Chapter 5.txt create mode 100644 Crawler/assets/config/story/Chapter 6.txt create mode 100644 Crawler/assets/config/story/characters.txt diff --git a/Crawler/Crawler.cpp b/Crawler/Crawler.cpp index 22e9e253..5826c03f 100644 --- a/Crawler/Crawler.cpp +++ b/Crawler/Crawler.cpp @@ -58,6 +58,7 @@ SUCH DAMAGE. #include "State_OverworldMap.h" #include "Test.h" #include "ItemDrop.h" +#include "VisualNovel.h" INCLUDE_EMITTER_LIST @@ -184,6 +185,8 @@ bool Crawler::OnUserCreate(){ Unlock::Initialize(); ItemDrop::Initialize(); + VisualNovel::Initialize(); + ValidateGameStatus(); //Checks to make sure everything has been initialized properly. return true; diff --git a/Crawler/Crawler.vcxproj b/Crawler/Crawler.vcxproj index 3e341f6a..4304fd35 100644 --- a/Crawler/Crawler.vcxproj +++ b/Crawler/Crawler.vcxproj @@ -329,6 +329,7 @@ + @@ -397,6 +398,7 @@ + @@ -424,6 +426,9 @@ + + + diff --git a/Crawler/Crawler.vcxproj.filters b/Crawler/Crawler.vcxproj.filters index dcca21c9..60415669 100644 --- a/Crawler/Crawler.vcxproj.filters +++ b/Crawler/Crawler.vcxproj.filters @@ -67,6 +67,12 @@ {7d5c4dfd-a5a1-4a3d-8231-ace70551db5a} + + {fffc7975-0823-472f-8f07-0419586e05e7} + + + {9ab34e07-c7ba-4f4b-9dad-29c7602c1550} + @@ -261,6 +267,9 @@ Header Files + + Header Files + @@ -440,6 +449,9 @@ Source Files + + Source Files + @@ -509,6 +521,15 @@ Documentation + + Configurations\Story + + + Documentation\Story + + + Configurations\Story + diff --git a/Crawler/GameState.cpp b/Crawler/GameState.cpp index 9b602738..d3439c54 100644 --- a/Crawler/GameState.cpp +++ b/Crawler/GameState.cpp @@ -37,6 +37,7 @@ SUCH DAMAGE. #include "State_OverworldMap.h" #include "State_MainMenu.h" #include "State_LevelComplete.h" +#include "State_Story.h" INCLUDE_game @@ -47,6 +48,7 @@ void GameState::Initialize(){ NEW_STATE(States::OVERWORLD_MAP,State_OverworldMap); NEW_STATE(States::MAIN_MENU,State_MainMenu); NEW_STATE(States::LEVEL_COMPLETE,State_LevelComplete); + NEW_STATE(States::STORY,State_Story); GameState::ChangeState(States::OVERWORLD_MAP); } diff --git a/Crawler/GameState.h b/Crawler/GameState.h index a81d08a4..2edf1f33 100644 --- a/Crawler/GameState.h +++ b/Crawler/GameState.h @@ -42,6 +42,7 @@ namespace States{ OVERWORLD_MAP, MAIN_MENU, LEVEL_COMPLETE, + STORY, }; }; diff --git a/Crawler/State_Story.cpp b/Crawler/State_Story.cpp new file mode 100644 index 00000000..203059c1 --- /dev/null +++ b/Crawler/State_Story.cpp @@ -0,0 +1,43 @@ +#pragma region License +/* +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. +*/ +#pragma endregion +#include "State_Story.h" +#include "VisualNovel.h" + +void State_Story::OnStateChange(GameState*prevState){}; +void State_Story::OnUserUpdate(Crawler*game){ + VisualNovel::Update(); +}; +void State_Story::Draw(Crawler*game){ + VisualNovel::Draw(); +}; \ No newline at end of file diff --git a/Crawler/State_Story.h b/Crawler/State_Story.h new file mode 100644 index 00000000..d468f6cc --- /dev/null +++ b/Crawler/State_Story.h @@ -0,0 +1,41 @@ +#pragma region License +/* +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. +*/ +#pragma endregion +#pragma once +#include "GameState.h" + +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; +}; \ No newline at end of file diff --git a/Crawler/Version.h b/Crawler/Version.h index 6dde9e5d..ff2001c0 100644 --- a/Crawler/Version.h +++ b/Crawler/Version.h @@ -35,7 +35,7 @@ SUCH DAMAGE. #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 1 -#define VERSION_BUILD 3158 +#define VERSION_BUILD 3160 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Crawler/VisualNovel.cpp b/Crawler/VisualNovel.cpp new file mode 100644 index 00000000..92595905 --- /dev/null +++ b/Crawler/VisualNovel.cpp @@ -0,0 +1,198 @@ +#pragma region License +/* +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. +*/ +#pragma endregion +#include "VisualNovel.h" +#include "GameState.h" +#include "Crawler.h" +#include + +VisualNovel VisualNovel::novel; +safemap>>VisualNovel::storyLevelData; + +void VisualNovel::Initialize(){ + for(int chapter=1;chapter<=6;chapter++){ + std::string chapterFilename="story_directory"_S+"Chapter "+std::to_string(chapter)+".txt"; + std::ifstream file(chapterFilename); + if(!file)ERR("Failed to open file "<args; + size_t counter=0; + while(text.find(',',counter)!=std::string::npos){ + std::string arg=text.substr(counter,text.find(',',counter)-counter); + counter=text.find(',',counter)+1; + if(arg.find(',')!=std::string::npos)ERR("Found an erraneous comma inside parsed arg "<arguments=ReadCSVArgs(args); + + if(line.find("{LOCATION")!=std::string::npos){//Location command + if(arguments.size()!=1)ERR("Arguments size is "<(arguments[0])); + }else + if(line.find("{BACKGROUND")!=std::string::npos){//Background command + if(arguments.size()!=1)ERR("Arguments size is "<(arguments[0])); + }else + if(line.find("{LEFT")!=std::string::npos){//Left command + data.push_back(std::make_unique(arguments)); + }else + if(line.find("{RIGHT")!=std::string::npos){//Right command + data.push_back(std::make_unique(arguments)); + }else + if(line.find("{PAUSE")!=std::string::npos){//Pause command + if(arguments.size()!=0)ERR("Arguments size is "<()); + }else{ + ERR("Unknown command "<arguments=ReadCSVArgs(args); + if(arguments.size()>2)ERR("Expecting a maximum of two arguments for parsed args in "<(arguments[0])); + }else{ + data.push_back(std::make_unique(arguments[0],arguments[1])); + } + }break; + default:{ + data.push_back(std::make_unique(line)); + }break; + } + + } + } + + storyLevelData.SetInitialized(); +}; +void VisualNovel::LoadVisualNovel(std::string storyLevelName){ + novel.storyLevel=storyLevelName; + GameState::ChangeState(States::STORY); +} +void VisualNovel::Update(){ + +} +void VisualNovel::Draw(){ + +} + +Command::Command(){} + +void LocationCommand::Execute(VisualNovel&vn){ + +} +LocationCommand::LocationCommand(std::string location){ + +} + +void BackgroundCommand::Execute(VisualNovel&vn){ + +} +BackgroundCommand::BackgroundCommand(std::string backgroundFilename){ + +} + +void LeftCommand::Execute(VisualNovel&vn){ + +} +LeftCommand::LeftCommand(std::vectorcharacters){ + +} + +void RightCommand::Execute(VisualNovel&vn){ + +} +RightCommand::RightCommand(std::vectorcharacters){ + +} + +void SpeakerCommand::Execute(VisualNovel&vn){ + +} +SpeakerCommand::SpeakerCommand(std::string speaker){ + +} +SpeakerCommand::SpeakerCommand(std::string displayedName,std::string speaker){ + +} + +void DialogCommand::Execute(VisualNovel&vn){ + +} +DialogCommand::DialogCommand(std::string dialog){ + +} + +void PauseCommand::Execute(VisualNovel&vn){ + +} +PauseCommand::PauseCommand(){ + +} \ No newline at end of file diff --git a/Crawler/VisualNovel.h b/Crawler/VisualNovel.h new file mode 100644 index 00000000..d91c8864 --- /dev/null +++ b/Crawler/VisualNovel.h @@ -0,0 +1,117 @@ +#pragma region License +/* +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. +*/ +#pragma endregion +#include +#include +#include +#include "safemap.h" + +class VisualNovel; + +class PauseCommand final:public Command{ +public: + void Execute(VisualNovel&vn)override; + PauseCommand(); +}; + +class DialogCommand final:public Command{ + std::string dialog; +public: + void Execute(VisualNovel&vn)override; + DialogCommand(std::string dialog); +}; + +class SpeakerCommand final:public Command{ + std::string displayedName; + std::string actualSpeakerName; +public: + void Execute(VisualNovel&vn)override; + SpeakerCommand(std::string speaker); + SpeakerCommand(std::string displayedName,std::string speaker); +}; + +class BackgroundCommand final:public Command{ + std::string backgroundFilename; +public: + void Execute(VisualNovel&vn)override; + BackgroundCommand(std::string backgroundFilename); +}; + +class RightCommand final:public Command{ + std::vectorcharacters; +public: + void Execute(VisualNovel&vn)override; + RightCommand(std::vectorcharacters); +}; + +class LeftCommand final:public Command{ + std::vectorcharacters; +public: + void Execute(VisualNovel&vn)override; + LeftCommand(std::vectorcharacters); +}; + +class LocationCommand final:public Command{ + std::string location; +public: + void Execute(VisualNovel&vn)override; + LocationCommand(std::string location); +}; + +class Command{ + virtual void Execute(VisualNovel&vn)=0; +protected: + Command(); +}; + +class VisualNovel{ + std::string storyLevel; + std::string activeText; + std::vectorleftCharacters; + std::vectorrightCharacters; + std::string backgroundFilename; + std::vectorcommands; + int commandIndex; + + static safemap>>storyLevelData; + + static VisualNovel novel; +public: + VisualNovel()=delete; + VisualNovel(VisualNovel&)=delete; + VisualNovel(VisualNovel&&)=delete; + static void Initialize(); + static void LoadVisualNovel(std::string storyLevelName); + static void Update(); + static void Draw(); +}; \ No newline at end of file diff --git a/Crawler/assets/backgrounds/cave.png b/Crawler/assets/backgrounds/cave.png new file mode 100644 index 0000000000000000000000000000000000000000..2234ffa683f3a0cbd5be41497bba865925749b89 GIT binary patch literal 3443 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 literal 0 HcmV?d00001 diff --git a/Crawler/assets/backgrounds/sea.png b/Crawler/assets/backgrounds/sea.png new file mode 100644 index 0000000000000000000000000000000000000000..dab980cd7833476df09582ca44a9c9b512f50420 GIT binary patch literal 1540 zcmeAS@N?(olHy`uVBq!ia0y~yV9WrrKX9-CN!{iD{DA^3na<7up3cq+1x5L3nK`Kp z3>p(_C)#=(c93Yhzs$>3o3BjclA?3zrtU6_X>+23j83-9 z&|lNl7|x@}WWP4Cb7qy+?itO`f9z`Se_w7m?`iD!=MrIEYRolCg>zoEx$bea*`4`v z&i78|HAd9D!VsFWp6lV`;)ubHCOd?=`2B&jV&UV1QZuHYGrK@SRAW-)TQm5u-rexfNFuoMeu=Q{bZ`TxQ9_hv19scEh`gW*?v&hKOyjyFtim*v*W-!A*j^1+@tJnDLU zK4bCxCFZ-MzHms~WYb%>d)6NIn0E{h)nkoR+&^6w@lt*8w`bob zCYGe8D3oWGWGJ|M`UZqI@`*DrFyHZXaSW-r_4bafA5)@8+ePbRO_L@Gg)6L8_1>_l zguCrfi|CD=YXn!lM|h2&f5%Vk{<-ub5J|a+nN$k1Y{?5mzs>_n*bh z$2ao#|NR!e^Z%A0PQ{IbYb-zUozO8qoUN@z4LVv;MlUJuLR$n++fn{1gAj zHOAEy%-nu$UAxt{jbP2exAq4w=;pUOTDVPi)tQ43u{-+Eqqu}peR2rGbfdS zL1SX=L|c!;4iatmmwCBr^Ob2_Qgkle)ZJwONoR|!Qg;yB(aDw> z`fIux!+8{$?AIoC&aBefJ)`;gk6rEk@5>G6J&pbTTq3MXjk!jtaL&s%*FBClyE9+T z`QGWgMoII?^COelVki8V_TqL{St&fy~d&0PzH&I`DUhAysA ze81^XW%uT&><#B^e{wgw=Bl19oh7KUu|?#Pfa2mtt*i|Ki({3Ky0o1WmiuRTe7@Rr zpLJRimSO?zTqi#^|3CQt-mIlBHO)0=F#L+o`JF7o@rLQ`vfO(4+hxC5KG-vdM_rH4 zXDpt-#C&(u7Y>P=YUTFdh=oLh!jMftaLnIcd~vcxr_#5q4VH#M(>!MP|k zu_QG`p**uBL&4qCHz2%`PaGKCte!58Ar-gYUfn3@;2_WzxLPok^Qv0NG_Q;X!MpG7 zR>W%<<$p_`rQ$gW6MYE`*?(Zu+Uu7;7u!GD?vSsMADZO)-r}mqMQb0^ke-&{Mv=u2 zQRG_#f}YDvm?Iki8_CVm67SnH|dbCXA2w~ z7&rwK92yuHnOHa`fJqRSg##+60+j-CfeIjkLYV3ihIl}XLRQa&Fa&6e#&+pPZ?(2O Ud-mldFw_`4UHx3vIVCg!0O_DJbN~PV literal 0 HcmV?d00001 diff --git a/Crawler/assets/characters/player_f.png b/Crawler/assets/characters/player_f.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb037b757da5395c0e799d63668c022d19fe2fb GIT binary patch literal 813 zcmeAS@N?(olHy`uVBq!ia0vp^9zeW;gAGVJuUv7Ifq}6l)7d$|)7e>}peR2rGbfdS zL1SX=L|c!;4iatmmwCBr^Ob2_Qgkle)ZJwONoR|!Qg;yB(aDw> z`fIux!+8{$?AIoC&aBefJ)`;gk6rEk@5>G6J&pbTTq3MXjk!jtaL&s%*FBClyE9+T z`QGWgMoII?^COelVki8V_TqL{St&fy~d&0PzH&I`DUhAysA ze81^XW%uT&><#B^e{wgw=Bl19oh7KUu|?#Pfa2mtt*i|Ki({3Ky0o1WmiuRTe7@Rr zpLJRimSO?zTqi#^|3CQt-mIlBHO)0=F#L+o`JF7o@rLQ`vfO(4+hxC5KG-vdM_rH4 zXDpt-#C&(u7Y>P=YUTFdh=oLh#OPkYv9BWs|LWQl7;iF1B#Zfaf$gL6@8 zVo7R>LV0FMhJw4NZ$Nk>pExkOSv_4GLn>~)y?T(>!9k!caIwcGmWo0ii6yBP7 zx8nXq&$wslvs64MVWKaAA^Q((%(;H~^Vd6%w>#u()8Uw z1_n+61&0O(MkW@H31AY$W#NDdsz9ZHT%ZDopb(~dgdrXfqmb1zAq)Z9qOo22l!&(J UVwrk>V5l*8y85}Sb4q9e02*8}k^lez literal 0 HcmV?d00001 diff --git a/Crawler/assets/characters/player_m.png b/Crawler/assets/characters/player_m.png new file mode 100644 index 0000000000000000000000000000000000000000..a2253042a10a42c56a8a3e8e78d7503cfe680a66 GIT binary patch literal 814 zcmeAS@N?(olHy`uVBq!ia0vp^9zeW;gAGVJuUv7Ifq}6l)7d$|)7e>}peR2rGbfdS zL1SX=L|c!;4iatmmwCBr^Ob2_Qgkle)ZJwONoR|!Qg;yB(aDw> z`fIux!+8{$?AIoC&aBefJ)`;gk6rEk@5>G6J&pbTTq3MXjk!jtaL&s%*FBClyE9+T z`QGWgMoII?^COelVki8V_TqL{St&fy~d&0PzH&I`DUhAysA ze81^XW%uT&><#B^e{wgw=Bl19oh7KUu|?#Pfa2mtt*i|Ki({3Ky0o1WmiuRTe7@Rr zpLJRimSO?zTqi#^|3CQt-mIlBHO)0=F#L+o`JF7o@rLQ`vfO(4+hxC5KG-vdM_rH4 zXDpt-#C&(u7Y>P=YUTFdh=oLh#O&+O;dxJN)C$r9Iy66gHf+|;}h2Ir#G z#FEq$h4Rdj3yXsfk z4h4q>77hU*$-v0O;sGW>Tqc;H5L5~%2vh)3$%&~RVTcOEC}j1Fa6={lZJBbLcao`A V&J~puR$#C(c)I$ztaD0e0s!8(Gw%QZ literal 0 HcmV?d00001 diff --git a/Crawler/assets/characters/red_stone.png b/Crawler/assets/characters/red_stone.png new file mode 100644 index 0000000000000000000000000000000000000000..6f87e67ef030d24ce06b814d40b221ef5e3a6e95 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^9zeW;gAGVJuUv7Ifq}6l)7d$|)7e>}peR2rGbfdS zL1SX=L|c!;4iatmmwCBr^Ob2_Qgkle)ZJwONoR|!Qg;yB(aDw> z`fIux!+8{$?AIoC&aBefJ)`;gk6rEk@5>G6J&pbTTq3MXjk!jtaL&s%*FBClyE9+T z`QGWgMoII?^COelVki8V_TqL{St&fy~d&0PzH&I`DUhAysA ze81^XW%uT&><#B^e{wgw=Bl19oh7KUu|?#Pfa2mtt*i|Ki({3Ky0o1WmiuRTe7@Rr zpLJRimSO?zTqi#^|3CQt-mIlBHO)0=F#L+o`JF7o@rLQ`vfO(4+hxC5KG-vdM_rH4 zXDpt-#C&(u7Y>P=YUTFdh=oLh!jPbi>h-bA2~WQl7;iF1B#Zfaf$gL6@8 zVo7R>LV0FMhJw4NZ$Nk>pExkOk9fK`hE&{od&}O4IZ@)k!|8_3tGPsFW2f{z;OKLB z$&hv?qr?luUa(~G;;uUlT~2n%`)}$?|G(xnZ@J-a&uKINp8fqc%@t@L8hHGr+FSqc zy-VKH|1GOrp1Nn}eVZRI-QHU$J$jH=aU;aQ(iFf?Jb%AHvx#MqFcQ5Yf zxN*<+SBPiYg*BofTI$zZCy881bM#$(YRS`@txN7lTot*}Dmi8PX3@Q;UOyNAy> zQ&xKPFL7g;_0%cn6n>JbgIM1wal2=S72WhTcvaION+4D7yi?6N<33_?TI@Vk> z;~ICC*24b+94jT4PV&0F^s#2ft@TU1%fJ3K@ABN`o?W%~rQSdF{jn;Alv>GJ=5So3uGYoM_>5v Wd*@2IC(WM%lJs=-b6Mw<&;$SsL&4Ml literal 0 HcmV?d00001 diff --git a/Crawler/assets/characters/sherman.png b/Crawler/assets/characters/sherman.png new file mode 100644 index 0000000000000000000000000000000000000000..979f53f76dfa52e468c022d70034ef4fdb7bc3fb GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0vp^9zeW;gAGVJuUv7Ifq}6l)7d$|)7e>}peR2rGbfdS zL1SX=L|c!;4iatmmwCBr^Ob2_Qgkle)ZJwONoR|!Qg;yB(aDw> z`fIux!+8{$?AIoC&aBefJ)`;gk6rEk@5>G6J&pbTTq3MXjk!jtaL&s%*FBClyE9+T z`QGWgMoII?^COelVki8V_TqL{St&fy~d&0PzH&I`DUhAysA ze81^XW%uT&><#B^e{wgw=Bl19oh7KUu|?#Pfa2mtt*i|Ki({3Ky0o1WmiuRTe7@Rr zpLJRimSO?zTqi#^|3CQt-mIlBHO)0=F#L+o`JF7o@rLQ`vfO(4+hxC5KG-vdM_rH4 zXDpt-#C&(u7Y>P=YUTFdh=oLh#OpLtvC>IR^YWQl7;iF1B#Zfaf$gL6@8 zVo7R>LV0FMhJw4NZ$Nk>pExkOSv*}FLn>~)y=o}r;2_}Y_;{PsLSc^9zSFE47tg(! zR=3cj^lbVp70*eS=u2S8{sVP#*Drt0jeNY_AzvduG|Bb7#Z`}s);^{oJuShFB8wlU zD4(r+(kg!CRh7|t4Y#8wos0|}Wc_rq<0OrX9UH7>M||58b^Z)1Bh!^{(ji~Z7C1IA za0)0mG%zqSv2aWPlOQe&2UJi6Dh1>M6+i@qFx4Xr@qieGtey#B2+$Ud?b6qlX!l&% S-+3AsXbhgNelF{r5}E*^R59lO literal 0 HcmV?d00001 diff --git a/Crawler/assets/config/configuration.txt b/Crawler/assets/config/configuration.txt index ab3df3e0..996f1ad2 100644 --- a/Crawler/assets/config/configuration.txt +++ b/Crawler/assets/config/configuration.txt @@ -48,6 +48,9 @@ item_directory = items/ # Path to items configuration item_img_directory = items/ +# Path to story files +story_directory = config/story/ + # Whether or not to show individual data accesses from config data structure. debug_access_options = 0 diff --git a/Crawler/assets/config/story/Chapter 1.txt b/Crawler/assets/config/story/Chapter 1.txt new file mode 100644 index 00000000..1aed8d86 --- /dev/null +++ b/Crawler/assets/config/story/Chapter 1.txt @@ -0,0 +1,350 @@ +===STORY_1_1=== +{LOCATION Bleakport Outskirts} +{BACKGROUND sea.png} +[] +You are on your way from Bleakport to the Lestorian Forest, where you want to hunt slimes. + +Slime Remains are used to brew healing potions and recent pirate attacks around Bleakport used up alot of those. + +This makes it an easy opportunity to make some coin. + +Merchant crossing is getting close, the smoke of the campfires can already be seen. + +Merchant crossing is a Crossway that connects Bleakport, the Lestorian Forest, Eagleview Mountains and the Capitol of the Lestorian Kingdom, Clafton. + +The crossing is famous for merchants to rest on there travels and trade goods with each other. + +While you are getting closer you realise something isnt right. the Smoke on the sky is way thicker then what you would expect from a few campfires. + +You reach the crossing where a horrible scenery awaits you. + +Tents are burning and lifeless bodys lying on the floor. It looks like some Bandit attack, which also is a kinda strange occurance. + +Bandit groups weren't active in the past 50 years because of the Lestorian military. + +In the entire history of the Lestorian Kingdom, there are no wars on the records. + +Which leads that the military is used more like a police force, which presence discourages large scale crimes. + +The only active criminal group in the Area would be the Pirates in the Bleakport area. + +But even they know that they can only operate because the Lestorian military isnt leaving the mainland. + +You search the entire camp for any survivors. And finally, you found someone still breathing. + +you feed him a health potion, clean his wounds with water and close them with bandages. + +The health potion seem to work kinda fast. The mans consciousness returns a few minutes later. + +[?,Sherman] +{LEFT Sherman} +{RIGHT You} +Th..Thanks. + +[You] + +no Problem. Rest for now. + +[] + +after around half an hour of letting the health potion work the man finally seems to be in a somewhat stable state. + +[You] + +How are you feeling. + +[?] + +Better, i guess. + +[You] + +Can you tell me what happened here? + +[?] + +I... We... No, it happened way to fast. + +[You] + +Thats ok, maybe your memories come back later. Whats your Name? + +[Sherman] + +Sherman. Professor of the Lestorian Science Corporation. + +[You] + +I'm [Player Name]. Adventurer and Hunter. + +[] + +You are kinda surprised of his response. You did not expect anyone from the Science Corporation to leave the Capitol in the first place. + +While you are deep in thoughts, suddenly Sherman starts to panic. + +[Sherman] + +The stone. did they... please, can you check if you can find a red colored stone? It was in my bag. + +[You] + +calm down. I see if i can find anything like that. + +[] + +You check every bag around the loaction where you found Sherman. + +While searching you realise that whoever did this wasn't after money. + +You don't find any red stone though. + +[Sherman] + +What shall I do. I can't return to the Kingdom without it. + +[You] + +First you should rest. Once you are able to walk on your own again, we can think about a solution for your lost object. + +[] + +You set up a tent and a campfire a little outside of the main camp where the tragedy happened and help Sherman to move over. + +Without the corpses surrounding you, you relax a little bit. For the rest of the day you keep an Eye on Sherman while he recovers. + +The next day Sherman no longer lying down, instead sitting on the grass. + +[Sherman] + +Good Morning. You told me you are an Adventurer right? + +[You] + +Morning... Yes i am. Why? + +[] + +Sherman is full of Energy you can barely tell that he almost died a day before. That health Potion you gave to him performed a miracle. + +[Sherman] + +Ok, So you remember the Stone i asked you about yesterday right? It's an source of Energy we currently are investigating. + +We may have lost the first stone. But we got a clue that another one lies deep inside the Lestorian Forest. + +With that Stone i could return to the kingdom with something to show. i obviously would pay you for it. + +It should be in a cave somewhere in the middle of the Forest. + +[] + +For the Slime hunting you have to enter the Lestorian Forest anyway. Therefore searching for a cave while doing that doesnt sound like a big deal. + +[You] + +I am on my way to the Forest anyway. I can check any cave i come across and if I find any Red Stone i will report back. + +No promises though. My main goal is Slime hunting. But i see what i can do to help. + +[Sherman] + +Great, i still feel a little weak so i will be staying in this camp for now. + +Also i expect Lestorian Soldiers to show up soon to investigate the campside. Guess i can help as witness. + +[You] + +Did your Memories return? + +[Sherman] + +Well, a few things but i still need to sort myself. I cant really tell you more then what i did yesterday. + +[You] + +Guess i have to take that answer for now. I am on my way to the Forest. bye. + + + + + +===STORY_1_2=== +{LOCATION Lestorian Forest} +{BACKGROUND sea.png} +[?,Greg] +Did you defeat the Monsters? + +[] + +A voice from the top of the trees appears. + +[You] + +I can't see any more atleast. + +[?,Greg] + +thats great. Give me a short moment i come down. + +[] + +A man Starts Climbing down a tree. + +{LEFT Greg} +{RIGHT You} +[Greg] + +Hello, my name is Greg. Thanks for the rescue. + +[You] + +Rescue? i am just hunting slimes. Anyway, [Player name]. Glad i could help. + +[Greg] + +You for sure did. I was wandering around and didnt realised that a bunch of slimes sneaked up on me. + +Luckily those guys can't climb trees. But those damn slimes are really good in just waiting. + +Was sitting for over one day on this tree. + +[You] + +Did you had any plan in case no one would have come around? + +[Greg] + +Nah, got enough food and water on me. Could have stayed there for like a week. + +Last time this happened I was able to leave after 3 days. + +[You] + +Last time? ... Anyway, why are you even in the forest if you are not Hunting Slimes? + +[Greg] + +Ever heard of the Echanted Trees deep inside this Forest? + +I dont have any proof that those really exist but since i heard about them i cant think of anything else then find one. + +Its said that they look on first glance like a normal Cedar Tree, but there wood is hard as Steel. + +Legends say that a sword out of this wood is Sharper then any normal sword made with steel and way lighter. + +[You] + +Sounds like a great material. But if its hard as steel. any Plans how to cut it down? + +[Greg] + +... + +{PAUSE} + +... well ... + +{PAUSE} + +Never thought about that part. + +This could indeed become a Problem. + +Maybe i leave the forest for now and think up a plan before returning. + +If you search for me, i will be at merchant crossing. Offering my skills as a Blacksmith to Merchants. + +[You] + +About Merchant Crossing... + +[] + +You explain Greg what happened at the crossing. + +[Greg] + +Thats not good. You said you build a small camp nearby? Guess i will go there for now then. + +If you need any weapons or armour. you can find me there. + +See you later. + + + + + +===STORY_1_3=== +{LOCATION Stone Wall} +{BACKGROUND sea.png} +[] + +You see a crack in the Stone Wall. + +The closer you get to the crack the colder the air feels. + +A shiver runs down your spine. This doesn't feel like a normal cave. + +Its big enough that you can enter without any problem. + +After a few steps inside, a glimmering red light lightens up the cave. + +you follow the way until you hit an open Space. +{BACKGROUND cave.png} +The Walls are slick. No Rocks spiking out of the walls. the entire room has some unnatural feeling. + +In the middle of the room is some kind of Pillar which is the same heigh as your Torso. +{LEFT Red Stone} +{RIGHT You} +On Top of that Pillar lies a redish Stone Cube. + +The Stone Cube seems to emit the light + +In the Wall behind the Cube are runes engraved. + +You never seen anything close to those runes and obviously can't read them. + +[You] + +This could be the Stone Sherman was looking for. + +[] + +You get closer to the pillar and grab the Cube. +{LEFT} +{RIGHT} +*click* +{BACKGROUND cave_dark.png} +Darkness. + +The Stone Cube is still glowing but the glow is way weaker then it was before. + +The light its emitting is now to weak to see your own foot. + +The sudden unexpected darkness casts fear on you. + +You turn around and search for the way back. + +Returning seems to be no Problem, until. + +Halfway back you suddenly feel a movement. + +An Earthquake. + +Its not a strong one but in your current position it is extremly dangerous. + +Even though you still can't see anything, you start running. + +{PAUSE} + +... + +{PAUSE} +{BACKGROUND sea.png} +Finally. Sunlight. You are out of the cave. + +{PAUSE} + +Together with the Stone Cube you leave the Forest behind. + diff --git a/Crawler/assets/config/story/Chapter 2.txt b/Crawler/assets/config/story/Chapter 2.txt new file mode 100644 index 00000000..e69de29b diff --git a/Crawler/assets/config/story/Chapter 3.txt b/Crawler/assets/config/story/Chapter 3.txt new file mode 100644 index 00000000..e69de29b diff --git a/Crawler/assets/config/story/Chapter 4.txt b/Crawler/assets/config/story/Chapter 4.txt new file mode 100644 index 00000000..e69de29b diff --git a/Crawler/assets/config/story/Chapter 5.txt b/Crawler/assets/config/story/Chapter 5.txt new file mode 100644 index 00000000..e69de29b diff --git a/Crawler/assets/config/story/Chapter 6.txt b/Crawler/assets/config/story/Chapter 6.txt new file mode 100644 index 00000000..e69de29b diff --git a/Crawler/assets/config/story/characters.txt b/Crawler/assets/config/story/characters.txt new file mode 100644 index 00000000..d0556c77 --- /dev/null +++ b/Crawler/assets/config/story/characters.txt @@ -0,0 +1,10 @@ +character_image_location = assets/characters + +Characters +{ + Player_F = player_f.png + Player_M = player_m.png + Sherman = sherman.png + Greg = greg.png + Red Stone = red_stone.png +} \ No newline at end of file