From d66a2a46efd9369d918a60d5483c23ed39e8dd58 Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Sun, 18 Nov 2007 22:20:35 +0000 Subject: [PATCH] fixed menu switching problems and some compile errors --- src/engine/system.c | 2 +- src/game/client/cl_skin.cpp | 2 +- src/game/client/game_client.cpp | 16 +++++++++++++--- src/game/client/menu2.cpp | 30 +++++++++++++++++++----------- src/game/game_protocol.h | 2 +- src/game/game_variables.h | 2 +- src/game/server/srv_ctf.cpp | 7 +++---- 7 files changed, 39 insertions(+), 22 deletions(-) diff --git a/src/engine/system.c b/src/engine/system.c index 4a7670ebf..569810224 100644 --- a/src/engine/system.c +++ b/src/engine/system.c @@ -31,7 +31,7 @@ #include #include #include - #include // for SHGetFolderPathAndSubDir + #include /* for SHGetFolderPathAndSubDir */ #include #include #include diff --git a/src/game/client/cl_skin.cpp b/src/game/client/cl_skin.cpp index fcdd0207e..c0e747ac2 100644 --- a/src/game/client/cl_skin.cpp +++ b/src/game/client/cl_skin.cpp @@ -10,7 +10,7 @@ enum MAX_SKINS=256, }; -static skin skins[MAX_SKINS] = {0}; +static skin skins[MAX_SKINS] = {{0}}; static int num_skins = 0; static void skinscan(const char *name, int is_dir, void *user) diff --git a/src/game/client/game_client.cpp b/src/game/client/game_client.cpp index 4d81c3442..d8a20fa14 100644 --- a/src/game/client/game_client.cpp +++ b/src/game/client/game_client.cpp @@ -41,6 +41,7 @@ enum static int chat_mode = CHATMODE_NONE; bool menu_active = false; +bool menu_game_active = false; static bool emoticon_selector_active = false; static vec2 mouse_pos; @@ -959,7 +960,7 @@ static void render_flag(const obj_flag *prev, const obj_flag *current) vec2 pos = mix(vec2(prev->x, prev->y), vec2(current->x, current->y), client_intratick()); - if(current->local_carry) + if(local_info && current->carried_by == local_info->clientid) pos = local_character_pos; gfx_setcolor(current->team ? 0 : 1,0,current->team ? 1 : 0,1); @@ -1989,7 +1990,11 @@ void render_game() if (chat_mode) chat_mode = CHATMODE_NONE; else + { menu_active = !menu_active; + if(menu_active) + menu_game_active = true; + } } // handle chat input @@ -2610,11 +2615,18 @@ void menu_do_connected(); extern "C" void modc_statechange(int state, int old) { if(state == CLIENTSTATE_OFFLINE) + { menu_do_disconnected(); + menu_game_active = false; + } if(state == CLIENTSTATE_CONNECTING) menu_do_connecting(); if (state == CLIENTSTATE_ONLINE) + { + menu_active = false; + menu_game_active = true; menu_do_connected(); + } } extern "C" void modc_message(int msg) @@ -2703,8 +2715,6 @@ extern "C" void modc_connected() killmsgs[i].tick = -100000; send_info(true); - - config.ui_page = 5; } extern "C" const char *modc_net_version() { return TEEWARS_NETVERSION; } diff --git a/src/game/client/menu2.cpp b/src/game/client/menu2.cpp index d6014b870..f5556bd75 100644 --- a/src/game/client/menu2.cpp +++ b/src/game/client/menu2.cpp @@ -30,6 +30,7 @@ extern data_container *data; // abit uglyness extern const obj_player_info *local_info; extern bool menu_active; +extern bool menu_game_active; //static vec4 gui_color(0.9f,0.78f,0.65f, 0.5f); @@ -68,7 +69,7 @@ enum PAGE_LAN, PAGE_FAVORITES, PAGE_SETTINGS, - PAGE_GAME, + //PAGE_GAME, // not a real page PAGE_SYSTEM, }; @@ -649,13 +650,18 @@ static int menu2_render_menubar(RECT r) RECT box = r; RECT button; + int current_page = config.ui_page; + int active_page = config.ui_page; + if(menu_game_active) + active_page = -1; + if(client_state() == CLIENTSTATE_OFFLINE) { if(0) // this is not done yet { ui2_vsplit_l(&box, 90.0f, &button, &box); static int news_button=0; - if (ui2_do_button(&news_button, "News", config.ui_page==PAGE_NEWS, &button, ui2_draw_menu_tab_button, 0)) + if (ui2_do_button(&news_button, "News", active_page==PAGE_NEWS, &button, ui2_draw_menu_tab_button, 0)) config.ui_page = PAGE_NEWS; ui2_vsplit_l(&box, 30.0f, 0, &box); } @@ -664,14 +670,15 @@ static int menu2_render_menubar(RECT r) { ui2_vsplit_l(&box, 90.0f, &button, &box); static int game_button=0; - if (ui2_do_button(&game_button, "Game", config.ui_page==PAGE_GAME, &button, ui2_draw_menu_tab_button, 0)) - config.ui_page = PAGE_GAME; + if (ui2_do_button(&game_button, "Game", menu_game_active, &button, ui2_draw_menu_tab_button, 0)) + menu_game_active = true; + ui2_vsplit_l(&box, 30.0f, 0, &box); } ui2_vsplit_l(&box, 110.0f, &button, &box); static int internet_button=0; - if (ui2_do_button(&internet_button, "Internet", config.ui_page==PAGE_INTERNET, &button, ui2_draw_menu_tab_button, 0)) + if (ui2_do_button(&internet_button, "Internet", active_page==PAGE_INTERNET, &button, ui2_draw_menu_tab_button, 0)) { client_serverbrowse_refresh(0); config.ui_page = PAGE_INTERNET; @@ -680,7 +687,7 @@ static int menu2_render_menubar(RECT r) ui2_vsplit_l(&box, 4.0f, 0, &box); ui2_vsplit_l(&box, 90.0f, &button, &box); static int lan_button=0; - if (ui2_do_button(&lan_button, "LAN", config.ui_page==PAGE_LAN, &button, ui2_draw_menu_tab_button, 0)) + if (ui2_do_button(&lan_button, "LAN", active_page==PAGE_LAN, &button, ui2_draw_menu_tab_button, 0)) { client_serverbrowse_refresh(1); config.ui_page = PAGE_LAN; @@ -691,7 +698,7 @@ static int menu2_render_menubar(RECT r) ui2_vsplit_l(&box, 4.0f, 0, &box); ui2_vsplit_l(&box, 120.0f, &button, &box); static int favorites_button=0; - if (ui2_do_button(&favorites_button, "Favorites", config.ui_page==PAGE_FAVORITES, &button, ui2_draw_menu_tab_button, 0)) + if (ui2_do_button(&favorites_button, "Favorites", active_page==PAGE_FAVORITES, &button, ui2_draw_menu_tab_button, 0)) config.ui_page = PAGE_FAVORITES; } @@ -705,8 +712,11 @@ static int menu2_render_menubar(RECT r) */ ui2_vsplit_r(&box, 110.0f, &box, &button); static int settings_button=0; - if (ui2_do_button(&settings_button, "Settings", config.ui_page==PAGE_SETTINGS, &button, ui2_draw_menu_tab_button, 0)) + if (ui2_do_button(&settings_button, "Settings", active_page==PAGE_SETTINGS, &button, ui2_draw_menu_tab_button, 0)) config.ui_page = PAGE_SETTINGS; + + if(current_page != config.ui_page) + menu_game_active = false; return 0; } @@ -1380,8 +1390,6 @@ static void menu2_render_game(RECT main_view) if(ui2_do_button(&disconnect_button, "Disconnect", 0, &button, ui2_draw_menu_button, 0)) client_disconnect(); - - if(local_info) { if(local_info->team != -1) @@ -1487,7 +1495,7 @@ int menu2_render() //ui2_hsplit_b(&main_view, 26.0f, &main_view, &bottom_bar); // render current page - if(config.ui_page == PAGE_GAME) + if(menu_game_active) menu2_render_game(main_view); else if(config.ui_page == PAGE_NEWS) menu2_render_news(main_view); diff --git a/src/game/game_protocol.h b/src/game/game_protocol.h index d2f2b6e50..eb59590a6 100644 --- a/src/game/game_protocol.h +++ b/src/game/game_protocol.h @@ -160,7 +160,7 @@ struct obj_flag { int x, y; int team; - int local_carry; // is set if the local player has the flag + int carried_by; // is set if the local player has the flag }; // core object needed for physics diff --git a/src/game/game_variables.h b/src/game/game_variables.h index e183658ea..fb617214f 100644 --- a/src/game/game_variables.h +++ b/src/game/game_variables.h @@ -46,7 +46,7 @@ MACRO_CONFIG_STR(player_skin, 64, "default") MACRO_CONFIG_INT(dbg_new_gui, 0, 0, 1) -MACRO_CONFIG_INT(ui_page, 0, 0, 5) +MACRO_CONFIG_INT(ui_page, 1, 0, 5) MACRO_CONFIG_STR(ui_server_address, 128, "localhost:8303") diff --git a/src/game/server/srv_ctf.cpp b/src/game/server/srv_ctf.cpp index c4cbd5749..42061a5cb 100644 --- a/src/game/server/srv_ctf.cpp +++ b/src/game/server/srv_ctf.cpp @@ -129,9 +129,8 @@ void flag::snap(int snapping_client) flag->x = (int)pos.x; flag->y = (int)pos.y; flag->team = team; + flag->carried_by = -1; - if(carrying_player && carrying_player->client_id == snapping_client) - flag->local_carry = 1; - else - flag->local_carry = 0; + if(carrying_player) + flag->carried_by = carrying_player->client_id; }