Esempio n. 1
0
        // SCR_CalcRefdef
        //
        // Must be called whenever vid changes
        // Internal use only
        private static void CalcRefdef()
        {
            Scr.FullUpdate        = 0; // force a background redraw
            _VidDef.recalc_refdef = false;

            // force the status bar to redraw
            Sbar.Changed();

            // bound viewsize
            if (_ViewSize.Value < 30)
            {
                Cvar.Set("viewsize", "30");
            }
            if (_ViewSize.Value > 120)
            {
                Cvar.Set("viewsize", "120");
            }

            // bound field of view
            if (_Fov.Value < 10)
            {
                Cvar.Set("fov", "10");
            }
            if (_Fov.Value > 170)
            {
                Cvar.Set("fov", "170");
            }

            // intermission is always full screen
            float size;

            if (Client.cl.intermission > 0)
            {
                size = 120;
            }
            else
            {
                size = _ViewSize.Value;
            }

            if (size >= 120)
            {
                Sbar.Lines = 0; // no status bar at all
            }
            else if (size >= 110)
            {
                Sbar.Lines = 24; // no inventory
            }
            else
            {
                Sbar.Lines = 24 + 16 + 8;
            }

            bool full = false;

            if (_ViewSize.Value >= 100.0)
            {
                full = true;
                size = 100.0f;
            }
            else
            {
                size = _ViewSize.Value;
            }

            if (Client.cl.intermission > 0)
            {
                full       = true;
                size       = 100;
                Sbar.Lines = 0;
            }
            size /= 100.0f;

            int h = _VidDef.height - Sbar.Lines;

            refdef_t rdef = Render.RefDef;

            rdef.vrect.width = (int)(_VidDef.width * size);
            if (rdef.vrect.width < 96)
            {
                size             = 96.0f / rdef.vrect.width;
                rdef.vrect.width = 96;  // min for icons
            }

            rdef.vrect.height = (int)(_VidDef.height * size);
            if (rdef.vrect.height > _VidDef.height - Sbar.Lines)
            {
                rdef.vrect.height = _VidDef.height - Sbar.Lines;
            }
            if (rdef.vrect.height > _VidDef.height)
            {
                rdef.vrect.height = _VidDef.height;
            }
            rdef.vrect.x = (_VidDef.width - rdef.vrect.width) / 2;
            if (full)
            {
                rdef.vrect.y = 0;
            }
            else
            {
                rdef.vrect.y = (h - rdef.vrect.height) / 2;
            }

            rdef.fov_x = _Fov.Value;
            rdef.fov_y = CalcFov(rdef.fov_x, rdef.vrect.width, rdef.vrect.height);

            _VRect = rdef.vrect;
        }
Esempio n. 2
0
        // SCR_CalcRefdef
        //
        // Must be called whenever vid changes
        // Internal use only
        static void CalcRefdef()
        {
            Scr.FullUpdate = 0; // force a background redraw
            _VidDef.recalc_refdef = false;

            // force the status bar to redraw
            Sbar.Changed();

            // bound viewsize
            if (_ViewSize.Value < 30)
                Cvar.Set("viewsize", "30");
            if (_ViewSize.Value > 120)
                Cvar.Set("viewsize", "120");

            // bound field of view
            if (_Fov.Value < 10)
                Cvar.Set("fov", "10");
            if (_Fov.Value > 170)
                Cvar.Set("fov", "170");

            // intermission is always full screen
            float size;
            if (Client.cl.intermission > 0)
                size = 120;
            else
                size = _ViewSize.Value;

            if (size >= 120)
                Sbar.Lines = 0; // no status bar at all
            else if (size >= 110)
                Sbar.Lines = 24; // no inventory
            else
                Sbar.Lines = 24 + 16 + 8;

            bool full = false;
            if (_ViewSize.Value >= 100.0)
            {
                full = true;
                size = 100.0f;
            } else
                size = _ViewSize.Value;

            if (Client.cl.intermission > 0)
            {
                full = true;
                size = 100;
                Sbar.Lines = 0;
            }
            size /= 100.0f;

            int h = _VidDef.height - Sbar.Lines;

            refdef_t rdef = Render.RefDef;
            rdef.vrect.width = (int)(_VidDef.width * size);
            if (rdef.vrect.width < 96)
            {
                size = 96.0f / rdef.vrect.width;
                rdef.vrect.width = 96;	// min for icons
            }

            rdef.vrect.height = (int)(_VidDef.height * size);
            if (rdef.vrect.height > _VidDef.height - Sbar.Lines)
                rdef.vrect.height = _VidDef.height - Sbar.Lines;
            if (rdef.vrect.height > _VidDef.height)
                rdef.vrect.height = _VidDef.height;
            rdef.vrect.x = (_VidDef.width - rdef.vrect.width) / 2;
            if (full)
                rdef.vrect.y = 0;
            else
                rdef.vrect.y = (h - rdef.vrect.height) / 2;

            rdef.fov_x = _Fov.Value;
            rdef.fov_y = CalcFov (rdef.fov_x, rdef.vrect.width, rdef.vrect.height);

            _VRect = rdef.vrect;
        }