⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cl.java

📁 Jake2是一个Java 3D游戏引擎.
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            Netchan.OutOfBandPrint(Defines.NS_CLIENT, Globals.net_from, "ack");            return;        }        // challenge from the server we are connecting to        if (c.equals("challenge")) {            Globals.cls.challenge = Lib.atoi(Cmd.Argv(1));            SendConnectPacket();            return;        }        // echo request from server        if (c.equals("echo")) {            Netchan.OutOfBandPrint(Defines.NS_CLIENT, Globals.net_from, Cmd                    .Argv(1));            return;        }        Com.Printf("Unknown command.\n");    }    /**     * ReadPackets     */    static void ReadPackets() {        while (NET.GetPacket(Defines.NS_CLIENT, Globals.net_from,                Globals.net_message)) {            //            // remote command packet            //		            if (Globals.net_message.data[0] == -1                    && Globals.net_message.data[1] == -1                    && Globals.net_message.data[2] == -1                    && Globals.net_message.data[3] == -1) {                //			if (*(int *)net_message.data == -1)                ConnectionlessPacket();                continue;            }            if (Globals.cls.state == Defines.ca_disconnected                    || Globals.cls.state == Defines.ca_connecting)                continue; // dump it if not connected            if (Globals.net_message.cursize < 8) {                Com.Printf(NET.AdrToString(Globals.net_from)                        + ": Runt packet\n");                continue;            }            //            // packet from server            //            if (!NET.CompareAdr(Globals.net_from,                    Globals.cls.netchan.remote_address)) {                Com.DPrintf(NET.AdrToString(Globals.net_from)                        + ":sequenced packet without connection\n");                continue;            }            if (!Netchan.Process(Globals.cls.netchan, Globals.net_message))                continue; // wasn't accepted for some reason            CL_parse.ParseServerMessage();        }        //        // check timeout        //        if (Globals.cls.state >= Defines.ca_connected                && Globals.cls.realtime - Globals.cls.netchan.last_received > Globals.cl_timeout.value * 1000) {            if (++Globals.cl.timeoutcount > 5) // timeoutcount saves debugger            {                Com.Printf("\nServer connection timed out.\n");                Disconnect();                return;            }        } else            Globals.cl.timeoutcount = 0;    }    //	  =============================================================================    /**     * FixUpGender_f     */    static void FixUpGender() {        String sk;        if (Globals.gender_auto.value != 0.0f) {            if (Globals.gender.modified) {                // was set directly, don't override the user                Globals.gender.modified = false;                return;            }            sk = Globals.skin.string;            if (sk.startsWith("male") || sk.startsWith("cyborg"))                Cvar.Set("gender", "male");            else if (sk.startsWith("female") || sk.startsWith("crackhor"))                Cvar.Set("gender", "female");            else                Cvar.Set("gender", "none");            Globals.gender.modified = false;        }    }    public static void RequestNextDownload() {        int map_checksum = 0; // for detecting cheater maps        //char fn[MAX_OSPATH];        String fn;        qfiles.dmdl_t pheader;        if (Globals.cls.state != Defines.ca_connected)            return;        if (SV_MAIN.allow_download.value == 0 && CL.precache_check < ENV_CNT)            CL.precache_check = ENV_CNT;        //	  ZOID        if (CL.precache_check == Defines.CS_MODELS) { // confirm map            CL.precache_check = Defines.CS_MODELS + 2; // 0 isn't used            if (SV_MAIN.allow_download_maps.value != 0)                if (!CL_parse                        .CheckOrDownloadFile(Globals.cl.configstrings[Defines.CS_MODELS + 1]))                    return; // started a download        }        if (CL.precache_check >= Defines.CS_MODELS                && CL.precache_check < Defines.CS_MODELS + Defines.MAX_MODELS) {            if (SV_MAIN.allow_download_models.value != 0) {                while (CL.precache_check < Defines.CS_MODELS                        + Defines.MAX_MODELS                        && Globals.cl.configstrings[CL.precache_check].length() > 0) {                    if (Globals.cl.configstrings[CL.precache_check].charAt(0) == '*'                            || Globals.cl.configstrings[CL.precache_check]                                    .charAt(0) == '#') {                        CL.precache_check++;                        continue;                    }                    if (CL.precache_model_skin == 0) {                        if (!CL_parse                                .CheckOrDownloadFile(Globals.cl.configstrings[CL.precache_check])) {                            CL.precache_model_skin = 1;                            return; // started a download                        }                        CL.precache_model_skin = 1;                    }                    // checking for skins in the model                    if (CL.precache_model == null) {                        CL.precache_model = FS                                .LoadFile(Globals.cl.configstrings[CL.precache_check]);                        if (CL.precache_model == null) {                            CL.precache_model_skin = 0;                            CL.precache_check++;                            continue; // couldn't load it                        }                        ByteBuffer bb = ByteBuffer.wrap(CL.precache_model);                        bb.order(ByteOrder.LITTLE_ENDIAN);                        int header = bb.getInt();                        if (header != qfiles.IDALIASHEADER) {                            // not an alias model                            FS.FreeFile(CL.precache_model);                            CL.precache_model = null;                            CL.precache_model_skin = 0;                            CL.precache_check++;                            continue;                        }                        pheader = new qfiles.dmdl_t(ByteBuffer.wrap(                                CL.precache_model).order(                                ByteOrder.LITTLE_ENDIAN));                        if (pheader.version != Defines.ALIAS_VERSION) {                            CL.precache_check++;                            CL.precache_model_skin = 0;                            continue; // couldn't load it                        }                    }                    pheader = new qfiles.dmdl_t(ByteBuffer.wrap(                            CL.precache_model).order(ByteOrder.LITTLE_ENDIAN));                    int num_skins = pheader.num_skins;                    while (CL.precache_model_skin - 1 < num_skins) {                        //Com.Printf("critical code section because of endian                        // mess!\n");                        String name = Lib.CtoJava(CL.precache_model,                                pheader.ofs_skins                                        + (CL.precache_model_skin - 1)                                        * Defines.MAX_SKINNAME,                                Defines.MAX_SKINNAME * num_skins);                        if (!CL_parse.CheckOrDownloadFile(name)) {                            CL.precache_model_skin++;                            return; // started a download                        }                        CL.precache_model_skin++;                    }                    if (CL.precache_model != null) {                        FS.FreeFile(CL.precache_model);                        CL.precache_model = null;                    }                    CL.precache_model_skin = 0;                    CL.precache_check++;                }            }            CL.precache_check = Defines.CS_SOUNDS;        }        if (CL.precache_check >= Defines.CS_SOUNDS                && CL.precache_check < Defines.CS_SOUNDS + Defines.MAX_SOUNDS) {            if (SV_MAIN.allow_download_sounds.value != 0) {                if (CL.precache_check == Defines.CS_SOUNDS)                    CL.precache_check++; // zero is blank                while (CL.precache_check < Defines.CS_SOUNDS                        + Defines.MAX_SOUNDS                        && Globals.cl.configstrings[CL.precache_check].length() > 0) {                    if (Globals.cl.configstrings[CL.precache_check].charAt(0) == '*') {                        CL.precache_check++;                        continue;                    }                    fn = "sound/"                            + Globals.cl.configstrings[CL.precache_check++];                    if (!CL_parse.CheckOrDownloadFile(fn))                        return; // started a download                }            }            CL.precache_check = Defines.CS_IMAGES;        }        if (CL.precache_check >= Defines.CS_IMAGES                && CL.precache_check < Defines.CS_IMAGES + Defines.MAX_IMAGES) {            if (CL.precache_check == Defines.CS_IMAGES)                CL.precache_check++; // zero is blank            while (CL.precache_check < Defines.CS_IMAGES + Defines.MAX_IMAGES                    && Globals.cl.configstrings[CL.precache_check].length() > 0) {                fn = "pics/" + Globals.cl.configstrings[CL.precache_check++]                        + ".pcx";                if (!CL_parse.CheckOrDownloadFile(fn))                    return; // started a download            }            CL.precache_check = Defines.CS_PLAYERSKINS;        }        // skins are special, since a player has three things to download:        // model, weapon model and skin        // so precache_check is now *3        if (CL.precache_check >= Defines.CS_PLAYERSKINS                && CL.precache_check < Defines.CS_PLAYERSKINS                        + Defines.MAX_CLIENTS * CL.PLAYER_MULT) {            if (SV_MAIN.allow_download_players.value != 0) {                while (CL.precache_check < Defines.CS_PLAYERSKINS                        + Defines.MAX_CLIENTS * CL.PLAYER_MULT) {                    int i, n;                    //char model[MAX_QPATH], skin[MAX_QPATH], * p;                    String model, skin;                    i = (CL.precache_check - Defines.CS_PLAYERSKINS)                            / CL.PLAYER_MULT;                    n = (CL.precache_check - Defines.CS_PLAYERSKINS)                            % CL.PLAYER_MULT;                    if (Globals.cl.configstrings[Defines.CS_PLAYERSKINS + i]                            .length() == 0) {                        CL.precache_check = Defines.CS_PLAYERSKINS + (i + 1)                                * CL.PLAYER_MULT;                        continue;                    }                    int pos = Globals.cl.configstrings[Defines.CS_PLAYERSKINS + i].indexOf('\\');                                        if (pos != -1)                        pos++;                    else                        pos = 0;                    int pos2 = Globals.cl.configstrings[Defines.CS_PLAYERSKINS + i].indexOf('\\', pos);                                        if (pos2 == -1)                        pos2 = Globals.cl.configstrings[Defines.CS_PLAYERSKINS + i].indexOf('/', pos);                                                            model = Globals.cl.configstrings[Defines.CS_PLAYERSKINS + i]                            .substring(pos, pos2);                                                            skin = Globals.cl.configstrings[Defines.CS_PLAYERSKINS + i].substring(pos2 + 1);                                        switch (n) {                    case 0: // model                        fn = "players/" + model + "/tris.md2";                        if (!CL_parse.CheckOrDownloadFile(fn)) {                            CL.precache_check = Defines.CS_PLAYERSKINS + i                                    * CL.PLAYER_MULT + 1;                            return; // started a download                        }                        n++;                    /* FALL THROUGH */                    case 1: // weapon model                        fn = "players/" + model + "/weapon.md2";                        if (!CL_parse.CheckOrDownloadFile(fn)) {                            CL.precache_check = Defines.CS_PLAYERSKINS + i                                    * CL.PLAYER_MULT + 2;                            return; // started a download                        }                        n++;                    /* FALL THROUGH */                    case 2: // weapon skin                        fn = "players/" + model + "/weapon.pcx";                        if (!CL_parse.CheckOrDownloadFile(fn)) {                            CL.precache_check = Defines.CS_PLAYERSKINS + i                                    * CL.PLAYER_MULT + 3;                            return; // started a download                        }                        n++;                    /* FALL THROUGH */                    case 3: // skin                        fn = "players/" + model + "/" + skin + ".pcx";                        if (!CL_parse.CheckOrDownloadFile(fn)) {                            CL.precache_check = Defines.CS_PLAYERSKINS + i                                    * CL.PLAYER_MULT + 4;                            return; // started a download                        }                        n++;                    /* FALL THROUGH */                    case 4: // skin_i                        fn = "players/" + model + "/" + skin + "_i.pcx";                        if (!CL_parse.CheckOrDownloadFile(fn)) {                            CL.precache_check = Defines.CS_PLAYERSKINS + i                                    * CL.PLAYER_MULT + 5;                            return; // started a download                        }                        // move on to next model                        CL.precache_check = Defines.CS_PLAYERSKINS + (i + 1)                                * CL.PLAYER_MULT;                    }                }            }            // precache phase completed            CL.precache_check = ENV_CNT;        }        if (CL.precache_check == ENV_CNT) {            CL.precache_check = ENV_CNT + 1;            int iw[] = { map_checksum };            CM.CM_LoadMap(Globals.cl.configstrings[Defines.CS_MODELS + 1],                    true, iw);            map_checksum = iw[0];            if ((map_checksum ^ Lib                    .atoi(Globals.cl.configstrings[Defines.CS_MAPCHECKSUM])) != 0) {                Com                        .Error(                                Defines.ERR_DROP,                                "Local map version differs from server: "                                        + map_checksum                                        + " != '"                                        + Globals.cl.configstrings[Defines.CS_MAPCHECKSUM]                                        + "'\n");                return;            }        }        if (CL.precache_check > ENV_CNT && CL.precache_check < TEXTURE_CNT) {            if (SV_MAIN.allow_download.value != 0                    && SV_MAIN.allow_download_maps.value != 0) {                while (CL.precache_check < TEXTURE_CNT) {                    int n = CL.precache_check++ - ENV_CNT - 1;                    if ((n & 1) != 0)                        fn = "env/" + Globals.cl.configstrings[Defines.CS_SKY]                                + env_suf[n / 2] + ".pcx";                    else                        fn = "env/" + Globals.cl.configstrings[Defines.CS_SKY]                                + env_suf[n / 2] + ".tga";                    if (!CL_parse.CheckOrDownloadFile(fn))                        return; // started a download                }            }            CL.precache_check = TEXTURE_CNT;        }        if (CL.precache_check == TEXTURE_CNT) {            CL.precache_check = TEXTURE_CNT + 1;            CL.precache_tex = 0;        }        // confirm existance of textures, download any that don't exist        if (CL.precache_check == TEXTURE_CNT + 1) {            // from qcommon/cmodel.c            // extern int numtexinfo;            // extern mapsurface_t map_surfaces[];            if (SV_MAIN.allow_download.value != 0                    && SV_MAIN.allow_download_maps.value != 0) {                while (CL.precache_tex < CM.numtexinfo) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -