Beispiel #1
0
        public cvar(string name, string value, bool archive, bool server)
        {
            if (String.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException("name");
            }
            cvar var = Find(name);

            if (var != null)
            {
                throw new ArgumentException(String.Format("Can't register variable {0}, already defined!\n", name));
                //Con_Printf("Can't register variable %s, allready defined\n", variable->name);
                //return;
            }
            if (cmd.Exists(name))
            {
                throw new ArgumentException(String.Format("Can't register variable: {0} is a command!\n", name));
            }
            _Next = _Vars;
            _Vars = this;

            _Name   = name;
            _String = value;
            _Flags[Flags.Archive] = archive;
            _Flags[Flags.Server]  = server;
            _Value = common.atof(_String);
        }
Beispiel #2
0
        private static byte[] _FatPvs = new byte[bsp_file.MAX_MAP_LEAFS / 8]; // fatpvs

        // SV_Init
        public static void Init()
        {
            for (int i = 0; i < _BoxClipNodes.Length; i++)
            {
                _BoxClipNodes[i].children = new short[2];
            }
            for (int i = 0; i < _BoxPlanes.Length; i++)
            {
                _BoxPlanes[i] = new mplane_t();
            }
            for (int i = 0; i < _AreaNodes.Length; i++)
            {
                _AreaNodes[i] = new areanode_t();
            }

            if (_Friction == null)
            {
                _Friction        = new cvar("sv_friction", "4", false, true);
                _EdgeFriction    = new cvar("edgefriction", "2");
                _StopSpeed       = new cvar("sv_stopspeed", "100");
                _Gravity         = new cvar("sv_gravity", "800", false, true);
                _MaxVelocity     = new cvar("sv_maxvelocity", "2000");
                _NoStep          = new cvar("sv_nostep", "0");
                _MaxSpeed        = new cvar("sv_maxspeed", "320", false, true);
                _Accelerate      = new cvar("sv_accelerate", "10");
                _Aim             = new cvar("sv_aim", "0.93");
                _IdealPitchScale = new cvar("sv_idealpitchscale", "0.8");
            }

            for (int i = 0; i < QDef.MAX_MODELS; i++)
            {
                _LocalModels[i] = "*" + i.ToString();
            }
        }
Beispiel #3
0
        // Host_InitLocal
        private static void InitLocal()
        {
            InitCommands();

            if (_Sys_TickRate == null)
            {
                _Sys_TickRate  = new cvar("sys_ticrate", "0.05");
                _Developer     = new cvar("developer", "0");
                _FrameRate     = new cvar("host_framerate", "0"); // set for slow motion
                _Speeds        = new cvar("host_speeds", "0");    // set for running times
                _ServerProfile = new cvar("serverprofile", "0");
                _FragLimit     = new cvar("fraglimit", "0", false, true);
                _TimeLimit     = new cvar("timelimit", "0", false, true);
                _Teamplay      = new cvar("teamplay", "0", false, true);
                _SameLevel     = new cvar("samelevel", "0");
                _NoExit        = new cvar("noexit", "0", false, true);
                _Skill         = new cvar("skill", "1");      // 0 - 3
                _Deathmatch    = new cvar("deathmatch", "0"); // 0, 1, or 2
                _Coop          = new cvar("coop", "0");       // 0 or 1
                _Pausable      = new cvar("pausable", "1");
                _Temp1         = new cvar("temp1", "0");
            }

            FindMaxClients();

            _Time = 1.0;                // so a think at time 0 won't get called
        }
Beispiel #4
0
        // Con_Init (void)
        public static void Init()
        {
            _DebugLog = (common.CheckParm("-condebug") > 0);
            if (_DebugLog)
            {
                string path = Path.Combine(common.GameDir, LOG_FILE_NAME);
                if (File.Exists(path))
                {
                    File.Delete(path);
                }

                _Log = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read);
            }

            _LineWidth = -1;
            CheckResize();

            Con.Print("Console initialized.\n");

            //
            // register our commands
            //
            if (_NotifyTime == null)
            {
                _NotifyTime = new cvar("con_notifytime", "3");
            }

            cmd.Add("toggleconsole", ToggleConsole_f);
            cmd.Add("messagemode", MessageMode_f);
            cmd.Add("messagemode2", MessageMode2_f);
            cmd.Add("clear", Clear_f);

            _IsInitialized = true;
        }
Beispiel #5
0
        private static bool _IsMouseWindowed; // windowed_mouse (don't confuse with _windowed_mouse cvar)
                                              // scr_fullupdate    set to 0 to force full redraw

        // SCR_Init
        public static void Init()
        {
            if (_ViewSize == null)
            {
                _ViewSize       = new cvar("viewsize", "100", true);
                _Fov            = new cvar("fov", "90"); // 10 - 170
                _ConSpeed       = new cvar("scr_conspeed", "3000");
                _CenterTime     = new cvar("scr_centertime", "2");
                _ShowRam        = new cvar("showram", "1");
                _ShowTurtle     = new cvar("showturtle", "0");
                _ShowPause      = new cvar("showpause", "1");
                _PrintSpeed     = new cvar("scr_printspeed", "8");
                _glTripleBuffer = new cvar("gl_triplebuffer", "1", true);
            }

            //
            // register our commands
            //
            cmd.Add("screenshot", ScreenShot_f);
            cmd.Add("sizeup", SizeUp_f);
            cmd.Add("sizedown", SizeDown_f);

            _Ram    = Drawer.PicFromWad("ram");
            _Net    = Drawer.PicFromWad("net");
            _Turtle = Drawer.PicFromWad("turtle");

            if (common.HasParam("-fullsbar"))
            {
                FullSbarDraw = true;
            }

            _IsInitialized = true;
        }
Beispiel #6
0
        // CL_Init
        public static void Init()
        {
            InitInput();
            InitTempEntities();

            if (_Name == null)
            {
                _Name          = new cvar("_cl_name", "player", true);
                _Color         = new cvar("_cl_color", "0", true);
                _ShowNet       = new cvar("cl_shownet", "0");   // can be 0, 1, or 2
                _NoLerp        = new cvar("cl_nolerp", "0");
                _LookSpring    = new cvar("lookspring", "0", true);
                _LookStrafe    = new cvar("lookstrafe", "0", true);
                _Sensitivity   = new cvar("sensitivity", "3", true);
                _MPitch        = new cvar("m_pitch", "0.022", true);
                _MYaw          = new cvar("m_yaw", "0.022", true);
                _MForward      = new cvar("m_forward", "1", true);
                _MSide         = new cvar("m_side", "0.8", true);
                _UpSpeed       = new cvar("cl_upspeed", "200");
                _ForwardSpeed  = new cvar("cl_forwardspeed", "200", true);
                _BackSpeed     = new cvar("cl_backspeed", "200", true);
                _SideSpeed     = new cvar("cl_sidespeed", "350");
                _MoveSpeedKey  = new cvar("cl_movespeedkey", "2.0");
                _YawSpeed      = new cvar("cl_yawspeed", "140");
                _PitchSpeed    = new cvar("cl_pitchspeed", "150");
                _AngleSpeedKey = new cvar("cl_anglespeedkey", "1.5");
            }

            for (int i = 0; i < _EFrags.Length; i++)
            {
                _EFrags[i] = new efrag_t();
            }

            for (int i = 0; i < _Entities.Length; i++)
            {
                _Entities[i] = new entity_t();
            }

            for (int i = 0; i < _StaticEntities.Length; i++)
            {
                _StaticEntities[i] = new entity_t();
            }

            for (int i = 0; i < _DLights.Length; i++)
            {
                _DLights[i] = new dlight_t();
            }

            //
            // register our commands
            //
            cmd.Add("entities", PrintEntities_f);
            cmd.Add("disconnect", Disconnect_f);
            cmd.Add("record", Record_f);
            cmd.Add("stop", Stop_f);
            cmd.Add("playdemo", PlayDemo_f);
            cmd.Add("timedemo", TimeDemo_f);
        }
Beispiel #7
0
 // Chase_Init
 public static void Init()
 {
     if (_Back == null)
     {
         _Back   = new cvar("chase_back", "100");
         _Up     = new cvar("chase_up", "16");
         _Right  = new cvar("chase_right", "0");
         _Active = new cvar("chase_active", "0");
     }
 }
Beispiel #8
0
        // Cvar_VariableString()
        public static string GetString(string name)
        {
            cvar var = Find(name);

            if (var != null)
            {
                return(var._String);
            }
            return(String.Empty);
        }
Beispiel #9
0
        // Cvar_VariableValue()
        public static float GetValue(string name)
        {
            float result = 0;
            cvar  var    = Find(name);

            if (var != null)
            {
                result = common.atof(var._String);
            }
            return(result);
        }
Beispiel #10
0
        // Cvar_Set()
        public static void Set(string name, string value)
        {
            cvar var = Find(name);

            if (var == null)
            {
                // there is an error in C code if this happens
                Con.Print("Cvar.Set: variable {0} not found\n", name);
                return;
            }
            var.Set(value);
        }
Beispiel #11
0
        private static bool _MouseShowToggle = true; // mouseshowtoggle

        // IN_Init
        public static void Init()
        {
            if (_MouseFilter == null)
            {
                _MouseFilter = new cvar("m_filter", "0");
            }

            _IsMouseActive = (Mouse.GetState(0).IsConnected != false);
            if (_IsMouseActive)
            {
                _MouseButtons = 3; //??? TODO: properly upgrade this to 3.0.1
            }
        }
Beispiel #12
0
        // Cvar_FindVar()
        public static cvar Find(string name)
        {
            cvar var = _Vars;

            while (var != null)
            {
                if (var._Name.Equals(name))
                {
                    return(var);
                }
                var = var._Next;
            }
            return(null);
        }
Beispiel #13
0
        private static float _OldGammaValue;              // static float oldgammavalue from CheckGamma

        // V_Init
        public static void Init()
        {
            cmd.Add("v_cshift", CShift_f);
            cmd.Add("bf", BonusFlash_f);
            cmd.Add("centerview", StartPitchDrift);

            if (_LcdX == null)
            {
                _LcdX   = new cvar("lcd_x", "0");
                _LcdYaw = new cvar("lcd_yaw", "0");

                _ScrOfsX = new cvar("scr_ofsx", "0", false);
                _ScrOfsY = new cvar("scr_ofsy", "0", false);
                _ScrOfsZ = new cvar("scr_ofsz", "0", false);

                _ClRollSpeed = new cvar("cl_rollspeed", "200");
                _ClRollAngle = new cvar("cl_rollangle", "2.0");

                _ClBob      = new cvar("cl_bob", "0.02", false);
                _ClBobCycle = new cvar("cl_bobcycle", "0.6", false);
                _ClBobUp    = new cvar("cl_bobup", "0.5", false);

                _KickTime  = new cvar("v_kicktime", "0.5", false);
                _KickRoll  = new cvar("v_kickroll", "0.6", false);
                _KickPitch = new cvar("v_kickpitch", "0.6", false);

                _IYawCycle   = new cvar("v_iyaw_cycle", "2", false);
                _IRollCycle  = new cvar("v_iroll_cycle", "0.5", false);
                _IPitchCycle = new cvar("v_ipitch_cycle", "1", false);
                _IYawLevel   = new cvar("v_iyaw_level", "0.3", false);
                _IRollLevel  = new cvar("v_iroll_level", "0.1", false);
                _IPitchLevel = new cvar("v_ipitch_level", "0.3", false);

                _IdleScale = new cvar("v_idlescale", "0", false);

                _Crosshair = new cvar("crosshair", "0", true);
                _ClCrossX  = new cvar("cl_crossx", "0", false);
                _ClCrossY  = new cvar("cl_crossy", "0", false);

                _glCShiftPercent = new cvar("gl_cshiftpercent", "100", false);

                _CenterMove  = new cvar("v_centermove", "0.15", false);
                _CenterSpeed = new cvar("v_centerspeed", "500");

                BuildGammaTable(1.0f);          // no gamma yet
                _Gamma = new cvar("gamma", "1", true);
            }
        }
Beispiel #14
0
        /// <summary>
        /// Cvar_WriteVariables
        /// Writes lines containing "set variable value" for all variables
        /// with the archive flag set to true.
        /// </summary>
        public static void WriteVariables(Stream dest)
        {
            StringBuilder sb  = new StringBuilder(4096);
            cvar          var = _Vars;

            while (var != null)
            {
                if (var.IsArchive)
                {
                    sb.Append(var._Name);
                    sb.Append(" \"");
                    sb.Append(var._String);
                    sb.AppendLine("\"");
                }
                var = var._Next;
            }
            byte[] buf = Encoding.ASCII.GetBytes(sb.ToString());
            dest.Write(buf, 0, buf.Length);
        }
Beispiel #15
0
        // Cvar_Command()
        // Handles variable inspection and changing from the console
        public static bool Command()
        {
            // check variables
            cvar var = Find(cmd.Argv(0));

            if (var == null)
            {
                return(false);
            }

            // perform a variable print or set
            if (cmd.Argc == 1)
            {
                Con.Print("\"{0}\" is \"{1}\"\n", var._Name, var._String);
            }
            else
            {
                var.Set(cmd.Argv(1));
            }
            return(true);
        }
Beispiel #16
0
        // Cvar_CompleteVariable()
        public static string[] CompleteName(string partial)
        {
            if (String.IsNullOrEmpty(partial))
            {
                return(null);
            }

            List <string> result = new List <string>();
            cvar          var    = _Vars;

            while (var != null)
            {
                if (var._Name.StartsWith(partial))
                {
                    result.Add(var._Name);
                }

                var = var._Next;
            }
            return(result.Count > 0 ? result.ToArray() : null);
        }
Beispiel #17
0
        // PR_Init
        public static void Init()
        {
            cmd.Add("edict", PrintEdict_f);
            cmd.Add("edicts", PrintEdicts);
            cmd.Add("edictcount", EdictCount);
            cmd.Add("profile", Profile_f);
            cmd.Add("test5", Test5_f);

            if (_NoMonsters == null)
            {
                _NoMonsters   = new cvar("nomonsters", "0");
                _GameCfg      = new cvar("gamecfg", "0");
                _Scratch1     = new cvar("scratch1", "0");
                _Scratch2     = new cvar("scratch2", "0");
                _Scratch3     = new cvar("scratch3", "0");
                _Scratch4     = new cvar("scratch4", "0");
                _SavedGameCfg = new cvar("savedgamecfg", "0", true);
                _Saved1       = new cvar("saved1", "0", true);
                _Saved2       = new cvar("saved2", "0", true);
                _Saved3       = new cvar("saved3", "0", true);
                _Saved4       = new cvar("saved4", "0", true);
            }
        }
Beispiel #18
0
        private static string _glExtensions;     // gl_extensions

        // VID_Init (unsigned char *palette)
        // Called at startup to set up translation tables, takes 256 8 bit RGB values
        // the palette data will go away after the call, so it must be copied off if
        // the video driver will need it again
        public static void Init(byte[] palette)
        {
            if (_glZTrick == null)
            {
                _glZTrick       = new cvar("gl_ztrick", "1");
                _Mode           = new cvar("vid_mode", "0", false);
                _DefaultMode    = new cvar("_vid_default_mode", "0", true);
                _DefaultModeWin = new cvar("_vid_default_mode_win", "3", true);
                _Wait           = new cvar("vid_wait", "0");
                _NoPageFlip     = new cvar("vid_nopageflip", "0", true);
                _WaitOverride   = new cvar("_vid_wait_override", "0", true);
                _ConfigX        = new cvar("vid_config_x", "800", true);
                _ConfigY        = new cvar("vid_config_y", "600", true);
                _StretchBy2     = new cvar("vid_stretch_by_2", "1", true);
                _WindowedMouse  = new cvar("_windowed_mouse", "1", true);
            }

            cmd.Add("vid_nummodes", NumModes_f);
            cmd.Add("vid_describecurrentmode", DescribeCurrentMode_f);
            cmd.Add("vid_describemode", DescribeMode_f);
            cmd.Add("vid_describemodes", DescribeModes_f);

            DisplayDevice dev = mainwindow.DisplayDevice;

            // Enumerate available modes, skip 8 bpp modes, and group by refresh rates
            List <mode_t> tmp = new List <mode_t>(dev.AvailableResolutions.Count);

            foreach (DisplayResolution res in dev.AvailableResolutions)
            {
                if (res.BitsPerPixel <= 8)
                {
                    continue;
                }

                Predicate <mode_t> SameMode = delegate(mode_t m)
                {
                    return(m.width == res.Width && m.height == res.Height && m.bpp == res.BitsPerPixel);
                };
                if (tmp.Exists(SameMode))
                {
                    continue;
                }

                mode_t mode = new mode_t();
                mode.width       = res.Width;
                mode.height      = res.Height;
                mode.bpp         = res.BitsPerPixel;
                mode.refreshRate = res.RefreshRate;
                tmp.Add(mode);
            }
            _Modes = tmp.ToArray();

            mode_t mode1 = new mode_t();

            mode1.width       = dev.Width;
            mode1.height      = dev.Height;
            mode1.bpp         = dev.BitsPerPixel;
            mode1.refreshRate = dev.RefreshRate;
            mode1.fullScreen  = true;

            int width = dev.Width, height = dev.Height;
            int i = common.CheckParm("-width");

            if (i > 0 && i < common.Argc - 1)
            {
                width = common.atoi(common.Argv(i + 1));

                foreach (DisplayResolution res in dev.AvailableResolutions)
                {
                    if (res.Width == width)
                    {
                        height = res.Height;
                        break;
                    }
                }
            }

            i = common.CheckParm("-height");
            if (i > 0 && i < common.Argc - 1)
            {
                height = common.atoi(common.Argv(i + 1));
            }

            mode1.width  = width;
            mode1.height = height;

            if (common.HasParam("-window"))
            {
                _Windowed = true;
            }
            else
            {
                _Windowed = false;

                if (common.HasParam("-current"))
                {
                    mode1.width  = dev.Width;
                    mode1.height = dev.Height;
                }
                else
                {
                    int bpp = mode1.bpp;
                    i = common.CheckParm("-bpp");
                    if (i > 0 && i < common.Argc - 1)
                    {
                        bpp = common.atoi(common.Argv(i + 1));
                    }
                    mode1.bpp = bpp;
                }
            }

            //_IsInitialized = true;

            int i2 = common.CheckParm("-conwidth");

            if (i2 > 0)
            {
                Scr.vid.conwidth = common.atoi(common.Argv(i2 + 1));
            }
            else
            {
                Scr.vid.conwidth = 640;
            }

            Scr.vid.conwidth &= 0xfff8; // make it a multiple of eight

            if (Scr.vid.conwidth < 320)
            {
                Scr.vid.conwidth = 320;
            }

            // pick a conheight that matches with correct aspect
            Scr.vid.conheight = Scr.vid.conwidth * 3 / 4;

            i2 = common.CheckParm("-conheight");
            if (i2 > 0)
            {
                Scr.vid.conheight = common.atoi(common.Argv(i2 + 1));
            }
            if (Scr.vid.conheight < 200)
            {
                Scr.vid.conheight = 200;
            }

            Scr.vid.maxwarpwidth  = WARP_WIDTH;
            Scr.vid.maxwarpheight = WARP_HEIGHT;
            Scr.vid.colormap      = host.ColorMap;
            int v = BitConverter.ToInt32(host.ColorMap, 2048);

            Scr.vid.fullbright = 256 - common.LittleLong(v);

            CheckGamma(palette);
            SetPalette(palette);

            mode1.fullScreen = !_Windowed;

            _DefModeNum = -1;
            for (i = 0; i < _Modes.Length; i++)
            {
                mode_t m = _Modes[i];
                if (m.width != mode1.width || m.height != mode1.height)
                {
                    continue;
                }

                _DefModeNum = i;

                if (m.bpp == mode1.bpp && m.refreshRate == mode1.refreshRate)
                {
                    break;
                }
            }
            if (_DefModeNum == -1)
            {
                _DefModeNum = 0;
            }

            SetMode(_DefModeNum, palette);

            InitOpenGL();

            Directory.CreateDirectory(Path.Combine(common.GameDir, "glquake"));
        }
Beispiel #19
0
        // Draw_Init
        public static void Init()
        {
            for (int i = 0; i < _MenuCachePics.Length; i++)
            {
                _MenuCachePics[i] = new cachepic_t();
            }

            if (_glNoBind == null)
            {
                _glNoBind  = new cvar("gl_nobind", "0");
                _glMaxSize = new cvar("gl_max_size", "1024");
                _glPicMip  = new cvar("gl_picmip", "0");
            }

            // 3dfx can only handle 256 wide textures
            string renderer = GL.GetString(StringName.Renderer);

            if (renderer.Contains("3dfx") || renderer.Contains("Glide"))
            {
                cvar.Set("gl_max_size", "256");
            }

            cmd.Add("gl_texturemode", TextureMode_f);
            cmd.Add("imagelist", Imagelist_f);

            // load the console background and the charset
            // by hand, because we need to write the version
            // string into the background before turning
            // it into a texture
            int offset = wad.GetLumpNameOffset("conchars");

            byte[] draw_chars = wad.Data; // draw_chars
            for (int i = 0; i < 256 * 64; i++)
            {
                if (draw_chars[offset + i] == 0)
                {
                    draw_chars[offset + i] = 255;       // proper transparent color
                }
            }

            // now turn them into textures
            _CharTexture = LoadTexture("charset", 128, 128, new ByteArraySegment(draw_chars, offset), false, true);

            byte[] buf = common.LoadFile("gfx/conback.lmp");
            if (buf == null)
            {
                sys.Error("Couldn't load gfx/conback.lmp");
            }

            dqpicheader_t cbHeader = sys.BytesToStructure <dqpicheader_t>(buf, 0);

            wad.SwapPic(cbHeader);

            // hack the version number directly into the pic
            string ver     = String.Format("(c# {0,7:F2}) {1,7:F2}", (float)QDef.CSQUAKE_VERSION, (float)QDef.VERSION);
            int    offset2 = Marshal.SizeOf(typeof(dqpicheader_t)) + 320 * 186 + 320 - 11 - 8 * ver.Length;
            int    y       = ver.Length;

            for (int x = 0; x < y; x++)
            {
                CharToConback(ver[x], new ByteArraySegment(buf, offset2 + (x << 3)), new ByteArraySegment(draw_chars, offset));
            }

            _ConBack        = new glpic_t();
            _ConBack.width  = cbHeader.width;
            _ConBack.height = cbHeader.height;
            int ncdataIndex = Marshal.SizeOf(typeof(dqpicheader_t));     // cb->data;

            SetTextureFilters(TextureMinFilter.Nearest, TextureMagFilter.Nearest);

            _ConBack.texnum = LoadTexture("conback", _ConBack.width, _ConBack.height, new ByteArraySegment(buf, ncdataIndex), false, false);
            _ConBack.width  = Scr.vid.width;
            _ConBack.height = Scr.vid.height;

            // save a texture slot for translated picture
            _TranslateTexture = _TextureExtensionNumber++;

            // save slots for scraps
            _ScrapTexNum             = _TextureExtensionNumber;
            _TextureExtensionNumber += MAX_SCRAPS;

            //
            // get the other pics we need
            //
            _Disc     = PicFromWad("disc");
            _BackTile = PicFromWad("backtile");
        }
Beispiel #20
0
        // vcrSendMessage
        // NET_Init (void)
        public static void Init()
        {
            for (int i2 = 0; i2 < _HostCache.Length; i2++)
            {
                _HostCache[i2] = new hostcache_t();
            }

            if (_Drivers == null)
            {
                if (common.HasParam("-playback"))
                {
                    _Drivers = new INetDriver[]
                    {
                        new net_vcr()
                    };
                }
                else
                {
                    _Drivers = new INetDriver[]
                    {
                        new net_loop(),
                        net_datagram.Instance
                    };
                }
            }

            if (_LanDrivers == null)
            {
                _LanDrivers = new INetLanDriver[]
                {
                    net_tcp_ip.Instance
                };
            }

            if (common.HasParam("-record"))
            {
                _IsRecording = true;
            }

            int i = common.CheckParm("-port");

            if (i == 0)
            {
                i = common.CheckParm("-udpport");
            }
            if (i == 0)
            {
                i = common.CheckParm("-ipxport");
            }

            if (i > 0)
            {
                if (i < common.Argc - 1)
                {
                    _DefHostPort = common.atoi(common.Argv(i + 1));
                }
                else
                {
                    sys.Error("Net.Init: you must specify a number after -port!");
                }
            }
            HostPort = _DefHostPort;

            if (common.HasParam("-listen") || client.cls.state == cactive_t.ca_dedicated)
            {
                _IsListening = true;
            }
            int numsockets = server.svs.maxclientslimit;

            if (client.cls.state != cactive_t.ca_dedicated)
            {
                numsockets++;
            }

            _FreeSockets   = new List <qsocket_t>(numsockets);
            _ActiveSockets = new List <qsocket_t>(numsockets);

            for (i = 0; i < numsockets; i++)
            {
                _FreeSockets.Add(new qsocket_t());
            }

            SetNetTime();

            // allocate space for network message buffer
            Message = new MsgWriter(NET_MAXMESSAGE);   // SZ_Alloc (&net_message, NET_MAXMESSAGE);
            Reader  = new MsgReader(net.Message);

            if (_MessageTimeout == null)
            {
                _MessageTimeout = new cvar("net_messagetimeout", "300");
                _HostName       = new cvar("hostname", "UNNAMED");
            }

            cmd.Add("slist", Slist_f);
            cmd.Add("listen", Listen_f);
            cmd.Add("maxplayers", MaxPlayers_f);
            cmd.Add("port", Port_f);

            // initialize all the drivers
            _DriverLevel = 0;
            foreach (INetDriver driver in _Drivers)
            {
                driver.Init();
                if (driver.IsInitialized && _IsListening)
                {
                    driver.Listen(true);
                }
                _DriverLevel++;
            }

            //if (*my_ipx_address)
            //    Con_DPrintf("IPX address %s\n", my_ipx_address);
            if (!String.IsNullOrEmpty(_MyTcpIpAddress))
            {
                Con.DPrint("TCP/IP address {0}\n", _MyTcpIpAddress);
            }
        }