yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
minecart_collision_tool.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_DUNGEON_UI_MINECART_MINECART_COLLISION_TOOL_H_
2#define YAZE_APP_EDITOR_DUNGEON_UI_MINECART_MINECART_COLLISION_TOOL_H_
3
4#include <functional>
5#include <optional>
6#include <string>
7
8#include "absl/status/statusor.h"
10
11namespace yaze::gui {
12struct CanvasRuntime;
13}
14
15namespace yaze::editor {
16
18 int x = 0;
19 int y = 0;
20};
21
22// Explicit behavior stamps, never inferred from a rail object's artwork.
24 int x = 0;
25 int y = 0;
26 int size = 2; // 1 or 2 cells on the 8 pixel collision grid.
27 uint8_t value = 0xB1;
28 // A move clears this footprint's overrides before stamping the destination.
29 // It does not replace the underlying room collision with a guessed rail.
30 std::optional<MinecartCollisionSource> source = std::nullopt;
31};
32
33absl::StatusOr<zelda3::CustomCollisionMap> PreviewMinecartCollisionStamp(
34 const zelda3::CustomCollisionMap& before,
35 const MinecartCollisionStamp& stamp);
36
37using MinecartCollisionApply = std::function<absl::Status(
39
40// One click stamps; dragging an existing behavior node emits one atomic move.
41// The callback receives the gesture's original map for shared CAS / undo.
43 public:
44 void Draw(const gui::CanvasRuntime& rt,
45 const zelda3::CustomCollisionMap& collision, int room_id,
46 uint8_t value, int size, const MinecartCollisionApply& apply);
47 void Cancel();
48 const std::string& message() const { return message_; }
49 bool dragging() const { return drag_.has_value(); }
50
51 private:
60
61 std::optional<Drag> drag_;
62 int last_frame_ = -1;
63 std::string message_;
64};
65
66} // namespace yaze::editor
67
68#endif
void Draw(const gui::CanvasRuntime &rt, const zelda3::CustomCollisionMap &collision, int room_id, uint8_t value, int size, const MinecartCollisionApply &apply)
Editors are the view controllers for the application.
std::function< absl::Status( int, const zelda3::CustomCollisionMap &, const MinecartCollisionStamp &)> MinecartCollisionApply
absl::StatusOr< zelda3::CustomCollisionMap > PreviewMinecartCollisionStamp(const zelda3::CustomCollisionMap &before, const MinecartCollisionStamp &stamp)
Graphical User Interface (GUI) components for the application.
std::optional< MinecartCollisionSource > source