yaze 0.2.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 "imgui/imgui.h"
5
6#include "app/zelda3/common.h"
11
12namespace yaze {
13namespace editor {
14
15bool IsMouseHoveringOverEntity(const zelda3::GameEntity &entity,
16 ImVec2 canvas_p0, ImVec2 scrolling);
17
18void MoveEntityOnGrid(zelda3::GameEntity *entity, ImVec2 canvas_p0,
19 ImVec2 scrolling, bool free_movement = false);
20
21void HandleEntityDragging(zelda3::GameEntity *entity, ImVec2 canvas_p0,
22 ImVec2 scrolling, bool &is_dragging_entity,
23 zelda3::GameEntity *&dragged_entity,
24 zelda3::GameEntity *&current_entity,
25 bool free_movement = false);
26
28bool DrawOverworldEntrancePopup(zelda3::OverworldEntrance &entrance);
29
31bool DrawExitEditorPopup(zelda3::OverworldExit &exit);
32
34
35bool DrawItemEditorPopup(zelda3::OverworldItem &item);
36
44
45struct SpriteItem {
46 int id;
47 const char *name;
48 static const ImGuiTableSortSpecs *s_current_sort_specs;
49
50 static void SortWithSortSpecs(ImGuiTableSortSpecs *sort_specs,
51 std::vector<SpriteItem> &items) {
53 sort_specs; // Store for access by the compare function.
54 if (items.size() > 1)
55 std::sort(items.begin(), items.end(), SpriteItem::CompareWithSortSpecs);
56 s_current_sort_specs = nullptr;
57 }
58
59 static bool CompareWithSortSpecs(const SpriteItem &a, const SpriteItem &b) {
60 for (int n = 0; n < s_current_sort_specs->SpecsCount; n++) {
61 const ImGuiTableColumnSortSpecs *sort_spec =
62 &s_current_sort_specs->Specs[n];
63 int delta = 0;
64 switch (sort_spec->ColumnUserID) {
66 delta = (a.id - b.id);
67 break;
69 delta = strcmp(a.name + 2, b.name + 2);
70 break;
71 }
72 if (delta != 0)
73 return (sort_spec->SortDirection == ImGuiSortDirection_Ascending)
74 ? delta < 0
75 : delta > 0;
76 }
77 return a.id < b.id; // Fallback
78 }
79};
80
81void DrawSpriteTable(std::function<void(int)> onSpriteSelect);
84
85} // namespace editor
86} // namespace yaze
87
88#endif // YAZE_APP_EDITOR_OVERWORLD_ENTITY_H
A class for managing sprites in the overworld and underworld.
Definition sprite.h:279
Editors are the view controllers for the application.
void DrawExitInserterPopup()
Definition entity.cc:162
void MoveEntityOnGrid(zelda3::GameEntity *entity, ImVec2 canvas_p0, ImVec2 scrolling, bool free_movement)
Definition entity.cc:36
bool DrawSpriteEditorPopup(zelda3::Sprite &sprite)
Definition entity.cc:452
void DrawItemInsertPopup()
Definition entity.cc:312
bool DrawEntranceInserterPopup()
Definition entity.cc:105
void DrawSpriteInserterPopup()
Definition entity.cc:428
void DrawSpriteTable(std::function< void(int)> onSpriteSelect)
Definition entity.cc:379
void HandleEntityDragging(zelda3::GameEntity *entity, ImVec2 canvas_p0, ImVec2 scrolling, bool &is_dragging_entity, zelda3::GameEntity *&dragged_entity, zelda3::GameEntity *&current_entity, bool free_movement)
Definition entity.cc:56
bool DrawOverworldEntrancePopup(zelda3::OverworldEntrance &entrance)
Definition entity.cc:130
bool IsMouseHoveringOverEntity(const zelda3::GameEntity &entity, ImVec2 canvas_p0, ImVec2 scrolling)
Definition entity.cc:21
bool DrawItemEditorPopup(zelda3::OverworldItem &item)
Definition entity.cc:342
@ MyItemColumnID_ID
Definition entity.h:38
@ MyItemColumnID_Description
Definition entity.h:42
@ MyItemColumnID_Action
Definition entity.h:40
@ MyItemColumnID_Quantity
Definition entity.h:41
@ MyItemColumnID_Name
Definition entity.h:39
bool DrawExitEditorPopup(zelda3::OverworldExit &exit)
Definition entity.cc:180
Main namespace for the application.
Definition controller.cc:18
static const ImGuiTableSortSpecs * s_current_sort_specs
Definition entity.h:48
static bool CompareWithSortSpecs(const SpriteItem &a, const SpriteItem &b)
Definition entity.h:59
static void SortWithSortSpecs(ImGuiTableSortSpecs *sort_specs, std::vector< SpriteItem > &items)
Definition entity.h:50
const char * name
Definition entity.h:47