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 "app/zelda3/common.h"
9#include "imgui/imgui.h"
10
11namespace yaze {
12namespace editor {
13
14bool IsMouseHoveringOverEntity(const zelda3::GameEntity &entity,
15 ImVec2 canvas_p0, ImVec2 scrolling);
16
17void MoveEntityOnGrid(zelda3::GameEntity *entity, ImVec2 canvas_p0,
18 ImVec2 scrolling, bool free_movement = false);
19
20
21
23bool DrawOverworldEntrancePopup(zelda3::OverworldEntrance &entrance);
24
26bool DrawExitEditorPopup(zelda3::OverworldExit &exit);
27
29
30bool DrawItemEditorPopup(zelda3::OverworldItem &item);
31
41
42struct SpriteItem {
43 int id;
44 const char *name;
45 static const ImGuiTableSortSpecs *s_current_sort_specs;
46
47 static void SortWithSortSpecs(ImGuiTableSortSpecs *sort_specs,
48 std::vector<SpriteItem> &items) {
50 sort_specs; // Store for access by the compare function.
51 if (items.size() > 1)
52 std::sort(items.begin(), items.end(), SpriteItem::CompareWithSortSpecs);
53 s_current_sort_specs = nullptr;
54 }
55
56 static bool CompareWithSortSpecs(const SpriteItem &a, const SpriteItem &b) {
57 for (int n = 0; n < s_current_sort_specs->SpecsCount; n++) {
58 const ImGuiTableColumnSortSpecs *sort_spec =
59 &s_current_sort_specs->Specs[n];
60 int delta = 0;
61 switch (sort_spec->ColumnUserID) {
63 delta = (a.id - b.id);
64 break;
66 delta = strcmp(a.name + 2, b.name + 2);
67 break;
68 }
69 if (delta != 0)
70 return (sort_spec->SortDirection == ImGuiSortDirection_Ascending)
71 ? delta < 0
72 : delta > 0;
73 }
74 return a.id < b.id; // Fallback
75 }
76};
77
78void DrawSpriteTable(std::function<void(int)> onSpriteSelect);
81
82} // namespace editor
83} // namespace yaze
84
85#endif // YAZE_APP_EDITOR_OVERWORLD_ENTITY_H
A class for managing sprites in the overworld and underworld.
Definition sprite.h:279
void DrawExitInserterPopup()
Definition entity.cc:124
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:436
void DrawItemInsertPopup()
Definition entity.cc:285
bool DrawEntranceInserterPopup()
Definition entity.cc:58
void DrawSpriteInserterPopup()
Definition entity.cc:400
void DrawSpriteTable(std::function< void(int)> onSpriteSelect)
Definition entity.cc:352
bool DrawOverworldEntrancePopup(zelda3::OverworldEntrance &entrance)
Definition entity.cc:82
bool IsMouseHoveringOverEntity(const zelda3::GameEntity &entity, ImVec2 canvas_p0, ImVec2 scrolling)
Definition entity.cc:21
bool DrawItemEditorPopup(zelda3::OverworldItem &item)
Definition entity.cc:315
SpriteItemColumnID
Column IDs for the sprite table.
Definition entity.h:36
@ SpriteItemColumnID_ID
Definition entity.h:37
@ SpriteItemColumnID_Name
Definition entity.h:38
@ SpriteItemColumnID_Description
Definition entity.h:39
bool DrawExitEditorPopup(zelda3::OverworldExit &exit)
Definition entity.cc:153
Main namespace for the application.
static const ImGuiTableSortSpecs * s_current_sort_specs
Definition entity.h:45
static bool CompareWithSortSpecs(const SpriteItem &a, const SpriteItem &b)
Definition entity.h:56
static void SortWithSortSpecs(ImGuiTableSortSpecs *sort_specs, std::vector< SpriteItem > &items)
Definition entity.h:47
const char * name
Definition entity.h:44