From 238d1518a3baa59464bf4db09a41cbf476cd5e4e Mon Sep 17 00:00:00 2001 From: Shariq Shah Date: Mon, 6 Apr 2020 21:34:51 +1000 Subject: [PATCH] Implemented in-game hud, keys in posession, key required for door and other game gui skinning --- assets/fonts/6809_chargen.ttf | Bin 0 -> 286972 bytes assets/scenes/scene_1.symtres | 5 +- assets/textures/gui_skin.tga | Bin 0 -> 6651 bytes src/common/version.h | 2 +- src/game/console.c | 2 +- src/game/door.c | 10 +- src/game/door.h | 7 ++ src/game/game.c | 6 +- src/game/game.h | 3 +- src/game/gui.c | 15 +-- src/game/gui_game.c | 179 +++++++++++++++++++++++++++++----- src/game/gui_game.h | 30 +++++- src/game/renderer.c | 3 +- src/game/scene.c | 5 +- todo.txt | 8 +- 15 files changed, 213 insertions(+), 62 deletions(-) create mode 100644 assets/fonts/6809_chargen.ttf create mode 100644 assets/textures/gui_skin.tga diff --git a/assets/fonts/6809_chargen.ttf b/assets/fonts/6809_chargen.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bb8160875b6d3b067afb6329e84c5a20128786bf GIT binary patch literal 286972 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

F+^ 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
`lOYzn!}uhh`ncSU7W=SrjmzAy5G|@swIcNa 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 literal 0 HcmV?d00001 diff --git a/assets/scenes/scene_1.symtres b/assets/scenes/scene_1.symtres index 6919499..4c001d5 100755 --- a/assets/scenes/scene_1.symtres +++ b/assets/scenes/scene_1.symtres @@ -12,17 +12,16 @@ Scene_Config debug_draw_enabled : false debug_draw_mode : 0 ambient_light : 0.100 0.100 0.100 - next_scene : scene_2 } Player { type : 2 scale : 1.000 1.000 1.000 - rotation : 0.000 -0.612 0.000 0.792 + rotation : 0.000 -0.956 0.000 0.298 active : true player_key_mask : 0 - position : -33.501 2.167 -45.463 + position : -31.232 2.167 -49.335 player_health : 100 name : Player bounding_box_min : -1.500 -1.500 -1.000 diff --git a/assets/textures/gui_skin.tga b/assets/textures/gui_skin.tga new file mode 100644 index 0000000000000000000000000000000000000000..e06461925952f22c030d2076072b82da056fde73 GIT binary patch literal 6651 zcmeH}J!lkB6oqGYHHMWXXi&F^VqxQgHkQG35f(+kKP)V4T&#kfVv~$fSL3P#!AcQq zg4o&Eq+LO*?Gy>xL@mT_5gq4zaqgH9-fUdmiE*a5-1pu&@7z1@z8}vkdG`69zq9|Q znvH6;S_tKRlu7!Ys_6}1`s6eEOs$4Y5HX4}C7Hp=$ZW&2zT#uyp6s7!hj6FW?38;~ z;9zLzc?oaHER&2zlD^dXWVXocmKjkj2l1?rQE>j9#WM$rZ>Dmt9pWXCcCFDUmmh_< zP)pSyw2HzVmN_Fct~{pktdCJ}edMu9G=g|Ns0e;Gk&Y?w2Qsrt<^`VhF$xYwk$=@e zMj5G5=u{ZXLs~DD%$#zY$CIItQE)IyE6%MqYEifa#XKl8A~P;CD>EnaMY*-{tdCJ} zFyIyzj*Rq@*DQZX@^ZYB2kuGts&lKEE~ga71AB{_WbxWc^}BH7OCO`)V8AV8uDd>? zeEokxxBF7QqC#3psy&pX#-kGL&GC?p+8Vq>>@m^RMb8-R;zUyFB$MPp#HCs zv(NvD_=TA<;I`uR!Z2($BNNIi^TKn*#dAu~?M6D!wVX;a{2TV93*U?*n}@`;;KH+f z3TnbcHm8!NVv(&zy2wk$r3A_F@2_bN7yd>p@(vP(>cU@-@fS>_l1c)g^fwtPV4_&5 zZWUOM=3l5lNQVDFpe{VAO5`;peuN9puM~dFM0TW-STvC~8fl8fbtyqI{AY^Cg{S-^ z@(L0a?ZQ*u!k;yfU8$rXUdRnby3dAlDRG|sXMojuIxbp^Jjj%*Ox3>ZB^cU)Bagc? rH~Ejqiy_|&`FW6^glp&|R5|NAe)PoX$=b2nk;8jV9jF}|-Ru1T=}anK literal 0 HcmV?d00001 diff --git a/src/common/version.h b/src/common/version.h index f5fe498..33e0877 100755 --- a/src/common/version.h +++ b/src/common/version.h @@ -4,7 +4,7 @@ /* Auto generated version file. DO NOT MODIFY */ #define SYMMETRY_VERSION_MAJOR 0 #define SYMMETRY_VERSION_MINOR 1 -#define SYMMETRY_VERSION_REVISION 353 +#define SYMMETRY_VERSION_REVISION 354 #define SYMMETRY_VERSION_BRANCH "dev" #endif \ No newline at end of file diff --git a/src/game/console.c b/src/game/console.c index 58807de..0d79e2e 100755 --- a/src/game/console.c +++ b/src/game/console.c @@ -41,7 +41,7 @@ void console_init(struct Console* console) console->visible = false; console->scroll_to_bottom = true; - console->text_region_height = 22.f; + console->text_region_height = 30.f; console->line_height = 20.f; console->current_message_index = -1; console->current_history_index = 0; diff --git a/src/game/door.c b/src/game/door.c index ff81f39..3b0b566 100644 --- a/src/game/door.c +++ b/src/game/door.c @@ -5,6 +5,7 @@ #include "transform.h" #include "trigger.h" #include "event.h" +#include "gui_game.h" #include "sound_source.h" #include "../common/log.h" #include "../common/parser.h" @@ -13,10 +14,10 @@ static void door_on_scene_loaded(struct Event* event, void* door_ptr); static void door_on_trigger(struct Event* event, void* door_ptr); -static const vec4 KEY_INDICATOR_COLOR_RED = { 0.87, 0.32, 0.40, 1.0f }; -static const vec4 KEY_INDICATOR_COLOR_GREEN = { 0.53, 0.67, 0.28, 1.0f }; -static const vec4 KEY_INDICATOR_COLOR_BLUE = { 0.47, 0.67, 0.89, 1.0f }; -static const vec4 KEY_INDICATOR_COLOR_DISABLED = { 0.1, 0.1, 0.1, 1.0f }; +vec4 KEY_INDICATOR_COLOR_RED = { 0.87, 0.32, 0.40, 1.0f }; +vec4 KEY_INDICATOR_COLOR_GREEN = { 0.53, 0.67, 0.28, 1.0f }; +vec4 KEY_INDICATOR_COLOR_BLUE = { 0.47, 0.67, 0.89, 1.0f }; +vec4 KEY_INDICATOR_COLOR_DISABLED = { 0.1, 0.1, 0.1, 1.0f }; void door_init(struct Door* door, int mask) { @@ -93,6 +94,7 @@ void door_update(struct Door* door, struct Scene* scene, float dt) sound_source_play(game_state->sound, door->sound); door->lock_sound_played = true; } + gui_game_show_door_locked_dialog(game_state->gui_game, door); } } break; diff --git a/src/game/door.h b/src/game/door.h index 5d47a41..49c4f7c 100644 --- a/src/game/door.h +++ b/src/game/door.h @@ -1,6 +1,8 @@ #ifndef DOOR_H #define DOOR_H +#include "../common/linmath.h" + struct Door; struct Static_Mesh; struct Sound_Source; @@ -16,6 +18,11 @@ enum Door_State DOOR_STATE_MAX }; +extern vec4 KEY_INDICATOR_COLOR_RED; +extern vec4 KEY_INDICATOR_COLOR_GREEN; +extern vec4 KEY_INDICATOR_COLOR_BLUE; +extern vec4 KEY_INDICATOR_COLOR_DISABLED; + void door_init(struct Door* door, int mask); void door_reset(struct Door* door); void door_update(struct Door* door, struct Scene* scene, float dt); diff --git a/src/game/game.c b/src/game/game.c index 4d47b58..f751810 100755 --- a/src/game/game.c +++ b/src/game/game.c @@ -113,7 +113,6 @@ bool game_init(struct Window* window, struct Hashmap* cvars) texture_init(); framebuffer_init(); gui_init(game_state->gui_editor); - gui_init(game_state->gui_game); gui_game_init(game_state->gui_game); console_init(game_state->console); geom_init(); @@ -538,7 +537,7 @@ bool game_run(void) if(frame_time > MAX_FRAME_TIME) frame_time = (1.f / 60.f); /* To deal with resuming from breakpoint we artificially set delta time */ accumulator += frame_time; - struct Gui* gui = game_state->game_mode == GAME_MODE_EDITOR ? game_state->gui_editor : game_state->gui_game; + struct Gui* gui = game_state->game_mode == GAME_MODE_EDITOR ? game_state->gui_editor : game_state->gui_game->gui; gui_input_begin(gui); event_manager_poll_events(game_state->event_manager); gui_input_end(gui); @@ -595,7 +594,7 @@ void game_update(float dt) //game_debug(dt); //game_debug_gui(dt); - console_update(game_state->console, game_state->game_mode == GAME_MODE_EDITOR ? game_state->gui_editor : game_state->gui_game, dt); + console_update(game_state->console, game_state->game_mode == GAME_MODE_EDITOR ? game_state->gui_editor : game_state->gui_game->gui, dt); if(game_state->update_scene) scene_update(game_state->scene, dt); @@ -1983,7 +1982,6 @@ void game_cleanup(void) renderer_cleanup(game_state->renderer); gui_game_cleanup(game_state->gui_game); gui_cleanup(game_state->gui_editor); - gui_cleanup(game_state->gui_game); console_destroy(game_state->console); geom_cleanup(); framebuffer_cleanup(); diff --git a/src/game/game.h b/src/game/game.h index bbddc0a..7f9763c 100755 --- a/src/game/game.h +++ b/src/game/game.h @@ -14,6 +14,7 @@ struct Event_Manager; struct Editor; struct Hashmap; struct Sound; +struct Game_Gui; enum Game_Mode { @@ -34,7 +35,7 @@ struct Game_State struct Scene* scene; struct Console* console; struct Gui* gui_editor; - struct Gui* gui_game; + struct Game_Gui* gui_game; struct Event_Manager* event_manager; struct Editor* editor; struct Hashmap* cvars; diff --git a/src/game/gui.c b/src/game/gui.c index 8937af6..3ef5be0 100755 --- a/src/game/gui.c +++ b/src/game/gui.c @@ -12,6 +12,7 @@ #include "../system/platform.h" #include "../system/file_io.h" #include "event.h" +#include "gui_game.h" #include #include @@ -156,7 +157,7 @@ void gui_render(struct Gui* gui, enum nk_anti_aliasing AA) scale.y = (float)display_height/(float)height; /* setup global state */ - glViewport(0,0,display_width,display_height); + glViewport(0, 0, display_width, display_height); glEnable(GL_BLEND); glBlendEquation(GL_FUNC_ADD); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); @@ -189,7 +190,7 @@ void gui_render(struct Gui* gui, enum nk_anti_aliasing AA) /* fill convert configuration */ struct nk_convert_config config; static const struct nk_draw_vertex_layout_element vertex_layout[] = - { + { {NK_VERTEX_POSITION, NK_FORMAT_FLOAT, NK_OFFSETOF(struct Gui_Vertex, pos)}, {NK_VERTEX_TEXCOORD, NK_FORMAT_FLOAT, NK_OFFSETOF(struct Gui_Vertex, uv)}, {NK_VERTEX_COLOR, NK_FORMAT_R8G8B8A8, NK_OFFSETOF(struct Gui_Vertex, col)}, @@ -271,7 +272,7 @@ void gui_on_key(const struct Event* event) struct Game_State* game_state = game_state_get(); int key = event->key.key; bool mod_ctrl = event->key.mod_ctrl; - struct nk_context* ctx = game_state->game_mode == GAME_MODE_EDITOR ? &game_state->gui_editor->context : &game_state->gui_game->context; + struct nk_context* ctx = game_state->game_mode == GAME_MODE_EDITOR ? &game_state->gui_editor->context : &game_state->gui_game->gui->context; int down = event->type == EVT_KEY_PRESSED ? 1 : 0; @@ -345,7 +346,7 @@ void gui_on_mousebutton(const struct Event* event) int x = event->mousebutton.x; int y = event->mousebutton.y; int down = event->type == EVT_MOUSEBUTTON_PRESSED ? 1 : 0; - struct nk_context* ctx = game_state->game_mode == GAME_MODE_EDITOR ? &game_state->gui_editor->context : &game_state->gui_game->context; + struct nk_context* ctx = game_state->game_mode == GAME_MODE_EDITOR ? &game_state->gui_editor->context : &game_state->gui_game->gui->context; if(button == MSB_LEFT) nk_input_button(ctx, NK_BUTTON_LEFT, x, y, down); if(button == MSB_MIDDLE) nk_input_button(ctx, NK_BUTTON_MIDDLE, x, y, down); @@ -359,7 +360,7 @@ void gui_on_mousemotion(const struct Event* event) int y = event->mousemotion.y; int xrel = event->mousemotion.xrel; int yrel = event->mousemotion.yrel; - struct nk_context* ctx = game_state->game_mode == GAME_MODE_EDITOR ? &game_state->gui_editor->context : &game_state->gui_game->context; + struct nk_context* ctx = game_state->game_mode == GAME_MODE_EDITOR ? &game_state->gui_editor->context : &game_state->gui_game->gui->context; if(ctx->input.mouse.grabbed) { @@ -375,7 +376,7 @@ void gui_on_mousemotion(const struct Event* event) void gui_on_textinput(const struct Event* event) { struct Game_State* game_state = game_state_get(); - struct nk_context* ctx = game_state->game_mode == GAME_MODE_EDITOR ? &game_state->gui_editor->context : &game_state->gui_game->context; + struct nk_context* ctx = game_state->game_mode == GAME_MODE_EDITOR ? &game_state->gui_editor->context : &game_state->gui_game->gui->context; nk_glyph glyph; memcpy(glyph, event->text_input.text, NK_UTF_SIZE); nk_input_glyph(ctx, glyph); @@ -386,7 +387,7 @@ void gui_on_mousewheel(const struct Event* event) int x = event->mousewheel.x; int y = event->mousewheel.y; struct Game_State* game_state = game_state_get(); - struct nk_context* ctx = game_state->game_mode == GAME_MODE_EDITOR ? &game_state->gui_editor->context : &game_state->gui_game->context; + struct nk_context* ctx = game_state->game_mode == GAME_MODE_EDITOR ? &game_state->gui_editor->context : &game_state->gui_game->gui->context; nk_input_scroll(ctx, nk_vec2(x, y)); } diff --git a/src/game/gui_game.c b/src/game/gui_game.c index ee948c7..eab0e4c 100644 --- a/src/game/gui_game.c +++ b/src/game/gui_game.c @@ -1,14 +1,18 @@ #include "gui_game.h" -#include "gui.h" #include "game.h" #include "scene.h" #include "../common/log.h" #include "../system/platform.h" #include "event.h" #include "input.h" +#include "texture.h" +#include "door.h" -static bool show_next_level_dialog = false; -static bool show_restart_level_dialog = false; +#define SKIN_TEXTURE_WIDTH 256 +#define SKIN_TEXTURE_HEIGHT 256 + +static float key_opacity_full = 1.f; +static float key_opacity_reduced = 0.3f; static void gui_game_pause_menu(struct nk_context* context); static void gui_game_next_level_dialog(struct nk_context* context); @@ -16,41 +20,91 @@ static void gui_game_restart_level_dialog(struct nk_context* context); static void gui_game_on_player_death(struct Event* event); static void gui_game_on_scene_cleared(struct Event* event); -void gui_game_init(struct Gui* game_gui) +void gui_game_init(struct Game_Gui* game_gui) { - gui_theme_set(game_state_get()->gui_game, GT_RED); + game_gui->gui = calloc(1, sizeof(*game_gui->gui)); + gui_init(game_gui->gui); + game_gui->show_next_level_dialog = false; + game_gui->show_restart_level_dialog = false; + game_gui->skin.skin_texture = texture_create_from_file("gui_skin.tga", TU_DIFFUSE); + game_gui->skin.button = nk_subimage_id(game_gui->skin.skin_texture, SKIN_TEXTURE_WIDTH, SKIN_TEXTURE_HEIGHT, nk_recti(32, 32, 128, 48)); + game_gui->skin.button_active = nk_subimage_id(game_gui->skin.skin_texture, SKIN_TEXTURE_WIDTH, SKIN_TEXTURE_HEIGHT, nk_recti(32, 32, 128, 48)); + game_gui->skin.button_hover = nk_subimage_id(game_gui->skin.skin_texture, SKIN_TEXTURE_WIDTH, SKIN_TEXTURE_HEIGHT, nk_recti(32, 32, 128, 48)); + game_gui->skin.hp = nk_subimage_id(game_gui->skin.skin_texture, SKIN_TEXTURE_WIDTH, SKIN_TEXTURE_HEIGHT, nk_recti(32, 0, 32, 32)); + game_gui->skin.key = nk_subimage_id(game_gui->skin.skin_texture, SKIN_TEXTURE_WIDTH, SKIN_TEXTURE_HEIGHT, nk_recti(0, 32, 32, 32)); + + struct nk_context* context = &game_gui->gui->context; + context->style.button.normal = nk_style_item_image(game_gui->skin.button); + context->style.button.active = nk_style_item_image(game_gui->skin.button_active); + context->style.button.hover = nk_style_item_image(game_gui->skin.button_hover); + + context->style.window.border_color = nk_rgba_f(0.f, 0.f, 0.f, 1.f); + context->style.window.background = nk_rgba_f(0.f, 0.f, 0.f, 1.f); + context->style.window.fixed_background = nk_style_item_image(nk_subimage_id(game_gui->skin.skin_texture, + SKIN_TEXTURE_WIDTH, SKIN_TEXTURE_HEIGHT, + nk_recti(32, 32, 128, 48))); + //context->style.window.fixed_background = nk_style_item_color(nk_rgba_f(0.f, 0.f, 0.f, 0.05f)); + + gui_font_set(game_gui->gui, "6809_chargen.ttf", 30.f); + struct Event_Manager* event_manager = game_state_get()->event_manager; event_manager_subscribe(event_manager, EVT_PLAYER_DIED, &gui_game_on_player_death); event_manager_subscribe(event_manager, EVT_SCENE_CLEARED, &gui_game_on_scene_cleared); } -void gui_game_cleanup(struct Gui* game_gui) +void gui_game_cleanup(struct Game_Gui* game_gui) { + texture_remove(game_gui->skin.skin_texture); + gui_cleanup(game_gui->gui); + free(game_gui->gui); + struct Event_Manager* event_manager = game_state_get()->event_manager; event_manager_unsubscribe(event_manager, EVT_PLAYER_DIED, &gui_game_on_player_death); event_manager_unsubscribe(event_manager, EVT_SCENE_CLEARED, &gui_game_on_scene_cleared); } -void gui_game_update(struct Gui* gui_game, float dt) +void gui_game_update(struct Game_Gui* game_gui, float dt) { - struct nk_context* context = &gui_game->context; + struct nk_context* context = &game_gui->gui->context; struct Game_State* game_state = game_state_get(); if(game_state->game_mode == GAME_MODE_GAME) { // HUD + int hud_offset_x = 50; + int hud_offset_y = 50; + int hp_gui_width = 130; + int hp_gui_height = 48; struct Player* player = &game_state->scene->player; - if(nk_begin(context, "Game Gui", nk_rect(50, 50, 200, 100), NK_WINDOW_CLOSABLE)) + if(nk_begin(context, "HP Gui", nk_recti(hud_offset_x, hud_offset_y, hp_gui_width, hp_gui_height), NK_WINDOW_BACKGROUND | NK_WINDOW_NO_SCROLLBAR)) + { + nk_layout_row_dynamic(context, 40, 2); + nk_image_color(context, game_gui->skin.hp, nk_rgba_f(1.f, 1.f, 1.f, 1.f)); + nk_labelf(context, NK_TEXT_ALIGN_CENTERED | NK_TEXT_ALIGN_MIDDLE, "%d", player->health); + nk_end(context); + } + + int key_gui_width = 192; + int key_gui_height = 48; + int display_width = 0; + int display_height = 0; + window_get_drawable_size(game_state_get()->window, &display_width, &display_height); + int key_gui_pos_x = display_width - (key_gui_width + hud_offset_x); + int key_gui_pos_y = hud_offset_y; + if(nk_begin(context, "Key Gui", nk_recti(key_gui_pos_x, key_gui_pos_y, key_gui_width, key_gui_height), NK_WINDOW_BACKGROUND | NK_WINDOW_NO_SCROLLBAR)) { - nk_layout_row_dynamic(context, 30, 1); - nk_labelf(context, NK_TEXT_ALIGN_CENTERED | NK_TEXT_ALIGN_MIDDLE, "HP: %d", player->health); + nk_layout_row_dynamic(context, 40, 3); + nk_image_color(context, game_gui->skin.key, nk_rgba_f(KEY_INDICATOR_COLOR_RED.x, KEY_INDICATOR_COLOR_RED.y, KEY_INDICATOR_COLOR_RED.z, (player->key_mask & DOOR_KEY_MASK_RED) == DOOR_KEY_MASK_RED ? key_opacity_full : key_opacity_reduced)); + nk_image_color(context, game_gui->skin.key, nk_rgba_f(KEY_INDICATOR_COLOR_GREEN.x, KEY_INDICATOR_COLOR_GREEN.y, KEY_INDICATOR_COLOR_GREEN.z, (player->key_mask & DOOR_KEY_MASK_GREEN) == DOOR_KEY_MASK_GREEN ? key_opacity_full : key_opacity_reduced)); + nk_image_color(context, game_gui->skin.key, nk_rgba_f(KEY_INDICATOR_COLOR_BLUE.x, KEY_INDICATOR_COLOR_BLUE.y, KEY_INDICATOR_COLOR_BLUE.z, (player->key_mask & DOOR_KEY_MASK_BLUE) == DOOR_KEY_MASK_BLUE ? key_opacity_full : key_opacity_reduced)); + nk_end(context); } - if(show_next_level_dialog) + if(game_gui->show_next_level_dialog) gui_game_next_level_dialog(context); - if(show_restart_level_dialog) + if(game_gui->show_restart_level_dialog) gui_game_restart_level_dialog(context); } else if(game_state->game_mode == GAME_MODE_PAUSE) @@ -60,6 +114,84 @@ void gui_game_update(struct Gui* gui_game, float dt) } +void gui_game_show_door_locked_dialog(struct Game_Gui* game_gui, struct Door* door) +{ + struct nk_context* context = &game_gui->gui->context; + struct Game_State* game_state = game_state_get(); + if(game_state->game_mode == GAME_MODE_GAME) + { + struct Player* player = &game_state->scene->player; + int label_flags = NK_TEXT_ALIGN_CENTERED | NK_TEXT_ALIGN_MIDDLE; + int key_needed_gui_width = 300; + int key_needed_gui_height = 48; + int display_width = 0; + int display_height = 0; + window_get_drawable_size(game_state->window, &display_width, &display_height); + int key_needed_gui_y = 50; + int keys_needed = 0; + bool red_needed = false; + bool green_needed = false; + bool blue_needed = false; + float starting_ratio = 0.65f; + + if((player->key_mask & DOOR_KEY_MASK_RED) != DOOR_KEY_MASK_RED && (door->mask & DOOR_KEY_MASK_RED) == DOOR_KEY_MASK_RED) + { + red_needed = true; + keys_needed++; + key_needed_gui_width += 100; + starting_ratio -= 0.1f; + } + + if((player->key_mask & DOOR_KEY_MASK_GREEN) != DOOR_KEY_MASK_GREEN && (door->mask & DOOR_KEY_MASK_GREEN) == DOOR_KEY_MASK_GREEN) + { + green_needed = true; + keys_needed++; + key_needed_gui_width += 100; + starting_ratio -= 0.1f; + } + + if((player->key_mask & DOOR_KEY_MASK_BLUE) != DOOR_KEY_MASK_BLUE && (door->mask & DOOR_KEY_MASK_BLUE) == DOOR_KEY_MASK_BLUE) + { + blue_needed = true; + keys_needed++; + key_needed_gui_width += 100; + starting_ratio -= 0.1f; + } + int key_needed_gui_x = (display_width / 2) - (key_needed_gui_width / 2); + + if(nk_begin(context, "Key Needed Gui", nk_recti(key_needed_gui_x, key_needed_gui_y, key_needed_gui_width, key_needed_gui_height), NK_WINDOW_BACKGROUND | NK_WINDOW_NO_SCROLLBAR)) + { + nk_layout_row_begin(context, NK_DYNAMIC, 40, keys_needed + 2); + nk_layout_row_push(context, starting_ratio); + nk_label(context, "YOU NEED THE", label_flags); + + if(red_needed) + { + nk_layout_row_push(context, 0.15f); + nk_label_colored(context, "RED", label_flags, nk_rgba_fv(&KEY_INDICATOR_COLOR_RED)); + } + + if(green_needed) + { + nk_layout_row_push(context, 0.15f); + nk_label_colored(context, "GREEN", label_flags, nk_rgba_fv(&KEY_INDICATOR_COLOR_GREEN)); + keys_needed++; + } + + if(blue_needed) + { + nk_layout_row_push(context, 0.15f); + nk_label_colored(context, "BLUE", label_flags, nk_rgba_fv(&KEY_INDICATOR_COLOR_BLUE)); + keys_needed++; + } + + nk_layout_row_push(context, 0.25f); + nk_label(context, keys_needed > 1 ? "KEYS" : "KEY", label_flags); + nk_end(context); + } + } +} + void gui_game_pause_menu(struct nk_context* context) { struct Game_State* game_state = game_state_get(); @@ -76,8 +208,6 @@ void gui_game_pause_menu(struct nk_context* context) popup_y = (display_height / 2) - (popup_height / 2); int background_window_flags = NK_WINDOW_BACKGROUND; - int previous_opacity = context->style.window.fixed_background.data.color.a; - context->style.window.fixed_background.data.color.a = 120; if(nk_begin(context, "Pause Gui", nk_rect(0, 0, display_width, display_height), background_window_flags)) { nk_window_set_focus(context, "Pause Gui"); @@ -104,12 +234,12 @@ void gui_game_pause_menu(struct nk_context* context) nk_end(context); } - context->style.window.fixed_background.data.color.a = previous_opacity; } static void gui_game_next_level_dialog(struct nk_context* context) { struct Game_State* game_state = game_state_get(); + struct Game_Gui* game_gui = game_state->gui_game; struct Scene* scene = game_state->scene; int row_height = 30; int popup_x = 0; @@ -124,8 +254,6 @@ static void gui_game_next_level_dialog(struct nk_context* context) popup_y = (display_height / 2) - (popup_height / 2); int background_window_flags = NK_WINDOW_BACKGROUND; - int previous_opacity = context->style.window.fixed_background.data.color.a; - context->style.window.fixed_background.data.color.a = 120; if(nk_begin(context, "Scene Cleared", nk_rect(0, 0, display_width, display_height), background_window_flags)) { nk_window_set_focus(context, "Scene Cleared"); @@ -139,7 +267,7 @@ static void gui_game_next_level_dialog(struct nk_context* context) if(!scene_load(game_state->scene, filename, DIRT_INSTALL)) log_error("gui_game:next_level_dialog", "Failed to reload Level"); else - show_next_level_dialog = false; + game_gui->show_next_level_dialog = false; } if(nk_button_label(context, "Next Level")) @@ -151,7 +279,7 @@ static void gui_game_next_level_dialog(struct nk_context* context) if(!scene_load(game_state->scene, filename, DIRT_INSTALL)) log_error("gui_game:next_level_dialog", "Failed to load new Level"); else - show_next_level_dialog = false; + game_gui->show_next_level_dialog = false; } else { @@ -167,12 +295,12 @@ static void gui_game_next_level_dialog(struct nk_context* context) nk_end(context); } - context->style.window.fixed_background.data.color.a = previous_opacity; } static void gui_game_restart_level_dialog(struct nk_context* context) { struct Game_State* game_state = game_state_get(); + struct Game_Gui* game_gui = game_state->gui_game; int row_height = 30; int popup_x = 0; int popup_y = 0; @@ -186,8 +314,6 @@ static void gui_game_restart_level_dialog(struct nk_context* context) popup_y = (display_height / 2) - (popup_height / 2); int background_window_flags = NK_WINDOW_BACKGROUND; - int previous_opacity = context->style.window.fixed_background.data.color.a; - context->style.window.fixed_background.data.color.a = 120; if(nk_begin(context, "Player Died Gui", nk_rect(0, 0, display_width, display_height), background_window_flags)) { nk_window_set_focus(context, "Player Died Gui"); @@ -201,7 +327,7 @@ static void gui_game_restart_level_dialog(struct nk_context* context) if(!scene_load(game_state->scene, filename, DIRT_INSTALL)) log_error("gui_game:pause_menu", "Failed to reload Level"); else - show_restart_level_dialog = false; + game_gui->show_restart_level_dialog = false; } if(nk_button_label(context, "Quit")) @@ -212,18 +338,17 @@ static void gui_game_restart_level_dialog(struct nk_context* context) nk_end(context); } - context->style.window.fixed_background.data.color.a = previous_opacity; } void gui_game_on_player_death(struct Event* event) { struct Player_Death_Event* player_death_event = (struct Player_Death_Event*)event; - show_restart_level_dialog = true; + game_state_get()->gui_game->show_restart_level_dialog = true; input_mouse_mode_set(MM_NORMAL); } void gui_game_on_scene_cleared(struct Event* event) { - show_next_level_dialog = true; + game_state_get()->gui_game->show_next_level_dialog = true; input_mouse_mode_set(MM_NORMAL); } diff --git a/src/game/gui_game.h b/src/game/gui_game.h index 8b2dc06..b3a3edf 100644 --- a/src/game/gui_game.h +++ b/src/game/gui_game.h @@ -1,10 +1,32 @@ #ifndef GUI_GAME_H #define GUI_GAME_H -struct Gui; +#include "gui.h" -void gui_game_init(struct Gui* game_gui); -void gui_game_cleanup(struct Gui* game_gui); -void gui_game_update(struct Gui* gui_game, float dt); +struct Game_Gui +{ + struct Gui* gui; + bool show_next_level_dialog; + bool show_restart_level_dialog; + + struct + { + int skin_texture; + struct nk_image button; + struct nk_image button_hover; + struct nk_image button_active; + struct nk_image check; + struct nk_image check_cursor; + struct nk_image hp; + struct nk_image key; + } skin; +}; + +struct Door; + +void gui_game_init(struct Game_Gui* game_gui); +void gui_game_cleanup(struct Game_Gui* game_gui); +void gui_game_update(struct Game_Gui* gui_game, float dt); +void gui_game_show_door_locked_dialog(struct Game_Gui* game_gui, struct Door* door); #endif \ No newline at end of file diff --git a/src/game/renderer.c b/src/game/renderer.c index eb8b67e..5bf37c1 100755 --- a/src/game/renderer.c +++ b/src/game/renderer.c @@ -26,6 +26,7 @@ #include "scene.h" #include "event.h" #include "debug_vars.h" +#include "gui_game.h" #include #include @@ -297,7 +298,7 @@ void renderer_render(struct Renderer* renderer, struct Scene* scene) /* Render UI */ gui_render(game_state->gui_editor, NK_ANTI_ALIASING_ON); - gui_render(game_state->gui_game, NK_ANTI_ALIASING_ON); + gui_render(game_state->gui_game->gui, NK_ANTI_ALIASING_ON); } void renderer_cleanup(struct Renderer* renderer) diff --git a/src/game/scene.c b/src/game/scene.c index d5770b6..7e6319a 100755 --- a/src/game/scene.c +++ b/src/game/scene.c @@ -159,9 +159,7 @@ bool scene_load(struct Scene* scene, const char* filename, int directory_type) scene->cleanup = hashmap_value_exists(scene_data, "cleanup_func") ? hashmap_ptr_get(game_state->scene_cleanup_func_table, hashmap_str_get(scene_data, "cleanup_func")) : &scene_init_stub; if(hashmap_value_exists(scene_data, "next_scene")) - strncpy(scene->next_level_filename, hashmap_str_get(scene_data, "next_scene"), MAX_FILENAME_LEN); - else - memcpy(scene->next_level_filename, '\0', MAX_FILENAME_LEN); + strncpy(scene->next_level_filename, hashmap_value_exists(scene_data, "next_scene") ? hashmap_str_get(scene_data, "next_scene") : "NONE", MAX_FILENAME_LEN); num_objects_loaded++; } @@ -275,6 +273,7 @@ bool scene_save(struct Scene* scene, const char* filename, int directory_type) hashmap_bool_set(scene_data, "debug_draw_physics", render_settings->debug_draw_physics); if(scene->init) hashmap_str_set(scene_data, "init_func", filename); if(scene->cleanup) hashmap_str_set(scene_data, "cleanup_func", filename); + hashmap_str_set(scene_data, "next_scene", scene->next_level_filename != '\0' ? scene->next_level_filename : "NONE"); // Player struct Parser_Object* player_object = parser_object_new(parser, PO_PLAYER); diff --git a/todo.txt b/todo.txt index 15f9e2e..8653622 100644 --- a/todo.txt +++ b/todo.txt @@ -1,9 +1,4 @@ Todo: - - In-Game Gui - x Player Death Screen - x Proceed to next level Screen - - Key Required Screen - - HUD showing health, keys currently acquired - Save case sensitive file names when scene entity entries - Disbale all player actions when scene cleared dialog or scene restart dialog are active - Enemies getting hit by bullets @@ -428,4 +423,5 @@ Done: * Visual indicator on doors corresponding to their key masks * Audio cues when player does not have the right key combination to open a particular door * Added saving scene init/cleanup funcs if there are any assigned when saving scene - * Win/fail States \ No newline at end of file + * Win/fail States + x In-Game Gui \ No newline at end of file