yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
minecart_track_source.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_DUNGEON_MINECART_TRACK_SOURCE_H_
2#define YAZE_APP_EDITOR_DUNGEON_MINECART_TRACK_SOURCE_H_
3
4#include <array>
5#include <cstddef>
6#include <string>
7#include <vector>
8
9#include "absl/status/statusor.h"
10
11namespace yaze::editor {
12
13inline constexpr size_t kMinecartTrackSlotCount = 32;
14
16 int id;
20
21 bool operator==(const MinecartTrack&) const = default;
22};
23
25 size_t offset = 0;
26 size_t length = 0;
27
28 bool operator==(const MinecartTrackSourceTokenSpan&) const = default;
29};
30
31// Losslessly models the three minecart `dw` tables. Parsing retains the exact
32// source bytes and the spans of only the active table tokens. Rendering can
33// therefore replace edited `$hhhh` operands without reconstructing comments,
34// whitespace, guard directives, or the guarded disabled branches.
36 public:
38 std::array<MinecartTrackSourceTokenSpan, kMinecartTrackSlotCount>;
39 using EditableTokenSpans = std::array<FieldTokenSpans, 3>;
40
41 static absl::StatusOr<MinecartTrackSourceDocument> Parse(
42 std::string source_bytes);
43
44 absl::StatusOr<std::string> Render(
45 const std::vector<MinecartTrack>& tracks) const;
46
47 [[nodiscard]] const std::string& source_bytes() const {
48 return source_bytes_;
49 }
50 [[nodiscard]] const std::vector<MinecartTrack>& tracks() const {
51 return tracks_;
52 }
53 [[nodiscard]] const EditableTokenSpans& editable_token_spans() const {
55 }
56 [[nodiscard]] bool guarded() const { return guarded_; }
57
58 private:
59 std::string source_bytes_;
60 std::vector<MinecartTrack> tracks_;
62 bool guarded_ = false;
63};
64
65} // namespace yaze::editor
66
67#endif // YAZE_APP_EDITOR_DUNGEON_MINECART_TRACK_SOURCE_H_
static absl::StatusOr< MinecartTrackSourceDocument > Parse(std::string source_bytes)
const std::vector< MinecartTrack > & tracks() const
const EditableTokenSpans & editable_token_spans() const
std::array< FieldTokenSpans, 3 > EditableTokenSpans
std::array< MinecartTrackSourceTokenSpan, kMinecartTrackSlotCount > FieldTokenSpans
absl::StatusOr< std::string > Render(const std::vector< MinecartTrack > &tracks) const
Editors are the view controllers for the application.
constexpr size_t kMinecartTrackSlotCount
bool operator==(const MinecartTrackSourceTokenSpan &) const =default
bool operator==(const MinecartTrack &) const =default