class Options : PersistentOptions { static val instance = Options() // Not shown on the options scene. @Option( values="None : 0" ) var chaptersCompleted = 0 // Not shown on the options scene. @Option( values="None : 0" ) var instalmentsCompleted = 0 @Option( values = """ Easy (default) : 0 Medium : 1 Hard : 2 """) var hardness = 0 // Ship and cargo slow down (air resistance) @Option( values = """ None (Hardest) :0.0 Low (default) : 0.01 Medium : 0.02 High (Easiest, but Slow) : 0.03 """ ) var drag = 0.01 // Distance between the ship and its cargo @Option( values = """ Very Short : 100.0 Short : 120.0 Medium (default) : 150.0 Long : 200.0 Very Long : 250.0 """ ) var rodLength = 150.0 // Should we die, if GoldCargo is destroyed @Option( values = """ Respawn (default) : false Die : true """ ) var isGoldVital = false // Should we die, if WaterCargo is destroyed @Option( values = """ Respawn (default) : false Die : true """ ) var isWaterVital = false // Always -ve for an attractive force. @Option( values = """ Off : 0 Low (default) : -1000 Medium : -2000 High : -4000 """ ) var magneticStrength = -1000.0 @Option( values = """ Off (default) : 0 From Ceilings : 1 From Ceilings and Domes : 2 """ ) var moreAcid = 0 @Option( values = """ Off (default) : 0 Must Enter Slowly : -3 Must Enter Quickly : 5 Must Enter Very Quickly : 10 """ ) var faultyGate = 0 // -ve => Must enter slowly +ve => Must enter quickly 0 => Any speed is okay. @Option( values = """ Off (Sensible) : 0 Sea Sick (Bucket on Standby) : 1 Bed Spin : 2 Bad Bed Spin : 3 Vertigo : 4 """ ) var nausia = 0 // See Play.createNausiaAction for details. @Option( values = """ Off (default) : 0 Small : 3 Medium : 6 Large (Harest) : 9 """ ) var dangerZone = 0 // The scale of "explosion" emitted by the Gate when cargo is sent. @Option( values = """ No : false Yes : true """) var isFullScreen = false init { rememberDefaultValues() } override fun toString() = """Options : chaptersCompleted=$chaptersCompleted instalmentsCompleted=$instalmentsCompleted drag : $drag rodLength $rodLength magneticStrength=$magneticStrength moreAcid=$moreAcid nausia=$nausia dangerZone=$dangerZone isFullScreen=$isFullScreen """ } class OptionsDirector : Menu { override fun begin() { super.begin() Options.instance.initialiseControls() } override fun ending() { Options.instance.readControls() Options.instance.save() super.begin() } override fun message( message : String ) { if (message == "resetOptions" ) { Options.instance.reset() } } }