@@ -75,6 +75,7 @@ public SettingsPanel(WindowManager windowManager) : base(windowManager)
75
75
}
76
76
77
77
private XNADropDown ddRenderScale ;
78
+ private XNADropDown ddTargetFPS ;
78
79
private XNACheckBox chkBorderless ;
79
80
private XNADropDown ddTheme ;
80
81
private XNADropDown ddScrollRate ;
@@ -129,11 +130,28 @@ public override void Initialize()
129
130
}
130
131
}
131
132
133
+ var lblTargetFPS = new XNALabel ( WindowManager ) ;
134
+ lblTargetFPS . Name = nameof ( lblTargetFPS ) ;
135
+ lblTargetFPS . Text = "Target FPS:" ;
136
+ lblTargetFPS . X = Constants . UIEmptySideSpace ;
137
+ lblTargetFPS . Y = ddRenderScale . Bottom + Constants . UIEmptyTopSpace + 1 ;
138
+ AddChild ( lblTargetFPS ) ;
139
+
140
+ ddTargetFPS = new XNADropDown ( WindowManager ) ;
141
+ ddTargetFPS . Name = nameof ( ddTargetFPS ) ;
142
+ ddTargetFPS . X = ddRenderScale . X ;
143
+ ddTargetFPS . Y = lblTargetFPS . Y - 1 ;
144
+ ddTargetFPS . Width = ddRenderScale . Width ;
145
+ AddChild ( ddTargetFPS ) ;
146
+ var targetFramerates = new int [ ] { 1000 , 480 , 240 , 144 , 120 , 90 , 75 , 60 , 30 , 20 } ;
147
+ foreach ( int frameRate in targetFramerates )
148
+ ddTargetFPS . AddItem ( new XNADropDownItem ( ) { Text = frameRate . ToString ( CultureInfo . InvariantCulture ) , Tag = frameRate } ) ;
149
+
132
150
var lblTheme = new XNALabel ( WindowManager ) ;
133
151
lblTheme . Name = nameof ( lblTheme ) ;
134
152
lblTheme . Text = "Theme:" ;
135
153
lblTheme . X = lblRenderScale . X ;
136
- lblTheme . Y = ddRenderScale . Bottom + Constants . UIEmptyTopSpace ;
154
+ lblTheme . Y = ddTargetFPS . Bottom + Constants . UIEmptyTopSpace ;
137
155
AddChild ( lblTheme ) ;
138
156
139
157
ddTheme = new XNADropDown ( WindowManager ) ;
@@ -218,6 +236,7 @@ private void LoadSettings()
218
236
var userSettings = UserSettings . Instance ;
219
237
220
238
ddRenderScale . SelectedIndex = ddRenderScale . Items . FindIndex ( i => ( double ) i . Tag == userSettings . RenderScale . GetValue ( ) ) ;
239
+ ddTargetFPS . SelectedIndex = ddTargetFPS . Items . FindIndex ( item => ( int ) item . Tag == userSettings . TargetFPS . GetValue ( ) ) ;
221
240
222
241
int selectedTheme = ddTheme . Items . FindIndex ( i => i . Text == userSettings . Theme ) ;
223
242
if ( selectedTheme == - 1 )
@@ -249,8 +268,12 @@ public void ApplySettings()
249
268
userSettings . FullscreenWindowed . UserDefinedValue = chkBorderless . Checked ;
250
269
251
270
if ( ddRenderScale . SelectedItem != null )
252
- {
253
271
userSettings . RenderScale . UserDefinedValue = ( double ) ddRenderScale . SelectedItem . Tag ;
272
+
273
+ if ( ddTargetFPS . SelectedItem != null )
274
+ {
275
+ userSettings . TargetFPS . UserDefinedValue = ( int ) ddTargetFPS . SelectedItem . Tag ;
276
+ WindowManager . Game . TargetElapsedTime = TimeSpan . FromMilliseconds ( 1000.0 / UserSettings . Instance . TargetFPS ) ;
254
277
}
255
278
256
279
userSettings . TextEditorPath . UserDefinedValue = tbTextEditorPath . Text ;
0 commit comments