package Ġorg . em unix . met ap ar ser . ui . game Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . apache . commons . io . FileUtils Ċ import Ġorg . em unix . met ap ar ser . Game Ċ import Ġorg . em unix . met ap ar ser . Met ap ar ser Ċ import Ġorg . em unix . met ap ar ser . Paragraph Ċ import Ġorg . em unix . met ap ar ser . R Ċ import Ġorg . em unix . met ap ar ser . helper . Storage Helper Ċ import Ġorg . em unix . met ap ar ser . helper . Tag Parser Ċ import Ġorg . em unix . met ap ar ser . helper . show Toast Ċ import Ġjava . io . File ĊĊ Ċ class ĠGame ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġhistory Ġ= Ġarray ListOf < Paragraph >() ĊĠĠĠ Ġprivate Ġval Ġhistory LiveData Ġ= ĠMutable LiveData < ArrayList < Paragraph >>() ĊĠĠĠ Ġprivate Ġval Ġshow Progress State Ġ= ĠMutable LiveData < Boolean >() ĊĊĠĠĠ Ġprivate Ġval Ġscope Ġ= ĠCor outine Scope ( Dispatch ers . Main ) ĊĠĠĠ Ġprivate Ġvar Ġgame : ĠGame Ġ= ĠGame ( getApplication ()) ĊĠĠĠ Ġprivate Ġvar Ġis Init Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġinit () Ġ= Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Init ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress State . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Helper ( getApplication ()). copy Resources () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress State . value Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame . init () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Game () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Init Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Game () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġgame . load () ĊĠĠĠĠĠĠĠ Ġval Ġsp anned Ġ= ĠTag Parser . parse ( response ) ĊĠĠĠĠĠĠĠ Ġval Ġparagraph Ġ= ĠParagraph ("", Ġsp anned ) ĊĠĠĠĠĠĠĠ Ġhistory . add ( paragraph ) ĊĠĠĠĠĠĠĠ Ġhistory LiveData . value Ġ= Ġhistory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Game () Ġ{ ĊĠĠĠĠĠĠĠ Ġgame . save () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrestart Game () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! FileUtils . delete Quiet ly ( File ( Storage Helper ( getApplication ()). getApp Files Directory (), Ġ" autos ave "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Application < Met ap ar ser >(). show Toast ( getApplication < Met ap ar ser >(). getString ( R . string . error _ delete _ autos ave _ failed )) ĊĠĠĠĠĠĠĠ Ġhistory . clear () ĊĠĠĠĠĠĠĠ Ġgame . done () ĊĠĠĠĠĠĠĠ Ġgame . init () ĊĠĠĠĠĠĠĠ Ġload Game () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Text To Game ( s : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġs . replace (" \"", Ġ"") ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġgame . send ( text ) ĊĠĠĠĠĠĠĠ Ġval Ġsp anned Ġ= ĠTag Parser . parse ( response ) ĊĠĠĠĠĠĠĠ Ġval Ġparagraph Ġ= ĠParagraph ("> Ġ$ text ", Ġsp anned ) ĊĠĠĠĠĠĠĠ Ġhistory . add ( paragraph ) ĊĠĠĠĠĠĠĠ Ġhistory LiveData . value Ġ= Ġhistory ĊĊĠĠĠĠĠĠĠ Ġif Ġ( game . is Restart From Game ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestart Game () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget History (): ĠLive Data < ArrayList < Paragraph >> Ġ= Ġhistory LiveData ĊĊĠĠĠ Ġfun Ġget Show Progress State (): ĠLive Data < Boolean > Ġ= Ġshow Progress State ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġgame . save () ĊĠĠĠĠĠĠĠ Ġgame . done () ĊĠĠĠ Ġ} Ċ }