package Ġuk . co . electron studio . ret row ar . menu Ċ Ċ import Ġcom . badlogic . gdx . math . Math Utils Ċ import Ġuk . co . electron studio . ret row ar . Prefs Ċ Ċ /** Ċ Ġ* ĠMen us Ġare Ġlists Ġof ĠMenu Items . Ġ ĠThere Ġare Ġseveral Ġdistinct Ġtypes .... Ċ Ġ*/ Ċ Ċ abstract Ġclass ĠMenuItem ( open Ġval Ġtext : ĠString ) Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġdisplay Text (): ĠString ĊĠĠĠ Ġabstract Ġfun Ġdo Action () ĊĠĠĠ Ġopen Ġfun Ġdo Action 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġreturn Ġdo Action () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġis Hidden : ĠBoolean Ġ= Ġfalse Ċ } Ċ Ċ class ĠGraph ical MenuItem Ċ Ċ class ĠBack MenuItem ( text : ĠString Ġ= Ġ" <<<< ") Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdisplay Text () Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠMulti Pref MenuItem ( text : ĠString , Ġval Ġm Pref : ĠP refs . Multi Choice Pref , Ġval Ġaction : Ġ() Ġ-> ĠUnit Ġ= Ġ{}) Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Pref . next () ĊĠĠĠĠĠĠĠ Ġaction . invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Pref . prev () ĊĠĠĠĠĠĠĠ Ġaction . invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay Text (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Pref . display Text () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠColor Pref MenuItem ( text : ĠString , Ġval Ġm Pref : ĠP refs . Multi Choice Pref , Ġval Ġaction : Ġ() Ġ-> ĠUnit Ġ= Ġ{}) Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Pref . next () ĊĠĠĠĠĠĠĠ Ġaction . invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Pref . prev () ĊĠĠĠĠĠĠĠ Ġaction . invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay Text (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġtext : ĠString Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"* Ġ[# ${ m Pref . display Text ()} ]$ field []" Ċ } Ċ Ċ // Ġfix me Ġthis Ġreally Ġshould nt Ġbe Ġmutable . Ġ Ġthere Ġshould Ġjust Ġbe Ġsome Ġmutable Ġwrapper Ġaround Ġit Ġto Ġswap Ġthem Ġwhen Ġneeded . Ċ class ĠMulti Choice MenuItem ( ĊĠĠĠ Ġtext : ĠString , ĊĠĠĠ Ġval ĠonUpdate : Ġ( String , ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġrun Ġ{} Ġ}, ĊĠĠĠ Ġvar Ġchoices : ĠList < String >, ĊĠĠĠ Ġval Ġint Values : ĠList < Int > Ċ ) Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġvar Ġselected Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġselected ++ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( selected Ġ> Ġchoices . last Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠonUpdate ( choices [ selected ], Ġint Values [ selected ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġselected -- ĊĊĠĠĠĠĠĠĠ Ġif Ġ( selected Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġchoices . last Index ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠonUpdate ( choices [ selected ], Ġint Values [ selected ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay Text (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Hidden ) Ġ" hidden !" Ġelse Ġchoices [ selected ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selected Int (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġint Values . get ( selected ) ĊĠĠĠĠĠĠĠ Ġreturn Ġi ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠNumber MenuItem ( text : ĠString , Ġinitial : ĠInt , Ġval Ġmin : ĠInt , Ġval Ġmax : ĠInt ) Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġvar Ġvalue : ĠInt Ġ= Ġinitial ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay Text () Ġ= Ġvalue . toString () ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue Ġ= ĠMath Utils . clamp ( value Ġ+ Ġ 1 , Ġmin , Ġmax ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue Ġ= ĠMath Utils . clamp ( value Ġ- Ġ 1 , Ġmin , Ġmax ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠNum Pref MenuItem ( text : ĠString , Ġval Ġnum Pref : ĠP refs . Num Pref ) Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdisplay Text () Ġ= Ġnum Pref . display Text () ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġnum Pref . increase () ĊĠĠĠĠĠĠĠ Ġnum Pref . apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġnum Pref . de cre ass () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠString Pref MenuItem ( text : ĠString , Ġval Ġstring Pref : ĠP refs . String Pref ) Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdisplay Text () Ġ= Ġstring Pref . display Text () ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠBin MenuItem ( text : ĠString , Ġinitial : ĠBoolean ) Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġvar Ġvalue : ĠBoolean Ġ= Ġinitial ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay Text () Ġ= Ġif Ġ( value ) Ġ" Yes " Ġelse Ġ" No " ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ! value ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠBin Pref MenuItem ( text : ĠString , Ġval Ġbin Pref : ĠP refs . Bin Pref ) Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdisplay Text () Ġ= Ġbin Pref . display Text () ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġbin Pref . toggle () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠAction MenuItem ( text : ĠString , Ġval Ġaction : Ġ() Ġ-> ĠUnit ) Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdisplay Text () Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction . invoke () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠSub MenuItem ( text : ĠString , Ġval Ġsub Menu : ĠMenu ) Ġ: ĠMenuItem ( text ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdisplay Text () Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠEmpty MenuItem Ġ: ĠMenuItem ("") Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġis Hidden Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay Text () Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠ Ġ} Ċ }