From bd850655a970b23eafc3d0f3af51875060148ef5 Mon Sep 17 00:00:00 2001 From: milek7 Date: Sat, 10 Aug 2019 22:52:23 +0200 Subject: [PATCH] scenery parser work --- launcher/scenery_list.cpp | 11 +++++++---- launcher/scenery_scanner.cpp | 18 ++++++++++++------ launcher/scenery_scanner.h | 18 +++++++++++++++++- 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/launcher/scenery_list.cpp b/launcher/scenery_list.cpp index dde7e9f4..7c8d83cb 100644 --- a/launcher/scenery_list.cpp +++ b/launcher/scenery_list.cpp @@ -21,7 +21,7 @@ void ui::scenerylist_panel::render() if (ImGui::Begin(panelname.c_str(), &is_open)) { ImGui::Columns(3); - if (ImGui::BeginChild("child1", ImVec2(0, -50))) { + if (ImGui::BeginChild("child1", ImVec2(0, -100))) { std::string prev_prefix; bool collapse_open = false; @@ -52,7 +52,7 @@ void ui::scenerylist_panel::render() ImGui::NextColumn(); - if (ImGui::BeginChild("child2", ImVec2(0, -50))) { + if (ImGui::BeginChild("child2", ImVec2(0, -100))) { if (selected_scenery) { ImGui::TextWrapped("%s", selected_scenery->name.c_str()); ImGui::TextWrapped("%s", selected_scenery->description.c_str()); @@ -77,7 +77,7 @@ void ui::scenerylist_panel::render() ImGui::NextColumn(); if (selected_scenery) { - if (ImGui::BeginChild("child3", ImVec2(0, -50), false, ImGuiWindowFlags_NoScrollbar)) { + if (ImGui::BeginChild("child3", ImVec2(0, -100), false, ImGuiWindowFlags_NoScrollbar)) { if (!selected_scenery->image_path.empty()) { scenery_desc *desc = const_cast(selected_scenery); desc->image = GfxRenderer.Fetch_Texture(selected_scenery->image_path, true); @@ -106,7 +106,10 @@ void ui::scenerylist_panel::render() if (ImGui::BeginChild("child5", ImVec2(0, 0), false, ImGuiWindowFlags_HorizontalScrollbar)) { for (auto const &trainset : selected_scenery->trainsets) { - ImGui::Selectable("trainset", false); + std::string z = trainset.name; + for (auto const &dyn_desc : trainset.vehicles) + z += dyn_desc.name + "+"; + ImGui::Selectable(z.c_str(), false); } } ImGui::EndChild(); diff --git a/launcher/scenery_scanner.cpp b/launcher/scenery_scanner.cpp index fbbec0e5..15cb7281 100644 --- a/launcher/scenery_scanner.cpp +++ b/launcher/scenery_scanner.cpp @@ -89,22 +89,28 @@ void scenery_scanner::parse_trainset(cParser &parser) parser.getTokens(); while (parser.peek() == "node") { - std::string node_name, datafolder, skinfile, mmdfile, drivertype, loadtype, destination; - int offset, coupling, loadcount; + trainset.vehicles.emplace_back(); + dynamic_desc &dyn = trainset.vehicles.back(); + + std::string datafolder, skinfile, mmdfile; + int offset; parser.getTokens(2); // range_max, range_min parser.getTokens(1, false); // name - parser >> node_name; + parser >> dyn.name; if (!parser.expectToken("dynamic")) break; - parser.getTokens(7); - parser >> datafolder >> skinfile >> mmdfile >> offset >> drivertype >> coupling >> loadcount; + parser.getTokens(7, false); + parser >> datafolder >> skinfile >> mmdfile >> offset >> dyn.drivertype >> dyn.coupling >> dyn.loadcount; + + dyn.skin = datafolder + "/" + skinfile; + dyn.mmd = datafolder + "/" + mmdfile; parser.getTokens(); if (parser.peek() != "enddynamic") { - parser >> loadtype; + parser >> dyn.loadtype; parser.getTokens(); } diff --git a/launcher/scenery_scanner.h b/launcher/scenery_scanner.h index dc388b00..7375db6d 100644 --- a/launcher/scenery_scanner.h +++ b/launcher/scenery_scanner.h @@ -4,6 +4,22 @@ #include "Texture.h" #include "utilities.h" #include "parser.h" +#include "textures_scanner.h" +#include "textures_scanner.h" + +struct dynamic_desc { + std::string name; + std::string drivertype; + std::string skin; + std::string mmd; + + std::string loadtype; + int loadcount; + + std::string coupling; + +// deferred_image mini; +}; struct trainset_desc { std::pair file_bounds; @@ -16,7 +32,7 @@ struct trainset_desc { float offset { 0.f }; float velocity { 0.f }; - std::vector> vehicles; + std::vector vehicles; }; struct scenery_desc {