亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? menu.java

?? JAKE2用JAVA寫的queck2的3D游戲開發引擎
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
/* * Menu.java * Copyright (C) 2004 *  * $Id: Menu.java,v 1.20.2.1 2006/04/06 13:14:59 cawe Exp $ *//* Copyright (C) 1997-2001 Id Software, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */package jake2.client;import jake2.Globals;import jake2.game.Cmd;import jake2.game.cvar_t;import jake2.qcommon.*;import jake2.sound.S;import jake2.sys.*;import jake2.sys.NET;import jake2.sys.Sys;import jake2.util.*;import java.awt.Dimension;import java.io.RandomAccessFile;import java.util.Arrays;import java.util.Comparator;/** * Menu *  *   */abstract class keyfunc_t {    abstract String execute(int key);}public final class Menu extends Key {    static int m_main_cursor;    static final int NUM_CURSOR_FRAMES = 15;    static final String menu_in_sound = "misc/menu1.wav";    static final String menu_move_sound = "misc/menu2.wav";    static final String menu_out_sound = "misc/menu3.wav";    static boolean m_entersound; // play after drawing a frame, so caching    // won't disrupt the sound    static xcommand_t m_drawfunc;    static keyfunc_t m_keyfunc;    //	  =============================================================================    /* Support Routines */    public final static int MAX_MENU_DEPTH = 8;    public static class menulayer_t {        xcommand_t draw;        keyfunc_t key;    }    static class menuframework_s {        int x, y;        int cursor;        int nitems;        int nslots;        menucommon_s items[] = new menucommon_s[64];        String statusbar;        //void (*cursordraw)( struct _tag_menuframework *m );        mcallback cursordraw;    }    abstract static class mcallback {        abstract public void execute(Object self);    }    static class menucommon_s {        int type;        String name = "";        int x, y;        menuframework_s parent;        int cursor_offset;        int localdata[] = { 0, 0, 0, 0 };        int flags;        int n = -1; //position in an array.        String statusbar;        mcallback callback;        mcallback statusbarfunc;        mcallback ownerdraw;        mcallback cursordraw;    }    static class menufield_s extends menucommon_s {        //char buffer[80];        StringBuffer buffer; //allow deletion.        int cursor;        int length;        int visible_length;        int visible_offset;    }    static class menuslider_s extends menucommon_s {        float minvalue;        float maxvalue;        float curvalue;        float range;    }    static class menulist_s extends menucommon_s {        int curvalue;        String itemnames[];    }    static class menuaction_s extends menucommon_s {    }    static class menuseparator_s extends menucommon_s {    }    public static menulayer_t m_layers[] = new menulayer_t[MAX_MENU_DEPTH];    public static int m_menudepth;    static void Banner(String name) {        Dimension dim = new Dimension();        Globals.re.DrawGetPicSize(dim, name);        Globals.re.DrawPic(viddef.width / 2 - dim.width / 2,                viddef.height / 2 - 110, name);    }    static void PushMenu(xcommand_t draw, keyfunc_t key) { //, String(*key)                                                           // (int k) ) {        int i;        if (Cvar.VariableValue("maxclients") == 1 && Globals.server_state != 0)            Cvar.Set("paused", "1");        // if this menu is already present, drop back to that level        // to avoid stacking menus by hotkeys        for (i = 0; i < m_menudepth; i++)            if (m_layers[i].draw == draw && m_layers[i].key == key) {                m_menudepth = i;            }        if (i == m_menudepth) {            if (m_menudepth >= MAX_MENU_DEPTH)                Com.Error(ERR_FATAL, "PushMenu: MAX_MENU_DEPTH");            m_layers[m_menudepth].draw = draw;//m_drawfunc;            m_layers[m_menudepth].key = key;//m_keyfunc;             }        m_menudepth++;        m_drawfunc = draw;        m_keyfunc = key;        m_entersound = true;        cls.key_dest = key_menu;    }    static void ForceMenuOff() {        m_drawfunc = null;        m_keyfunc = null;        cls.key_dest = key_game;        m_menudepth = 0;        Key.ClearStates();        Cvar.Set("paused", "0");    }    static void PopMenu() {        S.StartLocalSound(menu_out_sound);        m_menudepth--;        if (m_menudepth < 0)            Com.Error(ERR_FATAL, "PopMenu: depth < 1");        if (0 < m_menudepth){	        m_drawfunc = m_layers[m_menudepth-1].draw;	        m_keyfunc = m_layers[m_menudepth-1].key;        }        if (0 == m_menudepth)            ForceMenuOff();                    }    static String Default_MenuKey(menuframework_s m, int key) {        String sound = null;        menucommon_s item;        if (m != null) {            if ((item = ((menucommon_s) Menu_ItemAtCursor(m))) != null) {                if (item.type == MTYPE_FIELD) {                    if (Field_Key((menufield_s) item, key))                        return null;                }            }        }        switch (key) {        case K_ESCAPE:            PopMenu();            return menu_out_sound;        case K_KP_UPARROW:        case K_UPARROW:            if (m != null) {                m.cursor--;                Menu_AdjustCursor(m, -1);                sound = menu_move_sound;            }            break;        case K_TAB:            if (m != null) {                m.cursor++;                Menu_AdjustCursor(m, 1);                sound = menu_move_sound;            }            break;        case K_KP_DOWNARROW:        case K_DOWNARROW:            if (m != null) {                m.cursor++;                Menu_AdjustCursor(m, 1);                sound = menu_move_sound;            }            break;        case K_KP_LEFTARROW:        case K_LEFTARROW:            if (m != null) {                Menu_SlideItem(m, -1);                sound = menu_move_sound;            }            break;        case K_KP_RIGHTARROW:        case K_RIGHTARROW:            if (m != null) {                Menu_SlideItem(m, 1);                sound = menu_move_sound;            }            break;        case K_MOUSE1:        case K_MOUSE2:        case K_MOUSE3:        case K_JOY1:        case K_JOY2:        case K_JOY3:        case K_JOY4:        /*         * case K_AUX1 : case K_AUX2 : case K_AUX3 : case K_AUX4 : case K_AUX5 :         * case K_AUX6 : case K_AUX7 : case K_AUX8 : case K_AUX9 : case K_AUX10 :         * case K_AUX11 : case K_AUX12 : case K_AUX13 : case K_AUX14 : case         * K_AUX15 : case K_AUX16 : case K_AUX17 : case K_AUX18 : case K_AUX19 :         * case K_AUX20 : case K_AUX21 : case K_AUX22 : case K_AUX23 : case         * K_AUX24 : case K_AUX25 : case K_AUX26 : case K_AUX27 : case K_AUX28 :         * case K_AUX29 : case K_AUX30 : case K_AUX31 : case K_AUX32 :         */        case K_KP_ENTER:        case K_ENTER:            if (m != null)                Menu_SelectItem(m);            sound = menu_move_sound;            break;        }        return sound;    }    /*     * ================ DrawCharacter     *      * Draws one solid graphics character cx and cy are in 320*240 coordinates,     * and will be centered on higher res screens. ================     */    public static void DrawCharacter(int cx, int cy, int num) {        re.DrawChar(cx + ((viddef.width - 320) >> 1), cy                + ((viddef.height - 240) >> 1), num);    }    public static void Print(int cx, int cy, String str) {        //while (*str)        for (int n = 0; n < str.length(); n++) {            DrawCharacter(cx, cy, str.charAt(n) + 128);            //str++;            cx += 8;        }    }    public static void PrintWhite(int cx, int cy, String str) {        for (int n = 0; n < str.length(); n++) {            DrawCharacter(cx, cy, str.charAt(n));            //str++;            cx += 8;        }    }    public static void DrawPic(int x, int y, String pic) {        re.DrawPic(x + ((viddef.width - 320) >> 1), y                + ((viddef.height - 240) >> 1), pic);    }    /*     * ============= DrawCursor     *      * Draws an animating cursor with the point at x,y. The pic will extend to     * the left of x, and both above and below y. =============     */    static boolean cached;    static void DrawCursor(int x, int y, int f) {        //char cursorname[80];        String cursorname;        assert (f >= 0) : "negative time and cursor bug";        f = Math.abs(f);        if (!cached) {            int i;            for (i = 0; i < NUM_CURSOR_FRAMES; i++) {                cursorname = "m_cursor" + i;                re.RegisterPic(cursorname);            }            cached = true;        }        cursorname = "m_cursor" + f;        re.DrawPic(x, y, cursorname);    }    public static void DrawTextBox(int x, int y, int width, int lines) {        int cx, cy;        int n;        // draw left side        cx = x;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一二三| 色88888久久久久久影院按摩 | 欧美一区二区三区精品| 8v天堂国产在线一区二区| 91精品一区二区三区久久久久久| 91在线免费看| 一本一道综合狠狠老| 欧美一级片在线观看| 久久久久国产精品厨房| 亚洲欧洲精品一区二区精品久久久 | 精品国产亚洲在线| 中文字幕精品综合| 一区二区三区精品视频| 国内外精品视频| 91成人免费在线视频| 亚洲永久精品国产| 亚洲理论在线观看| 自拍偷自拍亚洲精品播放| 豆国产96在线|亚洲| 亚洲色图第一区| 欧美久久久久中文字幕| 狠狠狠色丁香婷婷综合激情| 欧美性一级生活| 亚洲乱码一区二区三区在线观看| 激情小说欧美图片| 欧美电影免费提供在线观看| 亚洲第一激情av| 欧美欧美午夜aⅴ在线观看| 午夜欧美一区二区三区在线播放| 国产91精品一区二区麻豆亚洲| 日韩女优av电影在线观看| 午夜激情综合网| 欧美精品乱码久久久久久按摩| 亚洲精品国产一区二区精华液| 成人污污视频在线观看| 久久久久久久久久看片| 国产一区高清在线| 欧美精彩视频一区二区三区| 国产一区二区0| 在线电影一区二区三区| 奇米精品一区二区三区在线观看 | 日本欧美在线观看| 日本伦理一区二区| 免费人成精品欧美精品| 91精品国产综合久久精品| 日韩电影免费在线| 精品久久久网站| av电影一区二区| 夜夜嗨av一区二区三区四季av| 欧美理论片在线| 精品一区二区久久久| 亚洲四区在线观看| 欧美色网站导航| 国产一区二区三区在线观看免费| 中文字幕免费在线观看视频一区| 99视频在线观看一区三区| 日本特黄久久久高潮| 国产精品日日摸夜夜摸av| 欧美精品成人一区二区三区四区| 国产不卡视频在线播放| 国产在线观看一区二区| 日本午夜精品视频在线观看| 亚洲影院理伦片| 一区二区三区久久| 亚洲va国产天堂va久久en| 亚洲激情在线播放| 欧美国产日韩a欧美在线观看 | 国产精品免费视频一区| 26uuu国产一区二区三区| 欧美一区二区视频免费观看| 色妹子一区二区| 国产精品一品二品| 日欧美一区二区| 天涯成人国产亚洲精品一区av| 亚洲成人动漫av| 亚洲国产色一区| 一区二区在线电影| 亚洲va欧美va国产va天堂影院| 午夜精品免费在线| 免费在线观看成人| 精品亚洲国内自在自线福利| 美女久久久精品| 国产一二三精品| 99精品偷自拍| 91精品婷婷国产综合久久性色| 欧美高清激情brazzers| 欧美日韩一区二区三区四区| 在线电影一区二区三区| 日韩无一区二区| 国产精品无圣光一区二区| 亚洲欧美欧美一区二区三区| 亚洲成av人片观看| 国产宾馆实践打屁股91| 91黄色小视频| 久久尤物电影视频在线观看| 国产精品美女久久久久高潮| 亚洲午夜影视影院在线观看| 精品一区二区精品| 欧美偷拍一区二区| 精品国产不卡一区二区三区| 一区在线观看视频| 久久99久久99小草精品免视看| 成人动漫中文字幕| 日韩精品一区国产麻豆| 亚洲精品成人悠悠色影视| 日韩av中文字幕一区二区三区| 成人免费观看视频| 国产香蕉久久精品综合网| 亚洲图片欧美视频| 91视频一区二区| 国产视频911| 国产精品综合一区二区三区| 99精品国产91久久久久久| 精品国产在天天线2019| 免费的国产精品| 精品国产乱码久久久久久图片 | 日韩一二三区视频| 天使萌一区二区三区免费观看| eeuss鲁片一区二区三区在线看| 久久综合九色综合97婷婷| 日本午夜一本久久久综合| 欧美精品777| 视频在线观看91| 91精品蜜臀在线一区尤物| 视频在线观看一区二区三区| 欧美日本视频在线| 国内精品伊人久久久久av一坑| 欧美一级高清片| 韩国在线一区二区| 国产欧美va欧美不卡在线| 国产成人99久久亚洲综合精品| 国产色产综合色产在线视频| 99视频精品全部免费在线| 玉足女爽爽91| 欧美xxxxxxxxx| av在线不卡电影| 天天做天天摸天天爽国产一区| 日韩免费看的电影| 成人免费黄色在线| 免费成人小视频| 亚洲同性gay激情无套| 91 com成人网| 91捆绑美女网站| 国产成人99久久亚洲综合精品| 亚洲精品国产精华液| 91美女在线视频| 久久99精品久久久久久动态图| 亚洲摸摸操操av| 亚洲成av人**亚洲成av**| 日韩女优制服丝袜电影| 91网站在线观看视频| 狠狠久久亚洲欧美| 日韩精品电影在线| 一二三区精品视频| 国产精品丝袜在线| 国产亚洲短视频| 久久综合久久99| 91麻豆精品国产91久久久| 91麻豆视频网站| 99九九99九九九视频精品| 国内精品久久久久影院色| 日韩激情一二三区| 亚洲免费观看高清完整版在线 | 国产在线不卡一区| 麻豆91免费观看| 日本强好片久久久久久aaa| 一区二区三区中文字幕| 亚洲精品大片www| 亚洲成a人在线观看| 一区二区三区在线视频观看58| 亚洲婷婷在线视频| 亚洲高清免费在线| 亚洲男人天堂av| 午夜不卡在线视频| 久久91精品国产91久久小草| 久久精品国产精品亚洲精品| 蜜桃免费网站一区二区三区| 日本不卡在线视频| 久久66热re国产| av午夜精品一区二区三区| 国产成都精品91一区二区三| 成人性生交大合| 欧美在线不卡视频| 日韩欧美国产一区二区在线播放| 91精品国产色综合久久| 国产三级精品视频| 亚洲午夜私人影院| 岛国一区二区在线观看| 在线观看日韩高清av| 欧美精品一区在线观看| 伊人婷婷欧美激情| 久久成人av少妇免费| 不卡欧美aaaaa| 91精品国产免费| 中文字幕在线免费不卡| 日本不卡高清视频| 99精品黄色片免费大全| 欧美xxxxx裸体时装秀| 日韩激情视频在线观看| 91在线高清观看|