216 mVideoSettings(
Client::getVideo().settings()),
217 mCustomCursorEnabled(
config.customCursor),
218 mParticleEffectsEnabled(
config.particleEffects),
220 mSDLTransparencyDisabled(
config.disableTransparency),
221 mWindowModeListModel(new
StringListModel({
_(
"Windowed"),
_(
"Windowed Fullscreen"),
_(
"Fullscreen") })),
224 mWindowModeDropDown(
new DropDown(mWindowModeListModel.get())),
225 mResolutionDropDown(
new DropDown(mResolutionListModel.get())),
226 mScaleDropDown(
new DropDown(mScaleListModel.get())),
227 mVSyncCheckBox(
new CheckBox(
_(
"VSync"), mVideoSettings.vsync)),
228 mOpenGLCheckBox(
new CheckBox(
_(
"OpenGL (Legacy)"), mVideoSettings.openGL)),
229 mCustomCursorCheckBox(
new CheckBox(
_(
"Custom cursor"), mCustomCursorEnabled)),
230 mParticleEffectsCheckBox(
new CheckBox(
_(
"Particle effects"), mParticleEffectsEnabled)),
231 mFpsCheckBox(
new CheckBox(
_(
"FPS limit:"))),
232 mFpsSlider(
new Slider(10, 120)),
233 mFpsLabel(
new Label),
235 mOverlayDetailSlider(
new Slider(0, 2)),
236 mOverlayDetailField(
new Label),
238 mParticleDetailSlider(
new Slider(0, 3)),
239 mParticleDetailField(
new Label),
240 mDisableSDLTransparencyCheckBox(
241 new CheckBox(
_(
"Disable transparency (Low CPU mode)"),
242 mSDLTransparencyDisabled))
246 auto overlayDetailLabel =
new Label(
_(
"Ambient FX:"));
247 auto particleDetailLabel =
new Label(
_(
"Particle detail:"));
250 mOpenGLCheckBox->setEnabled(
false);
253 mFpsLabel->setCaption(mFps > 0 ?
toString(mFps) :
_(
"None"));
254 mFpsLabel->setWidth(60);
255 mFpsSlider->setValue(mFps);
256 mFpsSlider->setEnabled(mFps > 0);
257 mFpsCheckBox->setSelected(mFps > 0);
259 overlayDetailLabel->setAlignment(Graphics::RIGHT);
260 particleDetailLabel->setAlignment(Graphics::RIGHT);
264 mDisableSDLTransparencyCheckBox->setEnabled(!mVideoSettings.openGL);
267 mWindowModeDropDown->setSelected(
static_cast<int>(mVideoSettings.windowMode));
268 mResolutionDropDown->setSelected(mResolutionListModel->getIndexOf(mVideoSettings.width,
269 mVideoSettings.height));
271 mScaleDropDown->setSelected(mVideoSettings.userScale);
274 mWindowModeDropDown->setActionEventId(
"windowmode");
275 mResolutionDropDown->setActionEventId(
"resolution");
276 mCustomCursorCheckBox->setActionEventId(
"customcursor");
277 mParticleEffectsCheckBox->setActionEventId(
"particleeffects");
278 mDisableSDLTransparencyCheckBox->setActionEventId(
"disableTransparency");
279 mFpsCheckBox->setActionEventId(
"fpslimitcheckbox");
280 mFpsSlider->setActionEventId(
"fpslimitslider");
281 mOverlayDetailSlider->setActionEventId(
"overlaydetailslider");
282 mOverlayDetailField->setActionEventId(
"overlaydetailfield");
283 mOpenGLCheckBox->setActionEventId(
"opengl");
284 mParticleDetailSlider->setActionEventId(
"particledetailslider");
285 mParticleDetailField->setActionEventId(
"particledetailfield");
288 mWindowModeDropDown->addActionListener(
this);
289 mResolutionDropDown->addActionListener(
this);
290 mCustomCursorCheckBox->addActionListener(
this);
291 mOpenGLCheckBox->addActionListener(
this);
292 mParticleEffectsCheckBox->addActionListener(
this);
293 mDisableSDLTransparencyCheckBox->addActionListener(
this);
294 mFpsCheckBox->addActionListener(
this);
295 mFpsSlider->addActionListener(
this);
296 mOverlayDetailSlider->addActionListener(
this);
297 mOverlayDetailField->addKeyListener(
this);
298 mParticleDetailSlider->addActionListener(
this);
299 mParticleDetailField->addKeyListener(
this);
301 mOverlayDetailField->setCaption(overlayDetailToString(mOverlayDetail));
302 mOverlayDetailSlider->setValue(mOverlayDetail);
304 mParticleDetailField->setCaption(particleDetailToString(mParticleDetail));
305 mParticleDetailSlider->setValue(mParticleDetail);
311 place(0, 0,
new Label(
_(
"Window mode:")));
312 place(1, 0, mWindowModeDropDown, 2).setPadding(2);
313 place(0, 1,
new Label(
_(
"Resolution:")));
314 place(1, 1, mResolutionDropDown, 2).setPadding(2);
315 place(0, 2,
new Label(
_(
"Scale:")));
316 place(1, 2, mScaleDropDown, 2).setPadding(2);
317 place(0, 3, mVSyncCheckBox, 4);
318 place(0, 4, mOpenGLCheckBox, 4);
320 place = getPlacer(0, 1);
323 place(0, 0,
new Spacer(), 4);
324 place(0, 1, mCustomCursorCheckBox, 4);
325 place(0, 2, mDisableSDLTransparencyCheckBox, 4);
327 place(0, 3, mFpsCheckBox);
329 place(3, 3, mFpsLabel);
331 place(0, 4, mParticleEffectsCheckBox, 4);
333 place(0, 5, particleDetailLabel);
335 place(3, 5, mParticleDetailField);
337 place(0, 6, overlayDetailLabel);
339 place(3, 6, mOverlayDetailField);
static int emitterSkip
Duration of pause between two emitter updates in ticks.
static bool enabled
true when non-crucial particle effects are disabled