feat(editor): auto-load objects/NPCs, mode buttons, number key shortcuts

- Loading an ADT now auto-loads objects.json and creatures.json from
  the output directory if they exist (full session persistence)
- Toolbar buttons now highlight active mode in blue (clearer visual)
- Number keys 1-5 switch modes: 1=Sculpt 2=Paint 3=Objects 4=Water 5=NPCs
- Toast shows loaded object/NPC count on zone open
This commit is contained in:
Kelsi 2026-05-05 05:29:30 -07:00
parent e18c2cf009
commit 864415d246
2 changed files with 37 additions and 15 deletions

View file

@ -212,26 +212,31 @@ void EditorUI::renderMenuBar(EditorApp& app) {
void EditorUI::renderToolbar(EditorApp& app) {
ImGui::SetNextWindowPos(ImVec2(300, 30), ImGuiCond_FirstUseEver);
ImGui::SetNextWindowSize(ImVec2(400, 50), ImGuiCond_FirstUseEver);
ImGui::SetNextWindowSize(ImVec2(500, 50), ImGuiCond_FirstUseEver);
ImGuiWindowFlags flags = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize |
ImGuiWindowFlags_NoScrollbar;
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(8, 8));
if (ImGui::Begin("##Toolbar", nullptr, flags)) {
auto mode = app.getMode();
if (ImGui::RadioButton("Sculpt", mode == EditorMode::Sculpt))
app.setMode(EditorMode::Sculpt);
ImGui::SameLine();
if (ImGui::RadioButton("Paint", mode == EditorMode::Paint))
app.setMode(EditorMode::Paint);
ImGui::SameLine();
if (ImGui::RadioButton("Objects", mode == EditorMode::PlaceObject))
app.setMode(EditorMode::PlaceObject);
ImGui::SameLine();
if (ImGui::RadioButton("Water", mode == EditorMode::Water))
app.setMode(EditorMode::Water);
ImGui::SameLine();
if (ImGui::RadioButton("NPCs", mode == EditorMode::NPC))
app.setMode(EditorMode::NPC);
auto modeButton = [&](const char* label, EditorMode m) {
bool active = (mode == m);
if (active) {
ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.3f, 0.6f, 0.9f, 1.0f));
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1, 1, 1, 1));
}
if (ImGui::Button(label, ImVec2(70, 28)))
app.setMode(m);
if (active)
ImGui::PopStyleColor(2);
ImGui::SameLine();
};
modeButton("Sculpt", EditorMode::Sculpt);
modeButton("Paint", EditorMode::Paint);
modeButton("Objects", EditorMode::PlaceObject);
modeButton("Water", EditorMode::Water);
modeButton("NPCs", EditorMode::NPC);
}
ImGui::End();
ImGui::PopStyleVar();