config (Konfiguration)
Die Standardeinstellungen der Engine Pi können mithilfe einer
Konfigurationsdatei names engine-pi.properties verändert werden. Dabei handelt
es sich um eine
Java-Properties-Datei,
also ein sehr einfaches, selbsterklärend Format. Beim Starten eines Projekts
sucht die Engine Pi im Ausführungsorder der Anwendung nach dieser Datei. Falls
keine solche Datei vorhanden ist, erstellt die Engine eine
engine-pi.properties mit den Standardwerten:
game_instantMode=true
graphics_framerate=60
graphics_windowWidth=768
graphics_windowHeight=576
graphics_windowPosition=NONE
graphics_colorScheme=Gnome
graphics_pixelMultiplication=1
graphics_screenRecordingNFrames=2
sound_soundVolume=0.5
sound_musicVolume=0.5
debug_enabled=false
debug_verbose=false
debug_renderActors=true
debug_actorCoordinates=false
coordinatesystem_linesNMeter=-1
coordinatesystem_labelsOnIntersections=false
Die einzelnen Einstellmöglichkeiten sind in Konfigurationsgruppen, die jeweils ein Präfix haben, organisiert:
game_: GameConfiggraphics_: GraphicsConfigsound_: SoundConfigdebug_: DebugConfigcoordinatesystem_: CoordinatesystemConfig
Das statische Attribut Controller.config der Klasse Controller bietet Zugriff auf alle Einstellmöglichkeiten.
Das config-Objekt kann auch über einen statischen Import eingebunden werden:
import static pi.Controller.config;. Statt Controller.config
kann dann etwas kürzer config geschrieben werden.
Das folgende Codebeispiel testet alle Einstellmöglichkeit mit den Standardwerten:
import static pi.Controller.config;
assertEquals(true, config.game.instantMode());
assertEquals(768, config.graphics.windowWidth());
assertEquals(576, config.graphics.windowHeight());
assertEquals(Direction.NONE, config.graphics.windowPosition());
assertEquals(32.0, config.graphics.pixelPerMeter());
assertEquals(0.05, config.graphics.zoomChange());
assertEquals(60, config.graphics.framerate());
assertEquals("Gnome", config.graphics.colorScheme());
assertEquals(1, config.graphics.pixelMultiplication());
assertEquals(2, config.graphics.screenRecordingNFrames());
assertEquals(0.5, config.sound.soundVolume());
assertEquals(0.5, config.sound.musicVolume());
assertEquals(false, config.debug.enabled());
assertEquals(false, config.debug.verbose());
assertEquals(true, config.debug.renderActors());
assertEquals(false, config.debug.actorCoordinates());
assertEquals(-1, config.coordinatesystem.linesNMeter());
assertEquals(false, config.coordinatesystem.labelsOnIntersections());
Benutzerdefinierte Konfigurationsgruppen
Die Engine Pi bietet die Möglichkeit, auch eigene Konfigurationsgruppen zu
definieren und dem config-Objekt
hinzuzufügen.1 Die Klasse MyConfigGroup definierte eine
Einstellmöglichkeit in Form eines Attributs mit dem Namen myInt. Die
dazugehörenden Getter- und Setter-Methoden haben - wie in der Engine Pi üblich -
kein get- bzw. set-Präfix: