Merge pull request #4244 from Mailaender/fps-settings

Made the FPS settings fool proof
This commit is contained in:
Paul Chote
2013-12-06 11:51:25 -08:00
2 changed files with 16 additions and 2 deletions

View File

@@ -420,6 +420,12 @@ namespace OpenRA
internal static void Run()
{
if (Settings.Graphics.MaxFramerate < 1)
{
Settings.Graphics.MaxFramerate = new GraphicSettings().MaxFramerate;
Settings.Graphics.CapFramerate = false;
}
while (!quit)
{
var idealFrameTime = 1.0 / Settings.Graphics.MaxFramerate;
@@ -431,7 +437,7 @@ namespace OpenRA
{
var waitTime = idealFrameTime - sw.ElapsedTime();
if (waitTime > 0)
System.Threading.Thread.Sleep( TimeSpan.FromSeconds(waitTime) );
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(waitTime));
}
}

View File

@@ -150,6 +150,14 @@ namespace OpenRA.Mods.RA.Widgets.Logic
var frameLimitTextfield = panel.Get<TextFieldWidget>("FRAME_LIMIT_TEXTFIELD");
frameLimitTextfield.Text = ds.MaxFramerate.ToString();
frameLimitTextfield.OnLoseFocus = () =>
{
int fps;
int.TryParse(frameLimitTextfield.Text, out fps);
ds.MaxFramerate = fps.Clamp(20, 200);
frameLimitTextfield.Text = ds.MaxFramerate.ToString();
};
frameLimitTextfield.OnEnterKey = () => { frameLimitTextfield.YieldKeyboardFocus(); return true; };
frameLimitTextfield.IsDisabled = () => !ds.CapFramerate;
return () =>
@@ -158,7 +166,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
int.TryParse(windowWidth.Text, out x);
int.TryParse(windowHeight.Text, out y);
ds.WindowedSize = new int2(x, y);
int.TryParse(frameLimitTextfield.Text, out ds.MaxFramerate);
frameLimitTextfield.YieldKeyboardFocus();
};
}