yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
entity.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_OVERWORLD_ENTITY_H
2#define YAZE_APP_EDITOR_OVERWORLD_ENTITY_H
3
4#include <array>
5#include <vector>
6
9#include "imgui/imgui.h"
10#include "zelda3/common.h"
17
18namespace yaze {
19namespace editor {
20
29bool IsMouseHoveringOverEntity(const zelda3::GameEntity& entity,
30 ImVec2 canvas_p0, ImVec2 scrolling,
31 float scale = 1.0f);
32
39bool IsMouseHoveringOverEntity(const zelda3::GameEntity& entity,
40 const gui::CanvasRuntime& rt);
41
50void MoveEntityOnGrid(zelda3::GameEntity* entity, ImVec2 canvas_p0,
51 ImVec2 scrolling, bool free_movement = false,
52 float scale = 1.0f);
53
55bool DrawOverworldEntrancePopup(zelda3::OverworldEntrance& entrance);
56
58bool DrawExitEditorPopup(zelda3::OverworldExit& exit);
59
61
62bool DrawItemEditorPopup(zelda3::OverworldItem& item);
63
73
74struct SpriteItem {
75 int id;
76 const char* name;
77 static const ImGuiTableSortSpecs* s_current_sort_specs;
78
79 static void SortWithSortSpecs(ImGuiTableSortSpecs* sort_specs,
80 std::vector<SpriteItem>& items) {
82 sort_specs; // Store for access by the compare function.
83 if (items.size() > 1)
84 std::sort(items.begin(), items.end(), SpriteItem::CompareWithSortSpecs);
85 s_current_sort_specs = nullptr;
86 }
87
88 static bool CompareWithSortSpecs(const SpriteItem& a, const SpriteItem& b) {
89 for (int n = 0; n < s_current_sort_specs->SpecsCount; n++) {
90 const ImGuiTableColumnSortSpecs* sort_spec =
91 &s_current_sort_specs->Specs[n];
92 int delta = 0;
93 switch (sort_spec->ColumnUserID) {
95 delta = (a.id - b.id);
96 break;
98 delta = strcmp(a.name + 2, b.name + 2);
99 break;
100 }
101 if (delta != 0)
102 return (sort_spec->SortDirection == ImGuiSortDirection_Ascending)
103 ? delta < 0
104 : delta > 0;
105 }
106 return a.id < b.id; // Fallback
107 }
108};
109
110void DrawSpriteTable(std::function<void(int)> onSpriteSelect, int& selected_id);
113
128 zelda3::DiggableTiles* diggable_tiles,
129 const std::vector<gfx::Tile16>& tiles16,
130 const std::array<uint8_t, 0x200>& all_tiles_types);
131
132} // namespace editor
133} // namespace yaze
134
135#endif // YAZE_APP_EDITOR_OVERWORLD_ENTITY_H
Manages diggable tile state as a 512-bit bitfield.
A class for managing sprites in the overworld and underworld.
Definition sprite.h:35
void DrawExitInserterPopup()
Definition entity.cc:158
bool DrawSpriteEditorPopup(zelda3::Sprite &sprite)
Definition entity.cc:512
void DrawItemInsertPopup()
Definition entity.cc:352
bool DrawEntranceInserterPopup()
Definition entity.cc:82
void DrawSpriteInserterPopup()
Definition entity.cc:469
void DrawSpriteTable(std::function< void(int)> onSpriteSelect, int &selected_id)
Definition entity.cc:422
bool DrawOverworldEntrancePopup(zelda3::OverworldEntrance &entrance)
Definition entity.cc:110
bool DrawItemEditorPopup(zelda3::OverworldItem &item)
Definition entity.cc:382
bool DrawDiggableTilesEditorPopup(zelda3::DiggableTiles *diggable_tiles, const std::vector< gfx::Tile16 > &tiles16, const std::array< uint8_t, 0x200 > &all_tiles_types)
Draw popup dialog for editing diggable tiles configuration.
Definition entity.cc:560
void MoveEntityOnGrid(zelda3::GameEntity *entity, ImVec2 canvas_p0, ImVec2 scrolling, bool free_movement, float scale)
Move entity to grid-aligned position based on mouse.
Definition entity.cc:61
SpriteItemColumnID
Column IDs for the sprite table.
Definition entity.h:68
@ SpriteItemColumnID_ID
Definition entity.h:69
@ SpriteItemColumnID_Name
Definition entity.h:70
@ SpriteItemColumnID_Description
Definition entity.h:71
bool DrawExitEditorPopup(zelda3::OverworldExit &exit)
Definition entity.cc:195
bool IsMouseHoveringOverEntity(const zelda3::GameEntity &entity, ImVec2 canvas_p0, ImVec2 scrolling, float scale)
Check if mouse is hovering over an entity.
Definition entity.cc:25
static const ImGuiTableSortSpecs * s_current_sort_specs
Definition entity.h:77
static bool CompareWithSortSpecs(const SpriteItem &a, const SpriteItem &b)
Definition entity.h:88
static void SortWithSortSpecs(ImGuiTableSortSpecs *sort_specs, std::vector< SpriteItem > &items)
Definition entity.h:79
const char * name
Definition entity.h:76