예제 #1
0
        public static void RegisterSounds( )
        {
            S.BeginRegistration();
            CL_tent.RegisterTEntSounds();
            for (var i = 1; i < Defines.MAX_SOUNDS; i++)
            {
                if (Globals.cl.configstrings[Defines.CS_SOUNDS + i] == null || Globals.cl.configstrings[Defines.CS_SOUNDS + i].Equals("") || Globals.cl.configstrings[Defines.CS_SOUNDS + i].Equals("\\0"))
                {
                    break;
                }
                Globals.cl.sound_precache[i] = S.RegisterSound(Globals.cl.configstrings[Defines.CS_SOUNDS + i]);
                CoreSys.SendKeyEvents();
            }

            S.EndRegistration();
        }
예제 #2
0
        /*
         * =================
         *
         * CL_PrepRefresh
         *
         * Call before entering a new level, or after changing dlls
         * =================
         */
        public static void PrepRefresh()
        {
            string mapname;
            int    i;
            string name;
            float  rotate;
            var    axis = new float[3];

            if ((i = Globals.cl.configstrings[Defines.CS_MODELS + 1].Length) == 0)
            {
                return;                 // no map loaded
            }
            SCR.AddDirtyPoint(0, 0);
            SCR.AddDirtyPoint(Globals.viddef.getWidth() - 1, Globals.viddef.getHeight() - 1);

            // let the render dll load the map
            mapname = Globals.cl.configstrings[Defines.CS_MODELS + 1].Substring(5, i - 9);             // skip "maps/"

            // cut off ".bsp"

            // register models, pics, and skins
            Com.Printf("Map: " + mapname + "\r");
            SCR.UpdateScreen();
            Globals.re.BeginRegistration(mapname);
            Com.Printf("                                     \r");

            // precache status bar pics
            Com.Printf("pics\r");
            SCR.UpdateScreen();
            SCR.TouchPics();
            Com.Printf("                                     \r");
            CL_tent.RegisterTEntModels();
            CL_view.num_cl_weaponmodels = 1;
            CL_view.cl_weaponmodels[0]  = "weapon.md2";

            for (i = 1; i < Defines.MAX_MODELS && Globals.cl.configstrings[Defines.CS_MODELS + i].Length != 0; i++)
            {
                name = new(Globals.cl.configstrings[Defines.CS_MODELS + i]);

                if (name.Length > 37)
                {
                    name = name[..36];
예제 #3
0
 public static void AddEntities( )
 {
     if (Globals.cls.state != Defines.ca_active)
     {
         return;
     }
     if (Globals.cl.time > Globals.cl.frame.servertime)
     {
         if (Globals.cl_showclamp.value != 0)
         {
             Com.Printf("high clamp " + (Globals.cl.time - Globals.cl.frame.servertime) + "\\n");
         }
         Globals.cl.time     = Globals.cl.frame.servertime;
         Globals.cl.lerpfrac = 1F;
     }
     else if (Globals.cl.time < Globals.cl.frame.servertime - 100)
     {
         if (Globals.cl_showclamp.value != 0)
         {
             Com.Printf("low clamp " + (Globals.cl.frame.servertime - 100 - Globals.cl.time) + "\\n");
         }
         Globals.cl.time     = Globals.cl.frame.servertime - 100;
         Globals.cl.lerpfrac = 0;
     }
     else
     {
         Globals.cl.lerpfrac = 1F - (Globals.cl.frame.servertime - Globals.cl.time) * 0.01F;
     }
     if (Globals.cl_timedemo.value != 0)
     {
         Globals.cl.lerpfrac = 1F;
     }
     CalcViewValues();
     AddPacketEntities(Globals.cl.frame);
     CL_tent.AddTEnts();
     CL_fx.AddParticles();
     CL_fx.AddDLights();
     CL_fx.AddLightStyles();
 }
예제 #4
0
        public static void PrepRefresh()
        {
            string mapname;
            int    i;
            string name;
            float  rotate;

            float[] axis = new float[3];
            if ((i = Globals.cl.configstrings[Defines.CS_MODELS + 1].Length) == 0)
            {
                return;
            }
            SCR.AddDirtyPoint(0, 0);
            SCR.AddDirtyPoint(Globals.viddef.GetWidth() - 1, Globals.viddef.GetHeight() - 1);
            mapname = Globals.cl.configstrings[Defines.CS_MODELS + 1].Substring(5, i - 4);
            Com.Printf("Map: " + mapname + "\\r");
            SCR.UpdateScreen();
            Globals.re.BeginRegistration(mapname);
            Com.Printf("                                     \\r");
            Com.Printf("pics\\r");
            SCR.UpdateScreen();
            SCR.TouchPics();
            Com.Printf("                                     \\r");
            CL_tent.RegisterTEntModels();
            num_cl_weaponmodels = 1;
            cl_weaponmodels[0]  = "weapon.md2";
            for (i = 1; i < Defines.MAX_MODELS && Globals.cl.configstrings[Defines.CS_MODELS + i].Length != 0; i++)
            {
                name = new string (Globals.cl.configstrings[Defines.CS_MODELS + i]);
                if (name.Length > 37)
                {
                    name = name.Substring(0, 36);
                }
                if (name[0] != '*')
                {
                    Com.Printf(name + "\\r");
                }
                SCR.UpdateScreen();
                CoreSys.SendKeyEvents();
                if (name[0] == '#')
                {
                    if (num_cl_weaponmodels < Defines.MAX_CLIENTWEAPONMODELS)
                    {
                        cl_weaponmodels[num_cl_weaponmodels] = Globals.cl.configstrings[Defines.CS_MODELS + i].Substring(1);
                        num_cl_weaponmodels++;
                    }
                }
                else
                {
                    Globals.cl.model_draw[i] = Globals.re.RegisterModel(Globals.cl.configstrings[Defines.CS_MODELS + i]);
                    if (name[0] == '*')
                    {
                        Globals.cl.model_clip[i] = CM.InlineModel(Globals.cl.configstrings[Defines.CS_MODELS + i]);
                    }
                    else
                    {
                        Globals.cl.model_clip[i] = null;
                    }
                }

                if (name[0] != '*')
                {
                    Com.Printf("                                     \\r");
                }
            }

            Com.Printf("images\\r");
            SCR.UpdateScreen();
            for (i = 1; i < Defines.MAX_IMAGES && Globals.cl.configstrings[Defines.CS_IMAGES + i].Length > 0; i++)
            {
                Globals.cl.image_precache[i] = Globals.re.RegisterPic(Globals.cl.configstrings[Defines.CS_IMAGES + i]);
                CoreSys.SendKeyEvents();
            }

            Com.Printf("                                     \\r");
            for (i = 0; i < Defines.MAX_CLIENTS; i++)
            {
                if (Globals.cl.configstrings[Defines.CS_PLAYERSKINS + i].Length == 0)
                {
                    continue;
                }
                Com.Printf("client " + i + '\\');
                SCR.UpdateScreen();
                CoreSys.SendKeyEvents();
                CL_parse.ParseClientinfo(i);
                Com.Printf("                                     \\r");
            }

            CL_parse.LoadClientinfo(Globals.cl.baseclientinfo, "unnamed\\\\male/grunt");
            Com.Printf("sky\\r");
            SCR.UpdateScreen();
            rotate = float.Parse(Globals.cl.configstrings[Defines.CS_SKYROTATE]);
            StringTokenizer st = new StringTokenizer(Globals.cl.configstrings[Defines.CS_SKYAXIS]);

            st.MoveNext();
            axis[0] = float.Parse(st.Current);
            st.MoveNext();
            axis[1] = float.Parse(st.Current);
            st.MoveNext();
            axis[2] = float.Parse(st.Current);
            Globals.re.SetSky(Globals.cl.configstrings[Defines.CS_SKY], rotate, axis);
            Com.Printf("                                     \\r");
            Globals.re.EndRegistration();
            Con.ClearNotify();
            SCR.UpdateScreen();
            Globals.cl.refresh_prepped = true;
            Globals.cl.force_refdef    = true;
        }
예제 #5
0
        public static void ParseServerMessage( )
        {
            while (true)
            {
                if (Globals.net_message.readcount > Globals.net_message.cursize)
                {
                    Com.Error(Defines.ERR_FATAL, "CL_ParseServerMessage: Bad server message:");
                    break;
                }

                var cmd = MSG.ReadByte(Globals.net_message);
                if (cmd == -1)
                {
                    SHOWNET("END OF MESSAGE");
                    break;
                }

                if (Globals.cl_shownet.value >= 2)
                {
                    if (null == svc_strings[cmd])
                    {
                        Com.Printf(Globals.net_message.readcount - 1 + ":BAD CMD " + cmd + "\\n");
                    }
                    else
                    {
                        SHOWNET(svc_strings[cmd]);
                    }
                }

                switch (cmd)

                {
                default:
                    Com.Error(Defines.ERR_DROP, "CL_ParseServerMessage: Illegible server message\\n");
                    break;

                case Defines.svc_nop:
                    break;

                case Defines.svc_disconnect:
                    Com.Error(Defines.ERR_DISCONNECT, "Server disconnected\\n");
                    break;

                case Defines.svc_reconnect:
                    Com.Printf("Server disconnected, reconnecting\\n");
                    if (Globals.cls.download != null)
                    {
                        try
                        {
                            Globals.cls.download.Close();
                        }
                        catch (IOException e)
                        {
                        }

                        Globals.cls.download = null;
                    }

                    Globals.cls.state        = Defines.ca_connecting;
                    Globals.cls.connect_time = -99999;
                    break;

                case Defines.svc_print:
                    var i = MSG.ReadByte(Globals.net_message);
                    if (i == Defines.PRINT_CHAT)
                    {
                        S.StartLocalSound("misc/talk.wav");
                        Globals.con.ormask = 128;
                    }

                    Com.Printf(MSG.ReadString(Globals.net_message));
                    Globals.con.ormask = 0;
                    break;

                case Defines.svc_centerprint:
                    SCR.CenterPrint(MSG.ReadString(Globals.net_message));
                    break;

                case Defines.svc_stufftext:
                    var s = MSG.ReadString(Globals.net_message);
                    Com.DPrintf("stufftext: " + s + "\\n");
                    Cbuf.AddText(s);
                    break;

                case Defines.svc_serverdata:
                    Cbuf.Execute();
                    ParseServerData();
                    break;

                case Defines.svc_configstring:
                    ParseConfigString();
                    break;

                case Defines.svc_sound:
                    ParseStartSoundPacket();
                    break;

                case Defines.svc_spawnbaseline:
                    ParseBaseline();
                    break;

                case Defines.svc_temp_entity:
                    CL_tent.ParseTEnt();
                    break;

                case Defines.svc_muzzleflash:
                    CL_fx.ParseMuzzleFlash();
                    break;

                case Defines.svc_muzzleflash2:
                    CL_fx.ParseMuzzleFlash2();
                    break;

                case Defines.svc_download:
                    ParseDownload();
                    break;

                case Defines.svc_frame:
                    CL_ents.ParseFrame();
                    break;

                case Defines.svc_inventory:
                    CL_inv.ParseInventory();
                    break;

                case Defines.svc_layout:
                    Globals.cl.layout = MSG.ReadString(Globals.net_message);
                    break;

                case Defines.svc_playerinfo:
                case Defines.svc_packetentities:
                case Defines.svc_deltapacketentities:
                    Com.Error(Defines.ERR_DROP, "Out of place frame data");
                    break;
                }
            }

            CL_view.AddNetgraph();
            if (Globals.cls.demorecording && !Globals.cls.demowaiting)
            {
                CL.WriteDemoMessage();
            }
        }