Active windowing systems and menu navigation combined.

master
sigonasr2 2 years ago
parent afd1d88d64
commit dc292a3554
  1. 51
      FiestaOnlineEditor/FiestaOnlineEditor.cpp
  2. 1
      FiestaOnlineEditor/FiestaOnlineEditor.h

@ -116,14 +116,22 @@ bool FiestaOnlineEditor::OnUserUpdate(float fElapsedTime){
ItemEditor*itemEditor=new ItemEditor(this,"Item Editor: "+config["DefaultPath"].GetString(),{32,32},GetScreenSize()-vi2d{64,64}); ItemEditor*itemEditor=new ItemEditor(this,"Item Editor: "+config["DefaultPath"].GetString(),{32,32},GetScreenSize()-vi2d{64,64});
CreateWindow(itemEditor); CreateWindow(itemEditor);
itemEditor->Load(config["DefaultPath"].GetString()); itemEditor->Load(config["DefaultPath"].GetString());
itemEditor=new ItemEditor(this,"Item Editor: "+config["DefaultPath"].GetString(),{0,0},GetScreenSize()-vi2d{64,64}); manager.Close();
CreateWindow(itemEditor); menuOpened=false;
itemEditor->Load(config["DefaultPath"].GetString());
}break; }break;
} }
} }
} }
if(GetKey(ESCAPE).bPressed&&!menuOpened){
menuOpened=true;
manager.Open(&menu);
}else
if(GetKey(ESCAPE).bPressed&&menuOpened){
menuOpened=false;
manager.Close();
}
SetDrawTarget(1); SetDrawTarget(1);
Clear(olc::VERY_DARK_CYAN); Clear(olc::VERY_DARK_CYAN);
@ -133,28 +141,39 @@ bool FiestaOnlineEditor::OnUserUpdate(float fElapsedTime){
//BACKGROUND DRAWING //BACKGROUND DRAWING
bool internalMouseFocus=false; bool internalMouseFocus=false;
for(Window*w:windows){ for(Window*w:windows){
if(!w->IsFocusedWindow()){ if(!w->IsFocusedWindow()){
SetDrawTarget(1); if(!menuOpened){
} else { w->InternalUpdate(this,fElapsedTime);
SetDrawTarget(nullptr);
if(w->IsInBounds(GetMousePos())){
w->InternalMouseFocus(this);
w->MouseFocus(this);
internalMouseFocus=true;
} }
w->Draw(this);
} }
w->InternalUpdate(this,fElapsedTime);
w->Draw(this);
} }
if(!internalMouseFocus){ for(Window*w:windows){
for(Window*w:windows){ //A second iteration through the windows because windows without focus should only have priority after a window with focus. if(w->IsFocusedWindow()){
if(!w->IsFocusedWindow()){ if(!menuOpened){
if(w->IsInBounds(GetMousePos())){ if(w->IsInBounds(GetMousePos())){
w->InternalMouseFocus(this); w->InternalMouseFocus(this);
w->MouseFocus(this); w->MouseFocus(this);
internalMouseFocus=true;
}
}
if(!menuOpened){
w->InternalUpdate(this,fElapsedTime);
}
w->Draw(this);
}
}
if(!menuOpened){
if(!internalMouseFocus){
for(Window*w:windows){ //A second iteration through the windows because windows without focus should only have priority after a window with focus.
if(!w->IsFocusedWindow()){
if(w->IsInBounds(GetMousePos())){
w->InternalMouseFocus(this);
w->MouseFocus(this);
}
} }
} }
} }

@ -18,6 +18,7 @@ class FiestaOnlineEditor : public olc::PixelGameEngine
State appState=LOADFOLDER; State appState=LOADFOLDER;
utils::datafile config; utils::datafile config;
std::vector<Window*>windows; std::vector<Window*>windows;
bool menuOpened=false;
public: public:
FiestaOnlineEditor(); FiestaOnlineEditor();

Loading…
Cancel
Save