Program window now remembers it's last position on restart

Gui_Panel_Refactor
Joeyrp 4 years ago
parent 1aa0016a4b
commit 8444e45fb0

@ -56,13 +56,19 @@ namespace lunarium
Logger::Log(LogCategory::CORE, LogLevel::INFO, "Lunarium is shutting down!"); Logger::Log(LogCategory::CORE, LogLevel::INFO, "Lunarium is shutting down!");
int x, y;
mpInstance->MainWindow().GetPosition(&x, &y);
mpInstance->mState.Display.WindowStartPosition.X = x;
mpInstance->mState.Display.WindowStartPosition.Y = y;
mpInstance->mpWindow->GetFramebufferSize(&mpInstance->mState.Display.WindowedSize.Width, mpInstance->mpWindow->GetFramebufferSize(&mpInstance->mState.Display.WindowedSize.Width,
&mpInstance->mState.Display.WindowedSize.Height); &mpInstance->mState.Display.WindowedSize.Height);
mpInstance->mpWindow->GetPosition(&mpInstance->mState.Display.WindowStartPosition.X, mpInstance->mpWindow->GetPosition(&mpInstance->mState.Display.WindowStartPosition.X,
&mpInstance->mState.Display.WindowStartPosition.Y); &mpInstance->mState.Display.WindowStartPosition.Y);
mpInstance->mState.SaveToFile("lunarium_state.xml"); mpInstance->mState.SaveToFile();
// Run Mode shuts down first // Run Mode shuts down first
mpInstance->mpRunMode->Shutdown(); mpInstance->mpRunMode->Shutdown();

@ -50,6 +50,8 @@ namespace lunarium
s.Interface.MainFont = ""; s.Interface.MainFont = "";
s.Mode = RunMode::MODE_TEST; s.Mode = RunMode::MODE_TEST;
s.LoadedFile = "default_state.xml";
return s; return s;
} }
@ -148,11 +150,22 @@ namespace lunarium
state.Interface.MainFont = interface.attribute("MainFont").value(); state.Interface.MainFont = interface.attribute("MainFont").value();
} }
state.LoadedFile = filename;
return OpRes::OK(); return OpRes::OK();
} }
OpRes State::SaveToFile()
{
if (LoadedFile == "")
{
LoadedFile = "UNNAMED_STATE.xml";
}
Logger::Log(LogCategory::CORE, LogLevel::INFO, "Saving state file: %s", LoadedFile.c_str());
return SaveToFile(LoadedFile);
}
OpRes State::SaveToFile(std::string filename) OpRes State::SaveToFile(std::string filename)
{ {
pugi::xml_document doc; pugi::xml_document doc;

@ -69,6 +69,10 @@ namespace lunarium
static State CreateDefault(); static State CreateDefault();
static OpRes CreateFromFile(std::string filename, State& state); static OpRes CreateFromFile(std::string filename, State& state);
OpRes SaveToFile(std::string filename); OpRes SaveToFile(std::string filename);
OpRes SaveToFile();
private:
std::string LoadedFile;
}; };
} }

@ -59,6 +59,7 @@ namespace editor
void Editor::OnTick(double delta) void Editor::OnTick(double delta)
{ {
// Panels
for (auto iter = mPanels.begin(); iter != mPanels.end(); iter++) for (auto iter = mPanels.begin(); iter != mPanels.end(); iter++)
{ {
if (iter->second->IsOpen()) if (iter->second->IsOpen())
@ -67,6 +68,12 @@ namespace editor
} }
} }
// Tools
if (mpMapEditor)
{
mpMapEditor->OnTick(delta);
}
HandleMenuEvents(); HandleMenuEvents();
} }
@ -82,6 +89,10 @@ namespace editor
} }
} }
if (mpMapEditor)
{
mpMapEditor->OnRender(g);
}
if (mpFileBrowser) if (mpFileBrowser)
{ {

@ -77,7 +77,7 @@ namespace editor
// STATUS BAR // STATUS BAR
const ImGuiViewport* viewport = ImGui::GetMainViewport(); const ImGuiViewport* viewport = ImGui::GetMainViewport();
ImGui::SetNextWindowViewport(viewport->ID); ImGui::SetNextWindowViewport(viewport->ID);
ImGui::SetNextWindowSize(ImVec2(mWidth, ImGui::GetFrameHeight() - 12.0f), ImGuiCond_Always); ImGui::SetNextWindowSize(ImVec2(mWidth, ImGui::GetFrameHeight() - 15.0f), ImGuiCond_Always);
ImGui::SetNextWindowPos(ImVec2(mX, mY + (mHeight - ImGui::GetFrameHeight() - 8.0f)), ImGuiCond_Always); ImGui::SetNextWindowPos(ImVec2(mX, mY + (mHeight - ImGui::GetFrameHeight() - 8.0f)), ImGuiCond_Always);
ImGui::Begin("status bar", &mIsOpen, ImGuiWindowFlags_NoCollapse ImGui::Begin("status bar", &mIsOpen, ImGuiWindowFlags_NoCollapse
| ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize

@ -25,6 +25,7 @@ namespace editor
if (!mIsOpen) if (!mIsOpen)
return false; return false;
//ImGui::SetNextWindowPosition()
if (!ImGui::Begin("World View", &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) if (!ImGui::Begin("World View", &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar))
{ {
ImGui::End(); ImGui::End();

@ -48,7 +48,7 @@ namespace lunarium { namespace editor
} }
} }
bool MapEditor::OnRender(IGraphics* g) bool MapEditor::OnRender(lunarium::IGraphics* g)
{ {
if (!mIsOpen) if (!mIsOpen)
{ {

@ -13,10 +13,12 @@
#include <string> #include <string>
#include <utils/opRes.h> #include <utils/opRes.h>
namespace lunarium { namespace editor namespace lunarium {
class IGraphics;
namespace editor
{ {
class Editor; class Editor;
class IGraphics;
class Panel; class Panel;
class MapEditor class MapEditor
{ {
@ -26,7 +28,7 @@ namespace lunarium { namespace editor
OpRes Initialize(Editor* editor); OpRes Initialize(Editor* editor);
void Shutdown(); void Shutdown();
void OnTick(double delta); void OnTick(double delta);
bool OnRender(IGraphics* g); bool OnRender(lunarium::IGraphics* g);
void Open(); void Open();
void Close(); void Close();

@ -35,8 +35,8 @@ namespace lunarium
Logger::Log(mLogCat, LogLevel::INFO, "EDITOR DETECTED!"); Logger::Log(mLogCat, LogLevel::INFO, "EDITOR DETECTED!");
#endif #endif
mpScene = new SimpleRenderScene(mLogCat); // mpScene = new SimpleRenderScene(mLogCat);
// mpScene = new PhysicsScene(mLogCat); mpScene = new PhysicsScene(mLogCat);
mpScene->OnLoad(); mpScene->OnLoad();

@ -1,6 +1,6 @@
<State> <State>
<DataDirectory>data/</DataDirectory> <DataDirectory>data/</DataDirectory>
<Mode Type="test" /> <Mode Type="editor" />
<Display Renderer="opengl" IsFullScreen="false" VSyncEnabled="true"> <Display Renderer="opengl" IsFullScreen="false" VSyncEnabled="true">
<FullScreenResolution Width="1920" Height="1080" /> <FullScreenResolution Width="1920" Height="1080" />
<WindowedSize Width="1280" Height="720" /> <WindowedSize Width="1280" Height="720" />

Loading…
Cancel
Save