Files
XCEngine/editor/src/Core/EditorWindowTitle.h

50 lines
1.3 KiB
C++

#pragma once
#include "Core/IEditorContext.h"
#include "Core/ISceneManager.h"
#include <filesystem>
#include <string>
namespace XCEngine {
namespace Editor {
inline std::string BuildEditorWindowTitle(IEditorContext& context) {
auto& sceneManager = context.GetSceneManager();
std::string modePrefix;
switch (context.GetRuntimeMode()) {
case EditorRuntimeMode::Play:
modePrefix = "[Play] ";
break;
case EditorRuntimeMode::Paused:
modePrefix = "[Paused] ";
break;
case EditorRuntimeMode::Simulate:
modePrefix = "[Simulate] ";
break;
case EditorRuntimeMode::Edit:
default:
break;
}
std::string sceneName = sceneManager.HasActiveScene() ? sceneManager.GetCurrentSceneName() : "No Scene";
if (sceneName.empty()) {
sceneName = "Untitled Scene";
}
if (sceneManager.IsSceneDirty()) {
sceneName += " *";
}
if (sceneManager.GetCurrentScenePath().empty()) {
sceneName += " (Unsaved)";
} else {
sceneName += " - ";
sceneName += std::filesystem::path(sceneManager.GetCurrentScenePath()).filename().string();
}
return modePrefix + sceneName + " - XCEngine Editor";
}
} // namespace Editor
} // namespace XCEngine