@@ -166,6 +166,182 @@ dt = time_manager.getTimeDelta() # Time since last frame in seconds
166166
167167Use `dt` to scale movement and animation speeds for consistent behavior regardless of frame rate.
168168
169+ === Engine Change Listener
170+
171+ Monitor engine-level changes such as screen mode switches:
172+
173+ [source,python]
174+ ----
175+ class MyEngineChangeListener(fife.IEngineChangeListener):
176+ def onScreenModeChanged(self, newmode):
177+ print("Screen mode changed")
178+
179+ listener = MyEngineChangeListener()
180+ engine.addChangeListener(listener)
181+
182+ # Later, remove it
183+ engine.removeChangeListener(listener)
184+ ----
185+
186+ === Changing Screen Mode at Runtime
187+
188+ Change the display mode without re-initializing the engine:
189+
190+ [source,python]
191+ ----
192+ # Get available screen modes from device capabilities
193+ device_caps = engine.getDeviceCaps()
194+ modes = device_caps.getNearestScreenMode(width, height, bpp, fullscreen)
195+
196+ # Apply the new mode
197+ engine.changeScreenMode(modes)
198+ ----
199+
200+ The `changeScreenMode()` method handles re-creation of internal objects that depend on the display.
201+
202+ === Device Capabilities
203+
204+ Query supported display configurations:
205+
206+ [source,python]
207+ ----
208+ device_caps = engine.getDeviceCaps()
209+
210+ # Get available screen modes
211+ modes = device_caps.getAvailableScreenModes()
212+
213+ # Get available render drivers
214+ drivers = device_caps.getAvailableRenderDrivers()
215+ ----
216+
217+ === Additional Engine Accessors
218+
219+ The Engine provides access to additional subsystems:
220+
221+ [source,python]
222+ ----
223+ # Logging subsystem
224+ log_manager = engine.getLogManager()
225+
226+ # Special renderers (owned by engine, do not delete)
227+ off_renderer = engine.getOffRenderer()
228+ target_renderer = engine.getTargetRenderer()
229+
230+ # Cursor control
231+ cursor = engine.getCursor()
232+ ----
233+
234+ === Engine Settings Reference
235+
236+ ==== Display Index
237+
238+ For multi-monitor setups, select which display to use:
239+
240+ [source,python]
241+ ----
242+ settings.setDisplay(0) # Primary display (default)
243+ settings.setDisplay(1) # Secondary display
244+ ----
245+
246+ ==== SDL Render Driver
247+
248+ Select a specific SDL render driver:
249+
250+ [source,python]
251+ ----
252+ settings.setSDLDriver("software") # Platform-dependent values
253+ ----
254+
255+ ==== Video Driver
256+
257+ Set the video driver (platform-dependent):
258+
259+ [source,python]
260+ ----
261+ settings.setVideoDriver("x11") # Linux X11
262+ ----
263+
264+ ==== Color Key Transparency
265+
266+ Enable global colorkey-based transparency:
267+
268+ [source,python]
269+ ----
270+ settings.setColorKeyEnabled(True)
271+ settings.setColorKey(255, 0, 255) # Magenta as transparent color
272+ ----
273+
274+ ==== Monochrome Rendering
275+
276+ Render in grayscale (OpenGL only):
277+
278+ [source,python]
279+ ----
280+ settings.setGLUseMonochrome(True)
281+ ----
282+
283+ ==== Alpha Test Value
284+
285+ Set the alpha threshold for depth buffer discarding (OpenGL only):
286+
287+ [source,python]
288+ ----
289+ settings.setGLUseDepthBuffer(True)
290+ settings.setGLAlphaTestValue(0.1) # Discard fragments with alpha < 0.1
291+ ----
292+
293+ ==== SDL Fake Alpha Removal
294+
295+ Remove fake alpha in SDL backend:
296+
297+ [source,python]
298+ ----
299+ settings.setSDLRemoveFakeAlpha(True)
300+ ----
301+
302+ ==== Joystick Support
303+
304+ Enable or disable joystick and gamepad input:
305+
306+ [source,python]
307+ ----
308+ settings.setJoystickSupport(True) # Enable gamepad support
309+ ----
310+
311+ ==== Frame Limit
312+
313+ Limit the frame rate at the settings level. Also documented in xref:chapter06[Rendering].
314+
315+ [source,python]
316+ ----
317+ settings.setFrameLimitEnabled(True)
318+ settings.setFrameLimit(60) # 60 FPS max
319+ if settings.isFrameLimitEnabled():
320+ print("Frame limit:", settings.getFrameLimit())
321+ ----
322+
323+ ==== Mouse Sensitivity
324+
325+ Configure mouse input sensitivity and acceleration via settings
326+ (also configurable at runtime through xref:chapter08[EventManager]):
327+
328+ [source,python]
329+ ----
330+ settings.setMouseSensitivity(1.5) # Speed factor (1.0 = default)
331+ settings.setMouseAccelerationEnabled(True) # Enable mouse acceleration
332+ ----
333+
334+ ==== Native Image Cursor
335+
336+ Use a native OS cursor backed by an image file:
337+
338+ [source,python]
339+ ----
340+ settings.setNativeImageCursorEnabled(True)
341+ if settings.isNativeImageCursorEnabled():
342+ print("Using native cursor")
343+ ----
344+
169345=== Log Modules
170346
171347FIFE uses a hierarchical logging system. Each subsystem is a log module:
0 commit comments