mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 18:39:18 +02:00
scenery parser work
This commit is contained in:
@@ -21,7 +21,7 @@ void ui::scenerylist_panel::render()
|
|||||||
if (ImGui::Begin(panelname.c_str(), &is_open)) {
|
if (ImGui::Begin(panelname.c_str(), &is_open)) {
|
||||||
ImGui::Columns(3);
|
ImGui::Columns(3);
|
||||||
|
|
||||||
if (ImGui::BeginChild("child1", ImVec2(0, -50))) {
|
if (ImGui::BeginChild("child1", ImVec2(0, -100))) {
|
||||||
std::string prev_prefix;
|
std::string prev_prefix;
|
||||||
bool collapse_open = false;
|
bool collapse_open = false;
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ void ui::scenerylist_panel::render()
|
|||||||
|
|
||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
|
|
||||||
if (ImGui::BeginChild("child2", ImVec2(0, -50))) {
|
if (ImGui::BeginChild("child2", ImVec2(0, -100))) {
|
||||||
if (selected_scenery) {
|
if (selected_scenery) {
|
||||||
ImGui::TextWrapped("%s", selected_scenery->name.c_str());
|
ImGui::TextWrapped("%s", selected_scenery->name.c_str());
|
||||||
ImGui::TextWrapped("%s", selected_scenery->description.c_str());
|
ImGui::TextWrapped("%s", selected_scenery->description.c_str());
|
||||||
@@ -77,7 +77,7 @@ void ui::scenerylist_panel::render()
|
|||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
|
|
||||||
if (selected_scenery) {
|
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()) {
|
if (!selected_scenery->image_path.empty()) {
|
||||||
scenery_desc *desc = const_cast<scenery_desc*>(selected_scenery);
|
scenery_desc *desc = const_cast<scenery_desc*>(selected_scenery);
|
||||||
desc->image = GfxRenderer.Fetch_Texture(selected_scenery->image_path, true);
|
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)) {
|
if (ImGui::BeginChild("child5", ImVec2(0, 0), false, ImGuiWindowFlags_HorizontalScrollbar)) {
|
||||||
for (auto const &trainset : selected_scenery->trainsets) {
|
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();
|
} ImGui::EndChild();
|
||||||
|
|
||||||
|
|||||||
@@ -89,22 +89,28 @@ void scenery_scanner::parse_trainset(cParser &parser)
|
|||||||
|
|
||||||
parser.getTokens();
|
parser.getTokens();
|
||||||
while (parser.peek() == "node") {
|
while (parser.peek() == "node") {
|
||||||
std::string node_name, datafolder, skinfile, mmdfile, drivertype, loadtype, destination;
|
trainset.vehicles.emplace_back();
|
||||||
int offset, coupling, loadcount;
|
dynamic_desc &dyn = trainset.vehicles.back();
|
||||||
|
|
||||||
|
std::string datafolder, skinfile, mmdfile;
|
||||||
|
int offset;
|
||||||
|
|
||||||
parser.getTokens(2); // range_max, range_min
|
parser.getTokens(2); // range_max, range_min
|
||||||
parser.getTokens(1, false); // name
|
parser.getTokens(1, false); // name
|
||||||
parser >> node_name;
|
parser >> dyn.name;
|
||||||
|
|
||||||
if (!parser.expectToken("dynamic"))
|
if (!parser.expectToken("dynamic"))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
parser.getTokens(7);
|
parser.getTokens(7, false);
|
||||||
parser >> datafolder >> skinfile >> mmdfile >> offset >> drivertype >> coupling >> loadcount;
|
parser >> datafolder >> skinfile >> mmdfile >> offset >> dyn.drivertype >> dyn.coupling >> dyn.loadcount;
|
||||||
|
|
||||||
|
dyn.skin = datafolder + "/" + skinfile;
|
||||||
|
dyn.mmd = datafolder + "/" + mmdfile;
|
||||||
|
|
||||||
parser.getTokens();
|
parser.getTokens();
|
||||||
if (parser.peek() != "enddynamic") {
|
if (parser.peek() != "enddynamic") {
|
||||||
parser >> loadtype;
|
parser >> dyn.loadtype;
|
||||||
parser.getTokens();
|
parser.getTokens();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,22 @@
|
|||||||
#include "Texture.h"
|
#include "Texture.h"
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
#include "parser.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 {
|
struct trainset_desc {
|
||||||
std::pair<int, int> file_bounds;
|
std::pair<int, int> file_bounds;
|
||||||
@@ -16,7 +32,7 @@ struct trainset_desc {
|
|||||||
float offset { 0.f };
|
float offset { 0.f };
|
||||||
float velocity { 0.f };
|
float velocity { 0.f };
|
||||||
|
|
||||||
std::vector<std::pair<std::string, int>> vehicles;
|
std::vector<dynamic_desc> vehicles;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct scenery_desc {
|
struct scenery_desc {
|
||||||
|
|||||||
Reference in New Issue
Block a user