yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
overworld_property_edit.cc
Go to the documentation of this file.
2
3#include "absl/strings/str_format.h"
4
5namespace yaze::editor {
6
8 switch (field) {
10 return "Area size";
12 return "Area GFX";
14 return "Area palette";
16 return "Main palette";
18 return "Sprite GFX";
20 return "Sprite palette";
22 return "Animated GFX";
24 return "Custom tile GFX";
26 return "Message";
28 return "Music";
30 return "Mosaic";
32 return "Directional mosaic";
34 return "Background color";
36 return "Visual effect";
37 }
38 return "Overworld property";
39}
40
43 switch (scope) {
45 return "map metadata";
47 return "graphics metadata";
49 return "palette metadata";
51 return "music/message metadata";
52 }
53 return "map metadata";
54}
55
57 const OverworldMapMetadataClipboard& clipboard) {
58 if (!clipboard.valid) {
59 return "No map metadata";
60 }
61 return absl::StrFormat(
62 "%s from map 0x%02X",
64 clipboard.source_map_id);
65}
66
68 if (!edit.description.empty()) {
69 return edit.description;
70 }
71 switch (edit.field) {
77 return absl::StrFormat("%s %d on map 0x%02X",
79 edit.map_id);
80 default:
81 return absl::StrFormat("%s on map 0x%02X",
83 edit.map_id);
84 }
85}
86
88 const OverworldMapMetadataClipboard& clipboard,
89 OverworldMapMetadataClipboardScope requested_scope) {
90 return clipboard.valid &&
92 clipboard.scope == requested_scope);
93}
94
95std::vector<OverworldPropertyEdit> BuildOverworldMetadataPasteEdits(
96 int target_map_id, const OverworldMapMetadataClipboard& clipboard,
97 OverworldMapMetadataClipboardScope requested_scope) {
98 std::vector<OverworldPropertyEdit> edits;
99 if (!CanPasteOverworldMapMetadata(clipboard, requested_scope)) {
100 return edits;
101 }
102
103 if (requested_scope == OverworldMapMetadataClipboardScope::kAll) {
104 edits.push_back({target_map_id, OverworldPropertyField::kAreaSize, 0,
105 clipboard.area_size});
106 }
107
108 if (requested_scope == OverworldMapMetadataClipboardScope::kAll ||
110 edits.push_back({target_map_id, OverworldPropertyField::kAreaGraphics, 0,
111 clipboard.area_graphics});
112 edits.push_back({target_map_id, OverworldPropertyField::kAnimatedGraphics,
113 0, clipboard.animated_graphics});
114 for (int i = 0; i < 3; ++i) {
115 edits.push_back({target_map_id, OverworldPropertyField::kSpriteGraphics,
116 i, clipboard.sprite_graphics[i]});
117 }
118 for (int i = 0; i < 8; ++i) {
119 edits.push_back({target_map_id, OverworldPropertyField::kCustomTileset, i,
120 clipboard.custom_tilesets[i]});
121 }
122 }
123
124 if (requested_scope == OverworldMapMetadataClipboardScope::kAll ||
126 edits.push_back({target_map_id, OverworldPropertyField::kAreaPalette, 0,
127 clipboard.area_palette});
128 edits.push_back({target_map_id, OverworldPropertyField::kMainPalette, 0,
129 clipboard.main_palette});
130 edits.push_back({target_map_id,
132 clipboard.area_specific_bg_color});
133 for (int i = 0; i < 3; ++i) {
134 edits.push_back({target_map_id, OverworldPropertyField::kSpritePalette, i,
135 clipboard.sprite_palette[i]});
136 }
137 }
138
139 if (requested_scope == OverworldMapMetadataClipboardScope::kAll) {
140 edits.push_back({target_map_id, OverworldPropertyField::kMosaic, 0,
141 clipboard.mosaic ? 1 : 0});
142 for (int i = 0; i < 4; ++i) {
143 edits.push_back({target_map_id, OverworldPropertyField::kMosaicExpanded,
144 i, clipboard.mosaic_expanded[i] ? 1 : 0});
145 }
146 edits.push_back({target_map_id, OverworldPropertyField::kSubscreenOverlay,
147 0, clipboard.subscreen_overlay});
148 }
149
150 if (requested_scope == OverworldMapMetadataClipboardScope::kAll ||
152 edits.push_back({target_map_id, OverworldPropertyField::kMessageId, 0,
153 clipboard.message_id});
154 for (int i = 0; i < 4; ++i) {
155 edits.push_back({target_map_id, OverworldPropertyField::kMusic, i,
156 clipboard.music[i]});
157 }
158 }
159
160 return edits;
161}
162
163} // namespace yaze::editor
Editors are the view controllers for the application.
std::vector< OverworldPropertyEdit > BuildOverworldMetadataPasteEdits(int target_map_id, const OverworldMapMetadataClipboard &clipboard, OverworldMapMetadataClipboardScope requested_scope)
bool CanPasteOverworldMapMetadata(const OverworldMapMetadataClipboard &clipboard, OverworldMapMetadataClipboardScope requested_scope)
const char * OverworldPropertyFieldName(OverworldPropertyField field)
const char * OverworldMapMetadataClipboardScopeName(OverworldMapMetadataClipboardScope scope)
std::string DescribeOverworldPropertyEdit(const OverworldPropertyEdit &edit)
std::string DescribeOverworldMapMetadataClipboard(const OverworldMapMetadataClipboard &clipboard)