about summary refs log tree commit diff stats
path: root/tools/util
diff options
context:
space:
mode:
Diffstat (limited to 'tools/util')
-rw-r--r--tools/util/godot_scene.cpp6
-rw-r--r--tools/util/ids_yaml_format.cpp64
2 files changed, 66 insertions, 4 deletions
diff --git a/tools/util/godot_scene.cpp b/tools/util/godot_scene.cpp index 1e77c9e..f788d21 100644 --- a/tools/util/godot_scene.cpp +++ b/tools/util/godot_scene.cpp
@@ -1,10 +1,8 @@
1#include "godot_scene.h" 1#include "godot_scene.h"
2 2
3#include <absl/strings/str_split.h>
4#include <absl/strings/string_view.h>
5
6#include <fstream> 3#include <fstream>
7#include <sstream> 4#include <sstream>
5#include <string_view>
8#include <variant> 6#include <variant>
9 7
10namespace com::fourisland::lingo2_archipelago { 8namespace com::fourisland::lingo2_archipelago {
@@ -23,7 +21,7 @@ struct Heading {
23 GodotInstanceType instance_type; 21 GodotInstanceType instance_type;
24}; 22};
25 23
26Heading ParseTscnHeading(absl::string_view line) { 24Heading ParseTscnHeading(std::string_view line) {
27 std::string original_line(line); 25 std::string original_line(line);
28 Heading heading; 26 Heading heading;
29 27
diff --git a/tools/util/ids_yaml_format.cpp b/tools/util/ids_yaml_format.cpp index 99a8890..5b9113b 100644 --- a/tools/util/ids_yaml_format.cpp +++ b/tools/util/ids_yaml_format.cpp
@@ -56,6 +56,21 @@ IdMappings ReadIdsFromYaml(const std::string& filename) {
56 mastery_it.second.as<uint64_t>(); 56 mastery_it.second.as<uint64_t>();
57 } 57 }
58 } 58 }
59
60 if (room_it.second["keyholders"]) {
61 for (const auto& keyholder_it : room_it.second["keyholders"]) {
62 (*room_ids.mutable_keyholders())[keyholder_it.first
63 .as<std::string>()] =
64 keyholder_it.second.as<uint64_t>();
65 }
66 }
67
68 if (room_it.second["ports"]) {
69 for (const auto& port_it : room_it.second["ports"]) {
70 (*room_ids.mutable_ports())[port_it.first.as<std::string>()] =
71 port_it.second.as<uint64_t>();
72 }
73 }
59 } 74 }
60 } 75 }
61 76
@@ -75,6 +90,13 @@ IdMappings ReadIdsFromYaml(const std::string& filename) {
75 } 90 }
76 } 91 }
77 92
93 if (document["endings"]) {
94 for (const auto& ending_it : document["endings"]) {
95 (*result.mutable_endings())[ending_it.first.as<std::string>()] =
96 ending_it.second.as<uint64_t>();
97 }
98 }
99
78 if (document["special"]) { 100 if (document["special"]) {
79 for (const auto& special_it : document["special"]) { 101 for (const auto& special_it : document["special"]) {
80 (*result.mutable_special())[special_it.first.as<std::string>()] = 102 (*result.mutable_special())[special_it.first.as<std::string>()] =
@@ -82,6 +104,20 @@ IdMappings ReadIdsFromYaml(const std::string& filename) {
82 } 104 }
83 } 105 }
84 106
107 if (document["progressives"]) {
108 for (const auto& prog_it : document["progressives"]) {
109 (*result.mutable_progressives())[prog_it.first.as<std::string>()] =
110 prog_it.second.as<uint64_t>();
111 }
112 }
113
114 if (document["door_groups"]) {
115 for (const auto& group_it : document["door_groups"]) {
116 (*result.mutable_door_groups())[group_it.first.as<std::string>()] =
117 group_it.second.as<uint64_t>();
118 }
119 }
120
85 return result; 121 return result;
86} 122}
87 123
@@ -110,6 +146,19 @@ void WriteIdsAsYaml(const IdMappings& ids, const std::string& filename) {
110 mastery_id; 146 mastery_id;
111 }); 147 });
112 148
149 OperateOnSortedMap(room_ids.keyholders(),
150 [&room_node](const std::string& keyholder_name,
151 uint64_t keyholder_id) {
152 room_node["keyholders"][keyholder_name] =
153 keyholder_id;
154 });
155
156 OperateOnSortedMap(
157 room_ids.ports(),
158 [&room_node](const std::string& port_name, uint64_t port_id) {
159 room_node["ports"][port_name] = port_id;
160 });
161
113 map_node["rooms"][room_name] = std::move(room_node); 162 map_node["rooms"][room_name] = std::move(room_node);
114 }); 163 });
115 164
@@ -127,11 +176,26 @@ void WriteIdsAsYaml(const IdMappings& ids, const std::string& filename) {
127 result["letters"][letter_name] = letter_id; 176 result["letters"][letter_name] = letter_id;
128 }); 177 });
129 178
179 OperateOnSortedMap(ids.endings(), [&result](const std::string& ending_name,
180 uint64_t ending_id) {
181 result["endings"][ending_name] = ending_id;
182 });
183
130 OperateOnSortedMap(ids.special(), [&result](const std::string& special_name, 184 OperateOnSortedMap(ids.special(), [&result](const std::string& special_name,
131 uint64_t special_id) { 185 uint64_t special_id) {
132 result["special"][special_name] = special_id; 186 result["special"][special_name] = special_id;
133 }); 187 });
134 188
189 OperateOnSortedMap(ids.progressives(),
190 [&result](const std::string& prog_name, uint64_t prog_id) {
191 result["progressives"][prog_name] = prog_id;
192 });
193
194 OperateOnSortedMap(ids.door_groups(), [&result](const std::string& group_name,
195 uint64_t group_id) {
196 result["door_groups"][group_name] = group_id;
197 });
198
135 std::ofstream output_stream(filename); 199 std::ofstream output_stream(filename);
136 output_stream << result << std::endl; 200 output_stream << result << std::endl;
137} 201}