#ifndef EDITOR_H #define EDITOR_H #include "config.h" #include #include "resources.h" #include "nuklear.h" #define ASSET_TYPE_NULL 0 #define ASSET_TYPE_IMAGE 1 #define ASSET_TYPE_TEXT 2 #define ASSET_TYPE_SOUND 3 struct fileasset { char *filename; bool searched; short type; void *data; // Struct of the underlying asset - Texture struct, etc }; typedef struct { bool show; struct nk_rect rect; } editor_win; struct editorVars { editor_win stats; editor_win hierarchy; editor_win gamesettings; editor_win viewmode; editor_win debug; editor_win assets; editor_win asset; editor_win repl; editor_win export; editor_win level; editor_win gameobject; editor_win components; editor_win simulate; editor_win prefab; nk_flags text_ed; nk_flags asset_srch; }; struct gameobject; extern int show_desktop; #define NK_MENU_START(VAR) if (editor.VAR.show && !show_desktop) { \ if (editor.VAR.rect.w == 0) editor.VAR.rect = nk_rect_std; \ if (nuke_begin(#VAR, editor.VAR.rect, nuk_std)) { \ editor.VAR.rect = nuke_win_get_bounds(); #define NK_MENU_END() } nuke_stop(); } #define NK_FORCE(VAR) if (editor.VAR.rect.w == 0) editor.VAR.rect = nk_rect_std; \ if (!show_desktop && nuke_begin(#VAR, editor.VAR.rect, nuk_std)) { \ editor.VAR.rect = nuke_win_get_bounds(); #define NK_FORCE_END() nuke_stop(); } #define NEGATE(VAR) VAR = ! VAR struct vec; struct gameproject; struct sprite; extern struct gameproject *cur_project; extern struct vec *projects; struct Texture; struct window; void pickGameObject(int pickID); int is_allowed_extension(const char *ext); void editor_init(struct window *window); void editor_input(); void editor_render(); int editor_wantkeyboard(); void editor_save(); void editor_makenewobject(); void editor_project_gui(); void editor_selectasset(struct fileasset *asset); void editor_selectasset_str(const char *path); void editor_asset_gui(struct fileasset *asset); void editor_asset_tex_gui(struct Texture *tex); void editor_asset_text_gui(char *text); void editor_level_btn(char *level); void editor_prefab_btn(char *prefab); void game_start(); void game_resume(); void game_stop(); void game_pause(); void get_levels(); int obj_gui_hierarchy(struct gameobject *selected); void sprite_gui(struct sprite *sprite); #endif