📄 menu.java
字号:
cy = y; DrawCharacter(cx, cy, 1); for (n = 0; n < lines; n++) { cy += 8; DrawCharacter(cx, cy, 4); } DrawCharacter(cx, cy + 8, 7); // draw middle cx += 8; while (width > 0) { cy = y; DrawCharacter(cx, cy, 2); for (n = 0; n < lines; n++) { cy += 8; DrawCharacter(cx, cy, 5); } DrawCharacter(cx, cy + 8, 8); width -= 1; cx += 8; } // draw right side cy = y; DrawCharacter(cx, cy, 3); for (n = 0; n < lines; n++) { cy += 8; DrawCharacter(cx, cy, 6); } DrawCharacter(cx, cy + 8, 9); } /* * ======================================================================= * * MAIN MENU * * ======================================================================= */ static final int MAIN_ITEMS = 5; static xcommand_t Main_Draw = new xcommand_t() { public void execute() { Main_Draw(); } }; static void Main_Draw() { int i; int w, h; int ystart; int xoffset; int widest = -1; int totalheight = 0; String litname; String[] names = { "m_main_game", "m_main_multiplayer", "m_main_options", "m_main_video", "m_main_quit" }; Dimension dim = new Dimension(); for (i = 0; i < names.length; i++) { Globals.re.DrawGetPicSize(dim, names[i]); w = dim.width; h = dim.height; if (w > widest) widest = w; totalheight += (h + 12); } ystart = (Globals.viddef.height / 2 - 110); xoffset = (Globals.viddef.width - widest + 70) / 2; for (i = 0; i < names.length; i++) { if (i != m_main_cursor) Globals.re.DrawPic(xoffset, ystart + i * 40 + 13, names[i]); } //strcat(litname, "_sel"); litname = names[m_main_cursor] + "_sel"; Globals.re.DrawPic(xoffset, ystart + m_main_cursor * 40 + 13, litname); DrawCursor(xoffset - 25, ystart + m_main_cursor * 40 + 11, (int) ((Globals.cls.realtime / 100)) % NUM_CURSOR_FRAMES); Globals.re.DrawGetPicSize(dim, "m_main_plaque"); w = dim.width; h = dim.height; Globals.re.DrawPic(xoffset - 30 - w, ystart, "m_main_plaque"); Globals.re.DrawPic(xoffset - 30 - w, ystart + h + 5, "m_main_logo"); } static keyfunc_t Main_Key = new keyfunc_t() { public String execute(int key) { return Main_Key(key); } }; static String Main_Key(int key) { String sound = menu_move_sound; switch (key) { case Key.K_ESCAPE: PopMenu(); break; case Key.K_KP_DOWNARROW: case Key.K_DOWNARROW: if (++m_main_cursor >= MAIN_ITEMS) m_main_cursor = 0; return sound; case Key.K_KP_UPARROW: case Key.K_UPARROW: if (--m_main_cursor < 0) m_main_cursor = MAIN_ITEMS - 1; return sound; case Key.K_KP_ENTER: case Key.K_ENTER: m_entersound = true; switch (m_main_cursor) { case 0: Menu_Game_f(); break; case 1: Menu_Multiplayer_f(); break; case 2: Menu_Options_f(); break; case 3: Menu_Video_f(); break; case 4: Menu_Quit_f(); break; } } return null; } static xcommand_t Menu_Main = new xcommand_t() { public void execute() { Menu_Main_f(); } }; static void Menu_Main_f() { PushMenu(new xcommand_t() { public void execute() { Main_Draw(); } }, new keyfunc_t() { public String execute(int key) { return Main_Key(key); } }); } /* * ======================================================================= * * MULTIPLAYER MENU * * ======================================================================= */ static menuframework_s s_multiplayer_menu = new menuframework_s(); static menuaction_s s_join_network_server_action = new menuaction_s(); static menuaction_s s_start_network_server_action = new menuaction_s(); static menuaction_s s_player_setup_action = new menuaction_s(); static void Multiplayer_MenuDraw() { Banner("m_banner_multiplayer"); Menu_AdjustCursor(s_multiplayer_menu, 1); Menu_Draw(s_multiplayer_menu); } static void PlayerSetupFunc(Object unused) { Menu_PlayerConfig_f(); } static void JoinNetworkServerFunc(Object unused) { Menu_JoinServer_f(); } static void StartNetworkServerFunc(Object unused) { Menu_StartServer_f(); } static void Multiplayer_MenuInit() { s_multiplayer_menu.x = (int) (viddef.width * 0.50f - 64); s_multiplayer_menu.nitems = 0; s_join_network_server_action.type = MTYPE_ACTION; s_join_network_server_action.flags = QMF_LEFT_JUSTIFY; s_join_network_server_action.x = 0; s_join_network_server_action.y = 0; s_join_network_server_action.name = " join network server"; s_join_network_server_action.callback = new mcallback() { public void execute(Object o) { JoinNetworkServerFunc(o); }; }; s_start_network_server_action.type = MTYPE_ACTION; s_start_network_server_action.flags = QMF_LEFT_JUSTIFY; s_start_network_server_action.x = 0; s_start_network_server_action.y = 10; s_start_network_server_action.name = " start network server"; s_start_network_server_action.callback = new mcallback() { public void execute(Object o) { StartNetworkServerFunc(o); } }; s_player_setup_action.type = MTYPE_ACTION; s_player_setup_action.flags = QMF_LEFT_JUSTIFY; s_player_setup_action.x = 0; s_player_setup_action.y = 20; s_player_setup_action.name = " player setup"; s_player_setup_action.callback = new mcallback() { public void execute(Object o) { PlayerSetupFunc(o); } }; Menu_AddItem(s_multiplayer_menu, s_join_network_server_action); Menu_AddItem(s_multiplayer_menu, s_start_network_server_action); Menu_AddItem(s_multiplayer_menu, s_player_setup_action); Menu_SetStatusBar(s_multiplayer_menu, null); Menu_Center(s_multiplayer_menu); } static String Multiplayer_MenuKey(int key) { return Default_MenuKey(s_multiplayer_menu, key); } static xcommand_t Menu_Multiplayer = new xcommand_t() { public void execute() { Menu_Multiplayer_f(); } }; static void Menu_Multiplayer_f() { Multiplayer_MenuInit(); PushMenu(new xcommand_t() { public void execute() { Multiplayer_MenuDraw(); } }, new keyfunc_t() { public String execute(int key) { return Multiplayer_MenuKey(key); } }); } /* * ======================================================================= * * KEYS MENU * * ======================================================================= */ static String bindnames[][] = { { "+attack", "attack" }, { "weapnext", "next weapon" }, { "+forward", "walk forward" }, { "+back", "backpedal" }, { "+left", "turn left" }, { "+right", "turn right" }, { "+speed", "run" }, { "+moveleft", "step left" }, { "+moveright", "step right" }, { "+strafe", "sidestep" }, { "+lookup", "look up" }, { "+lookdown", "look down" }, { "centerview", "center view" }, { "+mlook", "mouse look" }, { "+klook", "keyboard look" }, { "+moveup", "up / jump" }, { "+movedown", "down / crouch" }, { "inven", "inventory" }, { "invuse", "use item" }, { "invdrop", "drop item" }, { "invprev", "prev item" }, { "invnext", "next item" }, { "cmd help", "help computer" }, { null, null } }; int keys_cursor; static boolean bind_grab; static menuframework_s s_keys_menu = new menuframework_s(); static menuaction_s s_keys_attack_action = new menuaction_s(); static menuaction_s s_keys_change_weapon_action = new menuaction_s(); static menuaction_s s_keys_walk_forward_action = new menuaction_s(); static menuaction_s s_keys_backpedal_action = new menuaction_s(); static menuaction_s s_keys_turn_left_action = new menuaction_s(); static menuaction_s s_keys_turn_right_action = new menuaction_s(); static menuaction_s s_keys_run_action = new menuaction_s(); static menuaction_s s_keys_step_left_action = new menuaction_s(); static menuaction_s s_keys_step_right_action = new menuaction_s(); static menuaction_s s_keys_sidestep_action = new menuaction_s(); static menuaction_s s_keys_look_up_action = new menuaction_s(); static menuaction_s s_keys_look_down_action = new menuaction_s(); static menuaction_s s_keys_center_view_action = new menuaction_s(); static menuaction_s s_keys_mouse_look_action = new menuaction_s(); static menuaction_s s_keys_keyboard_look_action = new menuaction_s(); static menuaction_s s_keys_move_up_action = new menuaction_s(); static menuaction_s s_keys_move_down_action = new menuaction_s(); static menuaction_s s_keys_inventory_action = new menuaction_s(); static menuaction_s s_keys_inv_use_action = new menuaction_s(); static menuaction_s s_keys_inv_drop_action = new menuaction_s(); static menuaction_s s_keys_inv_prev_action = new menuaction_s(); static menuaction_s s_keys_inv_next_action = new menuaction_s(); static menuaction_s s_keys_help_computer_action = new menuaction_s(); static void UnbindCommand(String command) { int j; String b; for (j = 0; j < 256; j++) { b = keybindings[j]; if (b == null) continue; if (b.equals(command)) Key.SetBinding(j, ""); } } static void FindKeysForCommand(String command, int twokeys[]) { int count; int j; String b; twokeys[0] = twokeys[1] = -1; count = 0; for (j = 0; j < 256; j++) { b = keybindings[j]; if (b == null) continue; if (b.equals(command)) { twokeys[count] = j; count++; if (count == 2) break; } } } static void KeyCursorDrawFunc(menuframework_s menu) { if (bind_grab) re.DrawChar(menu.x, menu.y + menu.cursor * 9, '='); else re.DrawChar(menu.x, menu.y + menu.cursor * 9, 12 + ((int) (Timer .Milliseconds() / 250) & 1)); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -