// 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; }
// 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; }