217 lines
4.5 KiB
C
217 lines
4.5 KiB
C
|
|
#include <raylib.h>
|
|
#define RAYGUI_IMPLEMENTATION
|
|
#include <raygui.h>
|
|
#include <engine/core/utils.h>
|
|
#include <engine/core/thread.h>
|
|
|
|
typedef enum {
|
|
map_edit_mod,
|
|
ui_edit_mod,
|
|
obj_edit_mod,
|
|
item_edit_mod
|
|
} edm_enum;
|
|
|
|
int tool = 0;
|
|
bool saved = false;
|
|
bool mode_enable = false;
|
|
int error = 0;
|
|
Rectangle error_bound = (Rectangle){};
|
|
int editor_mode = 0;
|
|
|
|
void startscreen() {
|
|
BeginDrawing();
|
|
EndDrawing();
|
|
}
|
|
|
|
// ui
|
|
|
|
void top_bar() {
|
|
GuiStatusBar((Rectangle){0, 0, (float)GetScreenWidth(), 30}, "");
|
|
if (GuiDropdownBox((Rectangle){0, 0, 120, 30}, "map;item;obj;ui", &editor_mode, mode_enable))
|
|
mode_enable = !mode_enable;
|
|
}
|
|
|
|
void left_bar() {
|
|
GuiDummyRec((Rectangle){0, 30, 200, (float)GetScreenHeight() - 30}, "Debug");
|
|
}
|
|
|
|
void right_bar() {
|
|
static bool fract = false;
|
|
static bool noise_type = false;
|
|
static Vector2 scroll;
|
|
static Rectangle view;
|
|
GuiScrollPanel((Rectangle){(float)GetScreenWidth() - 200, 30, 200, (float)GetScreenHeight() - 30}, "Setting", (Rectangle){0, 0, 180, (float)GetScreenHeight() - 60}, &scroll, &view);
|
|
BeginScissorMode((int)view.x, (int)view.y, (int)view.width, (int)view.height);
|
|
EndScissorMode();
|
|
}
|
|
|
|
//editor mode
|
|
|
|
void map_editor() {
|
|
// static Camera2D cam = (Camera2D){
|
|
// .offset = {0, 0},
|
|
// .target = {0, 0},
|
|
// .rotation = 0,
|
|
// .zoom = 0.8,
|
|
// };
|
|
|
|
// BeginMode2D(cam);
|
|
// EndMode2D();
|
|
}
|
|
|
|
void item_editor() {
|
|
|
|
// Name
|
|
// type
|
|
// max_stack
|
|
|
|
// description
|
|
|
|
}
|
|
|
|
void obj_editor() {
|
|
|
|
}
|
|
|
|
void ui_editor() {
|
|
|
|
}
|
|
|
|
void drop_down_terminal(bool show_term) {
|
|
Rectangle rec = {200, -200, GetScreenWidth() - 400, 200};
|
|
static int height = 0;
|
|
static Vector2 scroll;
|
|
static Rectangle view;
|
|
static bool enter_pressed;
|
|
static char text_buffer[100];
|
|
|
|
if (show_term) {
|
|
if (height < 230) {
|
|
height += 10;
|
|
}
|
|
} else if (height > 0) {
|
|
height -= 10;
|
|
}
|
|
if (height > 0) {
|
|
GuiScrollPanel((Rectangle){rec.x, rec.y + height, rec.width, rec.height},
|
|
"", (Rectangle){rec.x, rec.y + height, rec.width - 20, rec.height}, &scroll, &view);
|
|
BeginScissorMode(rec.x, rec.y + height, rec.width - 10, rec.height);
|
|
EndScissorMode();
|
|
if (GuiTextBox((Rectangle){200, rec.y + 200 + height, rec.width, 20}, &text_buffer[0], 99, show_term && height == 230))
|
|
enter_pressed = true;
|
|
}
|
|
}
|
|
|
|
void update_terminal_input(bool *term_open) {
|
|
if (IsKeyPressed(KEY_TAB)) {
|
|
*term_open = !*term_open;
|
|
}
|
|
}
|
|
|
|
void update_editor_input(bool *term_open) {
|
|
if (IsKeyPressed(KEY_TAB)) {
|
|
*term_open = !*term_open;
|
|
}
|
|
}
|
|
|
|
//
|
|
|
|
int main(void) {
|
|
|
|
InitWindow(1920, 1080, "Haven Engine");
|
|
SetWindowState(FLAG_BORDERLESS_WINDOWED_MODE | FLAG_WINDOW_RESIZABLE);
|
|
|
|
RenderTexture2D fbo;
|
|
GuiLoadStyle("assets/style_terminal.rgs");
|
|
fbo = LoadRenderTexture(GetScreenWidth() - 400, GetScreenHeight() - 30);
|
|
bool show_term = false;
|
|
|
|
haven_thread_mgr_init();
|
|
|
|
SetTargetFPS(30);
|
|
// EnableEventWaiting();
|
|
while (!WindowShouldClose()) {
|
|
|
|
if (show_term) {
|
|
update_terminal_input(&show_term);
|
|
} else {
|
|
update_editor_input(&show_term);
|
|
}
|
|
|
|
BeginTextureMode(fbo);
|
|
switch (editor_mode) {
|
|
case (map_edit_mod): {
|
|
map_editor();
|
|
break;
|
|
}
|
|
case (item_edit_mod): {
|
|
item_editor();
|
|
break;
|
|
}
|
|
case (obj_edit_mod): {
|
|
obj_editor();
|
|
break;
|
|
}
|
|
case (ui_edit_mod): {
|
|
ui_editor();
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
EndTextureMode();
|
|
|
|
|
|
BeginDrawing();
|
|
ClearBackground(BLACK);
|
|
|
|
DrawTextureRec(fbo.texture, (Rectangle){0, 0, (float)fbo.texture.width, (float)-fbo.texture.height}, (Vector2){200, 30}, WHITE);
|
|
|
|
right_bar();
|
|
left_bar();
|
|
|
|
// switch (error) {
|
|
// case (error_file_not_found): {
|
|
// int result = GuiMessageBox(error_bound, "#152#ERROR!", "this file doesn't exist!!", "OK");
|
|
// if (result == 1) {
|
|
// error = error_dummy;
|
|
// }
|
|
// break;
|
|
// }
|
|
// case (error_file_empty): {
|
|
// int result = GuiMessageBox(error_bound, "#152#ERROR!", "Name Empty!!", "OK");
|
|
// if (result == 1) {
|
|
// error = error_dummy;
|
|
// }
|
|
// break;
|
|
// }
|
|
// case (error_file_corrupted): {
|
|
// int result = GuiMessageBox(error_bound, "#152#ERROR!", "this file is corrupted!!", "OK");
|
|
// if (result == 1) {
|
|
// error = error_dummy;
|
|
// }
|
|
// break;
|
|
// }
|
|
// case (error_file_exist): {
|
|
// int result = GuiMessageBox(error_bound, "#152#ERROR!", "this filename already exist!!", "OK");
|
|
// if (result == 1) {
|
|
// error = error_dummy;
|
|
// }
|
|
// break;
|
|
// }
|
|
// default:break;
|
|
// }
|
|
|
|
drop_down_terminal(show_term);
|
|
top_bar();
|
|
|
|
EndDrawing();
|
|
}
|
|
|
|
haven_thread_mgr_close();
|
|
|
|
CloseWindow();
|
|
return 0;
|
|
}
|