diff options
| author | aura <nw@moneybot.cc> | 2026-03-04 00:51:18 +0100 |
|---|---|---|
| committer | aura <nw@moneybot.cc> | 2026-03-04 00:51:18 +0100 |
| commit | 890bea19359649695df1b618a41ce580cf3dfbda (patch) | |
| tree | 8bc10ae4e613b0ad57fae9a68cec38c7d59cf067 /src/editor/editor.h | |
| parent | 61aea7311c2e1af78fd9da544499f2198f2da1dd (diff) | |
| parent | be91342733fd56d1e7bafe72e82a8ac4dc67b79d (diff) | |
Merge branch 'ui-rework'
Diffstat (limited to 'src/editor/editor.h')
| -rw-r--r-- | src/editor/editor.h | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/src/editor/editor.h b/src/editor/editor.h index cd42a4e..ad43705 100644 --- a/src/editor/editor.h +++ b/src/editor/editor.h @@ -8,7 +8,6 @@ const F32 EDITOR_DEFAULT_POLY_SIDES = 6.f; const F32 EDITOR_DEFAULT_WALL_HEIGHT = 80.f; const F32 EDITOR_DEFAULT_PLACEMENT_HEIGHT = 0.f; const I32 EDITOR_POLY_SIDES_MIN = 3; -const I32 EDITOR_POLY_SIDES_MAX = 32; enum EditorTools_t { EDITOR_TOOL_NONE, @@ -36,6 +35,15 @@ enum EditorSelectType_t { EDITOR_SELECT_SURFPROPS }; +enum EditorUndoType_t { + EDITOR_UNDO_NONE = 0, + EDITOR_UNDO_CREATE_WALLS = 1, + EDITOR_UNDO_CREATE_POLY = 2 +}; + +struct GAME_EDITOR; +typedef void( *EDITOR_GRID_DEP_CALLBACK )( GAME_EDITOR* e ); + struct GAME_EDITOR_TOOL { U8 type; @@ -68,6 +76,24 @@ struct GAME_EDITOR { struct GUI_EDITOR_PROPVIEW* props; struct GUI_EDITOR_TOOLVIEW* tool; I32 map_select{}; + + I32 props_w{300}; + I32 props_h{300}; + I32 view_h{370}; + + GUI_VIEW* assets{}; + GUI_VIEW* status{}; + I32 assets_scroll{}; + I32 view_mode{}; + I32 view2d_type{}; + + GUI_BASE* header_toolbar{}; + GUI_LABEL* header_viewtype_label{}; + GUI_BUTTON* header_back{}; + GUI_BUTTON* header_mode_2d{}; + GUI_BUTTON* header_mode_3d{}; + GUI_BUTTON* header_mode_sim{}; + GUI_BASE* header_viewtype{}; } gui; @@ -78,7 +104,22 @@ struct GAME_EDITOR { F32 spritesize{}; U8 drawbsp{}; + struct GRID_DEPENDENCY { + void* tag{}; + EDITOR_GRID_DEP_CALLBACK cb{}; + }; + LIST<GRID_DEPENDENCY> grid_dependencies{}; + LIST<GUI_LIST_ENTRY> map_list{}; + + struct EDITOR_UNDO_ACTION { + U8 type{}; + I32 start_idx{}; + LIST<MAP_WALL> walls{}; + LIST<MAP_POLYGON> polys{}; + }; + LIST<EDITOR_UNDO_ACTION> undo_actions{}; + LIST<EDITOR_UNDO_ACTION> redo_actions{}; }; extern GAME_EDITOR* editor_create( struct GAME_DATA* game ); @@ -87,6 +128,10 @@ extern STAT editor_load_map( GAME_EDITOR* e, const char* mapname ); extern STAT editor_save_map( GAME_EDITOR* e ); extern STAT editor_new_map( GAME_EDITOR* e, const char* mapname ); extern STAT editor_close( GAME_EDITOR* e ); +extern void editor_clear_gui_state_refs( GAME_EDITOR* e ); +extern void editor_resize( GAME_EDITOR* e, I32 w, I32 h ); +extern void editor_register_grid_dependency( GAME_EDITOR* e, void* tag, EDITOR_GRID_DEP_CALLBACK cb ); +extern void editor_notify_grid_change( GAME_EDITOR* e ); extern LIST<GUI_LIST_ENTRY>* editor_get_map_list( GAME_EDITOR* e ); @@ -95,6 +140,11 @@ extern void editor_new_map_cb( void* ); extern void editor_create_map_view( GAME_EDITOR* e ); extern void editor_update_properties_column( GAME_EDITOR* e ); +extern void editor_undo_clear( GAME_EDITOR* e ); +extern void editor_undo_record_create_walls( GAME_EDITOR* e, I32 start_idx, I32 count ); +extern void editor_undo_record_create_poly( GAME_EDITOR* e, I32 start_idx ); +extern U8 editor_undo( GAME_EDITOR* e ); +extern U8 editor_redo( GAME_EDITOR* e ); struct GUI_EDITORWINDOW : GUI_WINDOW {}; struct GUI_EDITOR_3DVIEW : GUI_VIEW { @@ -124,6 +174,8 @@ struct GUI_EDITOR_2DVIEW : GUI_VIEW { U8 poly_drag; VEC2 poly_start; VEC2 poly_end; + + I32 pending_wall_undo_idx; }; struct GUI_EDITOR_PROPVIEW : GUI_VIEW { @@ -136,6 +188,8 @@ struct GUI_EDITOR_PROPVIEW : GUI_VIEW { struct GUI_EDITOR_TOOLVIEW : GUI_VIEW { GUI_VIEW* itemview; U8 wallshape_dropdown_open; + I32 scroll; + I32 content_h; }; struct GUI_EDITOR_TEXTUREPICKER : GUI_WINDOW { |
