package Ġro . dob re sc u and rei . j text ad venture . awt Ċ Ċ import Ġro . dob re sc u and rei . j text ad venture . I Console Em ulator Ċ import Ġjava . awt . EventQueue Ċ import Ġjava . util .* Ċ Ċ open Ġclass ĠA WT Console Em ulator Ċ ( ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġconsole View Ġ: ĠText Adventure Console View Ċ ) Ġ: ĠI Console Em ulator Ċ { ĊĠĠĠ Ġprivate Ġval Ġinput Queue Ġ= ĠLinkedList < String >() ĊĠĠĠ Ġprivate Ġvar Ġshould Dispose Input Read Operations Ġ= Ġfalse ĊĊĠĠĠ Ġinit ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġconsole View . console Em ulator = this ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġshould Dispose Input Read Operations = true ĊĠĠĠĠĠĠĠ Ġconsole View . console Em ulator = null ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġrun On Ui Thread ( cross inline Ġto Run Ġ: Ġ() Ġ-> Ġ( Unit )) Ġ= ĊĠĠĠĠĠĠĠ ĠEvent Queue . invoke Later Ġ{ Ġto Run () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite ( message Ġ: ĠString ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole View . add Label ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole View . re validate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole View . rep aint () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprompt Buttons ( var arg Ġbuttons Ġ: ĠString ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( button Text Ġin Ġbuttons ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole View . add Button ( button Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole View . re validate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole View . rep aint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread () Ġ: ĠString ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( should Dispose Input Read Operations ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( input Queue . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Dispose Input Read Operations ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbutton Text = input Queue . remove () !! ĊĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole View . remove Sub views () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole View . re validate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole View . rep aint () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbutton Text ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Button Clicked ( button Text Ġ: ĠString ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Queue . add ( button Text ) ĊĠĠĠ Ġ} Ċ } Ċ