feat(editor): entity picker amb noms del factory i flag editable per plantilla
This commit is contained in:
1 parent
f591aa82fd
commit
94213f9fd6
7 files changed
+204
-5
No files matched your search
@@ -3,8 +3,11 @@
|
||||
#ifdef _DEBUG
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Surface;
|
||||
class Tilemap;
|
||||
|
||||
// Mode editor modal del GameScene. Només disponible en Debug — en Release
|
||||
@@ -105,6 +108,25 @@ class Editor {
|
||||
int entity_picker_scroll_{0};
|
||||
int entity_picker_hover_{-1}; // Índex a la llista de noms.
|
||||
|
||||
// Entrada editable del picker. Cada item recorda el nom (clau de
|
||||
// factory + YAML), el surface del sprite (frame 0 com a icona) i la
|
||||
// mida de cada frame al GIF — necessària per clipar el primer frame
|
||||
// quan el GIF és un strip multi-frame.
|
||||
struct EditableEntity {
|
||||
std::string name;
|
||||
std::shared_ptr<Surface> sprite;
|
||||
int frame_w{0};
|
||||
int frame_h{0};
|
||||
};
|
||||
|
||||
// Construïda lazy al primer enter() i preservada entre sessions:
|
||||
// el cost és I/O + parse de N plantilles YAML, però `EntityLoader`
|
||||
// ja les memoritza, així que rellegir només resoldria per sortida i
|
||||
// entrada al editor — no val la pena.
|
||||
void ensureEditableEntities();
|
||||
|
||||
std::vector<EditableEntity> editable_entities_;
|
||||
|
||||
// Selecció en Mode::HAND (índex dins de l'EntityManager; -1 = cap).
|
||||
int hand_selected_idx_{-1};
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user