package Ġcom . ly ee ed ar . Board . Completion Condition Ċ Ċ import Ġcom . badlogic . gdx . graphics . Color Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . ui . Label Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . ui . Table Ċ import Ġcom . badlogic . gdx . utils . Object Map Ċ import Ġcom . badlogic . gdx . utils . Object Set Ċ import Ġcom . ly ee ed ar . Board . Grid Ċ import Ġcom . ly ee ed ar . Board . Monster AI Ċ import Ġcom . ly ee ed ar . Board . is Monster Ċ import Ġcom . ly ee ed ar . Components .* Ċ import Ġcom . ly ee ed ar . Game . Global Ċ import Ġcom . ly ee ed ar . Render ables . Sprite . Sprite Ċ import Ġcom . ly ee ed ar . UI . Sprite Widget Ċ import Ġcom . ly ee ed ar . UI . Tutorial Ċ import Ġcom . ly ee ed ar . Util .* Ċ import Ġk tx . collections . set Ċ Ċ @ Data Class ( name Ġ= Ġ" Kill ") Ċ class ĠCompletion Condition Kill Data Ġ: ĠAbstract Completion Condition Data () Ċ { Ċ ĉ override Ġval Ġclass ID : ĠString Ġ= Ġ" Kill " ĊĉĊ ĉ var Ġall : ĠBoolean Ġ= Ġtrue Ċ ĉ var Ġnamed : ĠString ? Ġ= Ġnull ĊĊ ĉ override Ġfun Ġload ( xml Data : ĠXml Data ) Ċ ĉ { Ċ ĉ /* ĠAutogenerated Ġmethod Ġcontents . ĠDo Ġnot Ġmodify . Ġ*/ Ċĉ ĉ super . load ( xml Data ) Ċĉ ĉ all Ġ= Ġxml Data . getBoolean (" All ", Ġtrue ) Ċĉ ĉ named Ġ= Ġxml Data . get (" Named ", Ġnull ) Ċ ĉ } Ċ } Ċ Ċ class ĠCompletion Condition Kill ( data : ĠCompletion Condition Kill Data ) Ġ: ĠAbstract Completion Condition < Completion Condition Kill Data >( data ) Ċ { Ċ ĉ val Ġtick Ġ= ĠAsset Manager . load Sprite (" O ry x / uf _ split / uf _ interface / uf _ interface _ 6 8 0 ", Ġcolour Ġ= ĠColour ( Color . FO REST )) ĊĊ ĉ val Ġmon sters Ġ= ĠObject Set < Entity >() Ċ ĉ val Ġmonster Count Map Ġ= ĠObject Map < String , ĠInt >() Ċ ĉ val Ġmonster Sprite Map Ġ= ĠObject Map < String , ĠSprite >() ĊĊ ĉ val Ġtable Ġ= ĠTable () ĊĊ ĉ late init Ġvar Ġgrid : ĠGrid ĊĊ ĉ override Ġfun Ġattach Handlers ( grid : ĠGrid ) Ċ ĉ { Ċĉ ĉ this . grid Ġ= Ġgrid ĊĊĉ ĉ grid . on D am aged Ġ+= Ġfun ( c ) Ġ: ĠHandler Action Ġ{ Ċĉĉ ĉ rebuild Widget () Ċĉĉ ĉ return ĠHandler Action . Keep Attached Ċĉ ĉ } ĊĊĉ ĉ grid . on Turn Ġ+= Ġfun () Ġ: ĠHandler Action Ġ{ Ċĉĉ ĉ rebuild Widget () Ċĉĉ ĉ return ĠHandler Action . Keep Attached Ċĉ ĉ } ĊĊĉ ĉ if Ġ(! Global . resolve Instant ly ) Ċĉ ĉ { Ċĉĉ ĉ Future . call ( Ċĉĉĉ ĉ { Ċĉĉĉĉ ĉ val Ġtutorial Ġ= ĠTutorial (" Kill Complete ") Ċĉĉĉĉ ĉ tutorial . add Popup ( Local isation . getText (" completion condition . kill . tutorial ", Ġ" UI "), Ġtable ) Ċĉĉĉĉ ĉ tutorial . show () Ċĉĉĉ ĉ }, Ġ 0 . 5 f ) Ċĉ ĉ } ĊĊĉ ĉ rebuild Widget () Ċ ĉ } ĊĊ ĉ override Ġfun Ġis Completed (): ĠBoolean Ġ= Ġmon sters . filter Ġ{ Ġit . damage able () !!. hp Ġ> Ġ 0 Ġ}. count () Ġ== Ġ 0 ĊĊ ĉ override Ġfun Ġcreate Table ( grid : ĠGrid ): ĠTable Ċ ĉ { Ċĉ ĉ rebuild Widget () ĊĊĉ ĉ return Ġtable Ċ ĉ } ĊĊ ĉ fun Ġrebuild Widget () Ċ ĉ { Ċĉ ĉ mon sters . clear () Ċĉ ĉ for Ġ( tile Ġin Ġgrid . grid ) Ċĉ ĉ { Ċĉĉ ĉ val Ġcontents Ġ= Ġtile . contents Ġ?: Ġcontinue ĊĊĉĉ ĉ var Ġmonster Entity : ĠEntity ? Ġ= Ġnull Ċĉĉ ĉ if Ġ( contents . is Monster ()) Ċĉĉ ĉ { Ċĉĉĉ ĉ monster Entity Ġ= Ġcontents Ċĉĉ ĉ } Ċĉĉ ĉ else Ġif Ġ( contents . container ()?. contained Entity ?. is Monster () Ġ== Ġtrue ) Ċĉĉ ĉ { Ċĉĉĉ ĉ monster Entity Ġ= Ġcontents . container () !!. contained Entity !! Ċĉĉ ĉ } ĊĊĉĉ ĉ if Ġ( monster Entity Ġ!= Ġnull ) Ċĉĉ ĉ { Ċĉĉĉ ĉ val Ġname Ġ= Ġ( monster Entity . ai () !!. ai Ġas ĠMon ster AI ). desc . name Ċĉĉĉ ĉ if Ġ( data . all Ġ|| Ġname Ġ== Ġdata . named ) Ċĉĉĉ ĉ { Ċĉĉĉĉ ĉ mon sters . add ( monster Entity ) Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ table . clear () ĊĊĉ ĉ for Ġ( monster Ġin Ġmonster Count Map . keys (). toList ()) Ċĉ ĉ { Ċĉĉ ĉ monster Count Map [ monster ] Ġ= Ġ 0 Ċĉ ĉ } ĊĊĉ ĉ for Ġ( monster Ġin Ġmon sters ) Ċĉ ĉ { Ċĉĉ ĉ val Ġai Ġ= Ġmonster . ai () !!. ai Ġas ĠMon ster AI ĊĊĉĉ ĉ val Ġdesc Ġ= Ġai . original Desc Ġ?: Ġai . desc ĊĊĉĉ ĉ if Ġ(! monster Count Map . containsKey ( desc . name )) Ċĉĉ ĉ { Ċĉĉĉ ĉ monster Count Map [ desc . name ] Ġ= Ġ 0 Ċĉĉ ĉ } ĊĊĉĉ ĉ var Ġcount Ġ= Ġmonster Count Map [ desc . name ] Ċĉĉ ĉ if Ġ( monster . damage able () !!. hp Ġ> Ġ 0 ) Ċĉĉ ĉ { Ċĉĉĉ ĉ count ++ Ċĉĉ ĉ } Ċĉĉ ĉ monster Count Map [ desc . name ] Ġ= Ġcount ĊĊĉĉ ĉ monster Sprite Map [ desc . name ] Ġ= Ġmonster . sprite () !! Ċĉ ĉ } ĊĊĉ ĉ var Ġrow Ġ= ĠTable () Ċĉ ĉ var Ġcounter Ġ= Ġ 0 ĊĊĉ ĉ for Ġ( monster Ġin Ġmonster Count Map ) Ċĉ ĉ { Ċĉĉ ĉ val Ġsprite Ġ= Ġmonster Sprite Map [ monster . key ]. copy () Ċĉĉ ĉ val Ġcount Ġ= Ġmonster . value ĊĊĉĉ ĉ row . add ( Sprite Widget ( sprite , Ġ 2 4 f , Ġ 2 4 f )). pad Left ( 5 f ) ĊĊĉĉ ĉ if Ġ( count Ġ== Ġ 0 ) Ċĉĉ ĉ { Ċĉĉĉ ĉ row . add ( Sprite Widget ( tick , Ġ 2 4 f , Ġ 2 4 f )) Ċĉĉ ĉ } Ċĉĉ ĉ else Ċĉĉ ĉ { Ċĉĉĉ ĉ row . add ( Label (" Ġx Ġ$ count ", ĠStatic s . skin )) Ċĉĉ ĉ } ĊĊĉĉ ĉ counter ++ Ċĉĉ ĉ if Ġ( counter Ġ== Ġ 2 ) Ċĉĉ ĉ { Ċĉĉĉ ĉ counter Ġ= Ġ 0 Ċĉĉĉ ĉ table . add ( row ). expand (). fill () Ċĉĉĉ ĉ table . row () Ċĉĉĉ ĉ row Ġ= ĠTable () Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ table . add ( row ) Ċ ĉ } ĊĊ ĉ override Ġfun ĠgetDescription ( grid : ĠGrid ): ĠTable Ċ ĉ { Ċĉ ĉ val Ġtable Ġ= ĠTable () ĊĊĉ ĉ table . add ( Label ( Local isation . getText (" completion condition . kill . description ", Ġ" UI "), ĠStatic s . skin )) ĊĊĉ ĉ return Ġtable Ċ ĉ } Ċ }