diff --git a/FiestaOnlineEditor/FiestaOnlineEditor.cpp b/FiestaOnlineEditor/FiestaOnlineEditor.cpp index 3c3ecd7..3bee82f 100644 --- a/FiestaOnlineEditor/FiestaOnlineEditor.cpp +++ b/FiestaOnlineEditor/FiestaOnlineEditor.cpp @@ -35,11 +35,7 @@ bool FiestaOnlineEditor::OnUserCreate(){ selectedPath.push_back(""); utils::datafile::Read(config,"assets/program.txt"); - if(config.HasProperty("DefaultPath")){ - manager.Open(&menu); - } else { - manager.Open(&dialog.GetMenu()); - } + InitializePathSelection(); return true; } @@ -105,12 +101,15 @@ bool FiestaOnlineEditor::OnUserUpdate(float fElapsedTime){ }break; case SELECTED_FOLDER:{ std::cout<Load(selectedPath.back()); manager.Close(); + InitializePathSelection(); }break; case LOAD_ITEM_EDITOR:{ ItemEditor*itemEditor=new ItemEditor(this,"Item Editor: "+config["DefaultPath"].GetString(),{32,32},GetScreenSize()-vi2d{64,64}); @@ -140,6 +139,17 @@ bool FiestaOnlineEditor::OnUserUpdate(float fElapsedTime){ SetDrawTarget(1); //BACKGROUND DRAWING + if(appState==LOADFOLDER){ + switch(pickFileState){ + case SHINEDIR:{ + DrawString({2,2},"Choose the Shine file directory:"); + }break; + case CLIENTDIR:{ + DrawString({2,2},"Choose the Client file directory:"); + }break; + } + } + bool internalMouseFocus=false; for(Window*w:windows){ if(!w->IsFocusedWindow()){ @@ -219,6 +229,21 @@ void FiestaOnlineEditor::CreateWindow(Window*window){ windows.reserve(windows.size()+1);//HACK ALERT! Whenever we are iterating through the windows list we could potentially add an item to the end of it whenever it becomes focused to keep layering. Because of this we don't want to reallocate during another push_back. This ensures that will never occur. } +void FiestaOnlineEditor::InitializePathSelection(){ + if(config.HasProperty("DefaultPath")&&config.HasProperty("ClientPath")){ + appState=MENUSELECT; + manager.Open(&menu); + } else + if(!config.HasProperty("DefaultPath")){ + pickFileState=SHINEDIR; + manager.Open(&dialog.GetMenu()); + } else + if(!config.HasProperty("ClientPath")){ + pickFileState=CLIENTDIR; + manager.Open(&dialog.GetMenu()); + } +} + int main() { FiestaOnlineEditor demo; diff --git a/FiestaOnlineEditor/FiestaOnlineEditor.h b/FiestaOnlineEditor/FiestaOnlineEditor.h index 2b0e25c..d6d036a 100644 --- a/FiestaOnlineEditor/FiestaOnlineEditor.h +++ b/FiestaOnlineEditor/FiestaOnlineEditor.h @@ -19,6 +19,7 @@ class FiestaOnlineEditor : public olc::PixelGameEngine utils::datafile config; std::vectorwindows; bool menuOpened=false; + PickState pickFileState=SHINEDIR; public: FiestaOnlineEditor(); @@ -29,4 +30,5 @@ public: bool OnUserUpdate(float fElapsedTime) override; #undef CreateWindow //Stupid Windows void CreateWindow(Window*window); + void InitializePathSelection(); }; \ No newline at end of file diff --git a/FiestaOnlineEditor/State.h b/FiestaOnlineEditor/State.h index f8659dd..806297f 100644 --- a/FiestaOnlineEditor/State.h +++ b/FiestaOnlineEditor/State.h @@ -1,8 +1,12 @@ #pragma once enum State{ LOADFOLDER, + MENUSELECT, ITEMEDIT, MOBEDIT, QUESTEDIT, - +}; +enum PickState{ + SHINEDIR, + CLIENTDIR, }; \ No newline at end of file diff --git a/FiestaOnlineEditor/assets/program.txt b/FiestaOnlineEditor/assets/program.txt index cd017cc..56f5af2 100644 --- a/FiestaOnlineEditor/assets/program.txt +++ b/FiestaOnlineEditor/assets/program.txt @@ -1 +1,2 @@ DefaultPath = /Users/sigon/Documents/NA2016-main/Server/9Data/Shine +ClientPath = /Users/sigon/Documents/NA2016-main/Client