From 6cd4cb719c6bdf180c749f15b8f08a1ef3227c09 Mon Sep 17 00:00:00 2001 From: klingbolt Date: Sat, 7 Sep 2024 21:33:45 -0400 Subject: [PATCH] Change Scale On Map with Zoom to Constant Size on Map --- .../doc/rendering/constant_size_on_map.md | 21 +++++++++++++++ .../doc/rendering/scale_on_map_with_zoom.md | 14 ---------- .../input/pack/markers.bin | 3 +++ .../output_proto/markers.bin | 3 +++ .../output_xml/xml_file.xml | 11 ++++++++ .../proto_constant_size_on_map/testcase.yaml | 5 ++++ .../input/pack/xml_file.xml | 10 +++++++ .../output_proto/markers.bin | 3 +++ .../output_xml/xml_file.xml | 11 ++++++++ .../xml_scale_on_map_with_zoom/testcase.yaml | 5 ++++ xml_converter/proto/waypoint.proto | 2 +- xml_converter/src/icon_gen.cpp | 26 +++++++++---------- xml_converter/src/icon_gen.hpp | 4 +-- 13 files changed, 88 insertions(+), 30 deletions(-) create mode 100644 xml_converter/doc/rendering/constant_size_on_map.md delete mode 100644 xml_converter/doc/rendering/scale_on_map_with_zoom.md create mode 100644 xml_converter/integration_tests/test_cases/proto_constant_size_on_map/input/pack/markers.bin create mode 100644 xml_converter/integration_tests/test_cases/proto_constant_size_on_map/output_proto/markers.bin create mode 100644 xml_converter/integration_tests/test_cases/proto_constant_size_on_map/output_xml/xml_file.xml create mode 100644 xml_converter/integration_tests/test_cases/proto_constant_size_on_map/testcase.yaml create mode 100644 xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/input/pack/xml_file.xml create mode 100644 xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/output_proto/markers.bin create mode 100644 xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/output_xml/xml_file.xml create mode 100644 xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/testcase.yaml diff --git a/xml_converter/doc/rendering/constant_size_on_map.md b/xml_converter/doc/rendering/constant_size_on_map.md new file mode 100644 index 00000000..b73d9932 --- /dev/null +++ b/xml_converter/doc/rendering/constant_size_on_map.md @@ -0,0 +1,21 @@ +--- +name: Constant Size On Map +type: Boolean +applies_to: [Icon] +xml_fields: [ScaleOnMapWithZoom] +protobuf_field: constant_size_on_map +custom_functions: + read.xml: + function: inverted_xml_attribute_to_bool + side_effects: [] + write.xml: + function: bool_to_inverted_xml_attribute + side_effects: [] +--- +Scale the size of the object to be the same scale as the map. + +Notes +===== + +https://blishhud.com/docs/markers/attributes/scaleonmapwithzoom + diff --git a/xml_converter/doc/rendering/scale_on_map_with_zoom.md b/xml_converter/doc/rendering/scale_on_map_with_zoom.md deleted file mode 100644 index ff2d3c99..00000000 --- a/xml_converter/doc/rendering/scale_on_map_with_zoom.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: Scale on Map With Zoom -type: Boolean -applies_to: [Icon] -xml_fields: [ScaleOnMapWithZoom] -protobuf_field: scale_on_map_with_zoom ---- -Scale the size of the object to be the same scale as the map. - -Notes -===== - -https://blishhud.com/docs/markers/attributes/scaleonmapwithzoom - diff --git a/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/input/pack/markers.bin b/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/input/pack/markers.bin new file mode 100644 index 00000000..3f954555 --- /dev/null +++ b/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/input/pack/markers.bin @@ -0,0 +1,3 @@ + +q + My Category 2B \Ï)Cf¦RC{ÔWC 2B \Ï)Cf¦RC{ÔWC¸ 2B \Ï)Cf¦RC{ÔWC¸ 2B \Ï)Cf¦RC{ÔWCB(èÌ“^– \ No newline at end of file diff --git a/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/output_proto/markers.bin b/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/output_proto/markers.bin new file mode 100644 index 00000000..3f954555 --- /dev/null +++ b/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/output_proto/markers.bin @@ -0,0 +1,3 @@ + +q + My Category 2B \Ï)Cf¦RC{ÔWC 2B \Ï)Cf¦RC{ÔWC¸ 2B \Ï)Cf¦RC{ÔWC¸ 2B \Ï)Cf¦RC{ÔWCB(èÌ“^– \ No newline at end of file diff --git a/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/output_xml/xml_file.xml b/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/output_xml/xml_file.xml new file mode 100644 index 00000000..652c2abc --- /dev/null +++ b/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/output_xml/xml_file.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/testcase.yaml b/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/testcase.yaml new file mode 100644 index 00000000..d87f4066 --- /dev/null +++ b/xml_converter/integration_tests/test_cases/proto_constant_size_on_map/testcase.yaml @@ -0,0 +1,5 @@ +input_paths: + "pack": "proto" +expected_stdout: | +expected_stderr: | +expected_returncode: 0 diff --git a/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/input/pack/xml_file.xml b/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/input/pack/xml_file.xml new file mode 100644 index 00000000..9cee2191 --- /dev/null +++ b/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/input/pack/xml_file.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/output_proto/markers.bin b/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/output_proto/markers.bin new file mode 100644 index 00000000..3f954555 --- /dev/null +++ b/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/output_proto/markers.bin @@ -0,0 +1,3 @@ + +q + My Category 2B \Ï)Cf¦RC{ÔWC 2B \Ï)Cf¦RC{ÔWC¸ 2B \Ï)Cf¦RC{ÔWC¸ 2B \Ï)Cf¦RC{ÔWCB(èÌ“^– \ No newline at end of file diff --git a/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/output_xml/xml_file.xml b/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/output_xml/xml_file.xml new file mode 100644 index 00000000..81afab86 --- /dev/null +++ b/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/output_xml/xml_file.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/testcase.yaml b/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/testcase.yaml new file mode 100644 index 00000000..9510c793 --- /dev/null +++ b/xml_converter/integration_tests/test_cases/xml_scale_on_map_with_zoom/testcase.yaml @@ -0,0 +1,5 @@ +input_paths: + "pack": "xml" +expected_stdout: | +expected_stderr: | +expected_returncode: 0 diff --git a/xml_converter/proto/waypoint.proto b/xml_converter/proto/waypoint.proto index 702e07b1..1a028d79 100644 --- a/xml_converter/proto/waypoint.proto +++ b/xml_converter/proto/waypoint.proto @@ -44,7 +44,7 @@ message Icon { int32 minimum_size_on_screen = 20; int32 map_display_size = 21; int32 maximum_size_on_screen = 22; - bool scale_on_map_with_zoom = 23; + bool constant_size_on_map = 23; string tip_description = 24; string tip_name = 25; fixed32 rgba_color = 26; diff --git a/xml_converter/src/icon_gen.cpp b/xml_converter/src/icon_gen.cpp index 13df4abb..36c87c83 100644 --- a/xml_converter/src/icon_gen.cpp +++ b/xml_converter/src/icon_gen.cpp @@ -67,6 +67,9 @@ bool Icon::init_xml_attribute(rapidxml::xml_attribute<>* attribute, vectorcolor.red), &(this->color_is_set)); } + else if (attributename == "scaleonmapwithzoom") { + inverted_xml_attribute_to_bool(attribute, errors, state, &(this->constant_size_on_map), &(this->constant_size_on_map_is_set)); + } else if (attributename == "copy") { xml_attribute_to_string(attribute, errors, state, &(this->copy_clipboard), &(this->copy_clipboard_is_set)); } @@ -202,9 +205,6 @@ bool Icon::init_xml_attribute(rapidxml::xml_attribute<>* attribute, vectorreset_length), &(this->reset_length_is_set)); } - else if (attributename == "scaleonmapwithzoom") { - xml_attribute_to_bool(attribute, errors, state, &(this->scale_on_map_with_zoom), &(this->scale_on_map_with_zoom_is_set)); - } else if (attributename == "schedule") { xml_attribute_to_string(attribute, errors, state, &(this->schedule), &(this->schedule_is_set)); } @@ -285,6 +285,9 @@ vector Icon::as_xml(XMLWriterState* state) const { if (this->color_is_set) { xml_node_contents.push_back(float_to_xml_attribute("Alpha", state, &this->color.alpha)); } + if (this->constant_size_on_map_is_set) { + xml_node_contents.push_back(bool_to_inverted_xml_attribute("ScaleOnMapWithZoom", state, &this->constant_size_on_map)); + } if (this->copy_clipboard_is_set) { xml_node_contents.push_back(string_to_xml_attribute("Copy", state, &this->copy_clipboard)); } @@ -375,9 +378,6 @@ vector Icon::as_xml(XMLWriterState* state) const { if (this->reset_length_is_set) { xml_node_contents.push_back(float_to_xml_attribute("ResetLength", state, &this->reset_length)); } - if (this->scale_on_map_with_zoom_is_set) { - xml_node_contents.push_back(bool_to_xml_attribute("ScaleOnMapWithZoom", state, &this->scale_on_map_with_zoom)); - } if (this->schedule_is_set) { xml_node_contents.push_back(string_to_xml_attribute("Schedule", state, &this->schedule)); } @@ -439,6 +439,10 @@ waypoint::Icon Icon::as_protobuf(ProtoWriterState* state) const { std::function setter = [&proto_icon](uint32_t val) { proto_icon.set_rgba_color(val); }; color_to_proto(this->color, state, setter); } + if (this->constant_size_on_map_is_set) { + std::function setter = [&proto_icon](bool val) { proto_icon.set_constant_size_on_map(val); }; + bool_to_proto(this->constant_size_on_map, state, setter); + } if (this->copy_clipboard_is_set) { std::function setter = [&proto_icon](std::string val) { proto_icon.mutable_trigger()->set_action_copy_clipboard(val); }; string_to_proto(this->copy_clipboard, state, setter); @@ -555,10 +559,6 @@ waypoint::Icon Icon::as_protobuf(ProtoWriterState* state) const { std::function setter = [&proto_icon](float val) { proto_icon.mutable_trigger()->set_reset_length(val); }; float_to_proto(this->reset_length, state, setter); } - if (this->scale_on_map_with_zoom_is_set) { - std::function setter = [&proto_icon](bool val) { proto_icon.set_scale_on_map_with_zoom(val); }; - bool_to_proto(this->scale_on_map_with_zoom, state, setter); - } if (this->schedule_is_set) { std::function setter = [&proto_icon](std::string val) { proto_icon.set_bhdraft__schedule(val); }; string_to_proto(this->schedule, state, setter); @@ -620,6 +620,9 @@ void Icon::parse_protobuf(waypoint::Icon proto_icon, ProtoReaderState* state) { if (proto_icon.rgba_color() != 0) { proto_to_color(proto_icon.rgba_color(), state, &(this->color), &(this->color_is_set)); } + if (proto_icon.constant_size_on_map() != 0) { + proto_to_bool(proto_icon.constant_size_on_map(), state, &(this->constant_size_on_map), &(this->constant_size_on_map_is_set)); + } if (proto_icon.trigger().action_copy_clipboard() != "") { proto_to_string(proto_icon.trigger().action_copy_clipboard(), state, &(this->copy_clipboard), &(this->copy_clipboard_is_set)); } @@ -707,9 +710,6 @@ void Icon::parse_protobuf(waypoint::Icon proto_icon, ProtoReaderState* state) { if (proto_icon.trigger().reset_length() != 0) { proto_to_float(proto_icon.trigger().reset_length(), state, &(this->reset_length), &(this->reset_length_is_set)); } - if (proto_icon.scale_on_map_with_zoom() != 0) { - proto_to_bool(proto_icon.scale_on_map_with_zoom(), state, &(this->scale_on_map_with_zoom), &(this->scale_on_map_with_zoom_is_set)); - } if (proto_icon.bhdraft__schedule() != "") { proto_to_string(proto_icon.bhdraft__schedule(), state, &(this->schedule), &(this->schedule_is_set)); } diff --git a/xml_converter/src/icon_gen.hpp b/xml_converter/src/icon_gen.hpp index 11177895..a49d9c44 100644 --- a/xml_converter/src/icon_gen.hpp +++ b/xml_converter/src/icon_gen.hpp @@ -35,6 +35,7 @@ class Icon : public Parseable { float bounce_height; MarkerCategory category; Color color; + bool constant_size_on_map; std::string copy_clipboard; std::string copy_message; CullChirality cull_chirality; @@ -64,7 +65,6 @@ class Icon : public Parseable { bool render_on_minimap; ResetBehavior reset_behavior; float reset_length; - bool scale_on_map_with_zoom; std::string schedule; float schedule_duration; MarkerCategory show_category; @@ -82,6 +82,7 @@ class Icon : public Parseable { bool bounce_height_is_set = false; bool category_is_set = false; bool color_is_set = false; + bool constant_size_on_map_is_set = false; bool copy_clipboard_is_set = false; bool copy_message_is_set = false; bool cull_chirality_is_set = false; @@ -111,7 +112,6 @@ class Icon : public Parseable { bool render_on_minimap_is_set = false; bool reset_behavior_is_set = false; bool reset_length_is_set = false; - bool scale_on_map_with_zoom_is_set = false; bool schedule_is_set = false; bool schedule_duration_is_set = false; bool show_category_is_set = false;