package Ġcom . and r ze jn . tang ler . helper Ċ Ċ import Ġcom . badlogic . gdx . G dx Ċ Ċ /** Ċ Ġ* ĠGame Ġsettings Ġand Ġsaved Ġgame . ĠStored Ġin Ġthe ĠG DX Ġsystem - dependent ĠPreferences Ċ Ġ*/ Ċ class ĠGame Settings Ġ{ ĊĠĠĠ Ġprivate Ġval Ġs BOARD SIZE Ġ= Ġ" board Size " ĊĠĠĠ Ġprivate Ġval Ġs SID ES COUNT Ġ= Ġ" sides Count " ĊĠĠĠ Ġprivate Ġval Ġs COLORS COUNT Ġ= Ġ" colors Count " ĊĠĠĠ Ġprivate Ġval Ġs ALLOW DUPLIC ATE COLORS Ġ= Ġ" allow Duplicate Colors " ĊĠĠĠ Ġprivate Ġval Ġs HINT S Ġ= Ġ" hints " ĊĠĠĠ Ġprivate Ġval Ġs SA VED GAME Ġ= Ġ" saved Game " ĊĠĠĠ Ġprivate Ġval Ġs DARK THEME Ġ= Ġ" dark Theme " ĊĠĠĠ Ġprivate Ġval Ġs ING AME DURATION Ġ= Ġ" in Game Duration " ĊĠĠĠ Ġprivate Ġval Ġs RECORD MOV ES Ġ= Ġ" record Moves " ĊĠĠĠ Ġprivate Ġval Ġs RECORD POINTS Ġ= Ġ" record Points " ĊĠĠĠ Ġprivate Ġval Ġpref Ġby Ġlazy Ġ{ ĠG dx . app . get Preferences (" com . and r ze jn . tang ler ") Ġ} ĊĠĠĠ Ġprivate Ġvar Ġi Board Size : ĠInt Ġ= Ġ 6 ĊĠĠĠ Ġprivate Ġvar Ġi Side s Count : ĠInt Ġ= Ġ 4 ĊĠĠĠ Ġprivate Ġvar Ġi Colors Count : ĠInt Ġ= Ġ 3 ĊĠĠĠ Ġprivate Ġvar Ġi Allow Duplicate Colors : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġi Hints : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġi Dark Theme : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġi In Game Duration : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReset Ġgame Ġsettings Ġto Ġdefault Ġvalues ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġi Board Size Ġ= Ġpref . getInteger ( s BOARD SIZE , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( i Board Size Ġ! in ĠlistOf ( 6 , Ġ 8 , Ġ 1 0 )) Ġi Board Size Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġboard Size Ġ= Ġi Board Size ĊĠĠĠĠĠĠĠ Ġi Side s Count Ġ= Ġpref . getInteger ( s SID ES COUNT , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( i Side s Count Ġ! in ĠlistOf ( 4 , Ġ 6 , Ġ 8 )) Ġi Side s Count Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġsides Count Ġ= Ġi Side s Count ĊĠĠĠĠĠĠĠ Ġi Colors Count Ġ= Ġpref . getInteger ( s COLORS COUNT , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( i Colors Count Ġ> Ġ 6 ) Ġi Colors Count Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( i Colors Count Ġ< Ġi Side s Count Ġ/ Ġ 2 ) Ġi Colors Count Ġ= Ġi Side s Count Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġcolors Count Ġ= Ġi Colors Count ĊĠĠĠĠĠĠĠ Ġi Allow Duplicate Colors Ġ= Ġpref . getBoolean ( s ALLOW DUPLIC ATE COLORS , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġallow Duplicate Colors Ġ= Ġi Allow Duplicate Colors ĊĠĠĠĠĠĠĠ Ġi Hints Ġ= Ġpref . getBoolean ( s HINT S , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġhints Ġ= Ġi Hints ĊĠĠĠĠĠĠĠ Ġi Dark Theme Ġ= Ġpref . getBoolean ( s DARK THEME , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġi In Game Duration Ġ= Ġpref . getLong ( s ING AME DURATION , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBoard Ġsize . ĠBoard Ġis Ġsquare , Ġallowed Ġvalues Ġare Ġ 6 , Ġ 8 , Ġ 1 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġboard Size : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġi Board Size ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Board Size Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Integer ( s BOARD SIZE , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCell / tile Ġsizes Ġcount . ĠAllowed Ġvalues Ġare Ġ 4 , Ġ 6 , Ġ 8 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġsides Count : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġi Side s Count ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Side s Count Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Integer ( s SID ES COUNT , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNumber Ġof Ġdifferent Ġcolors Ġused Ġfor Ġtile Ġsegments . ĠAllowed Ġvalues Ġare Ġfrom Ġ( sides Count Ġ/ Ġ 2 ) Ġto Ġ 6 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġcolors Count : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġi Colors Count ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Colors Count Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Integer ( s COLORS COUNT , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCan Ġtiles Ġhave Ġrepe ating Ġcolors Ġ( 3 Ġor Ġ 4 Ġsegments Ġwith Ġthe Ġsame Ġcolor Ġare Ġstill Ġnot Ġallowed ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġallow Duplicate Colors : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġi Allow Duplicate Colors ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Allow Duplicate Colors Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Boolean ( s ALLOW DUPLIC ATE COLORS , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShow Ġmove Ġhints Ġor Ġnot ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġhints : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġi Hints ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Hints Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Boolean ( s HINT S , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDark / Light Ġcolor Ġtheme Ġselector ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Dark Theme : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġi Dark Theme ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Dark Theme Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Boolean ( s DARK THEME , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTotal Ġtime Ġspent Ġin Ġgame ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġin Game Duration : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġi In Game Duration ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi In Game Duration Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Long ( s ING AME DURATION , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSerialized Ġsave Ġgame ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġsaved Game : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpref . getString ( s SA VED GAME , Ġ"") ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . putString ( s SA VED GAME , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠKey Ġname Ġfor Ġstoring Ġthe Ġrecords Ġfor Ġthe Ġcurrent Ġtile Ġtype Ġ- Ġgame Ġsize Ġ- Ġcolors ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġkey Name ( prefix : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ prefix $ i Side s Count $ i Colors Count ${ if Ġ( allow Duplicate Colors ) Ġ 1 Ġelse Ġ 0 }$ i Board Size ${ if Ġ( hints ) Ġ"" Ġelse Ġ" 0 "} " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRecord Ġmoves Ġvalue Ġfor Ġthe Ġcurrent Ġtile Ġtype Ġ- Ġgame Ġsize Ġ- Ġcolors ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġrecord Moves : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpref . getInteger ( key Name ( s RECORD MOV ES ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Integer ( key Name ( s RECORD MOV ES ), Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRecord Ġmoves Ġvalue Ġfor Ġthe Ġcurrent Ġtile Ġtype Ġ- Ġgame Ġsize Ġ- Ġcolors ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġrecord Points : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpref . getInteger ( key Name ( s RECORD POINTS ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Integer ( key Name ( s RECORD POINTS ), Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSerialize Ġgame Ġsettings , Ġto Ġinclude Ġinto Ġthe Ġsaved Ġgame . ĠAlways Ġ 4 Ġcharacters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġserialize ( sb : Ġcom . badlogic . gdx . utils . StringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . append ( board Size Ġ/ Ġ 2 ). append ( sides Count ). append ( colors Count ). append ( if Ġ( allow Duplicate Colors ) Ġ 1 Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( if Ġ( hints ) Ġ 1 Ġelse Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDeserialize Ġgame Ġsettings Ġfrom Ġthe Ġsaved Ġgame ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdeserialize ( s : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( s . length Ġ!= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbs Ġ= Ġs [ 0 ]. digit ToInt OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġsc Ġ= Ġs [ 1 ]. digit ToInt OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġcc Ġ= Ġs [ 2 ]. digit ToInt OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġadc Ġ= Ġs [ 3 ]. digit ToInt OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġs [ 4 ]. digit ToInt OrNull () ĊĠĠĠĠĠĠĠ Ġif Ġ( bs Ġ== Ġnull Ġ|| Ġbs Ġ! in ĠlistOf ( 3 , Ġ 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġsc Ġ== Ġnull Ġ|| Ġsc Ġ! in ĠlistOf ( 4 , Ġ 6 , Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġcc Ġ== Ġnull Ġ|| Ġcc Ġ> Ġ 6 Ġ|| Ġcc Ġ< Ġsc Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġadc Ġ== Ġnull Ġ|| Ġadc Ġ! in ĠlistOf ( 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġh Ġ== Ġnull Ġ|| Ġh Ġ! in ĠlistOf ( 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġboard Size Ġ= Ġbs Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġsides Count Ġ= Ġsc ĊĠĠĠĠĠĠĠ Ġcolors Count Ġ= Ġcc ĊĠĠĠĠĠĠĠ Ġallow Duplicate Colors Ġ= Ġadc Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġhints Ġ= Ġh Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ