package Ġgame . nd . builder Ċ Ċ import Ġgame . nd . attribute .* Ċ import Ġgame . nd . attribute . type .* Ċ import Ġgame . nd . extent ions . new Game Entity OfType Ċ import Ġgame . nd . system .* Ċ import Ġgame . nd . util . Direction 4 Ċ import Ġorg . hex works . c aves of z ir con . attributes . flags . Vision Block er Ċ import Ġorg . hex works . z ir con . api . Tiles Ċ import Ġorg . hex works . z ir con . api . data . Tile Ċ import Ġorg . hex works . z ir con . api . data . impl . Position 3 D Ċ import Ġorg . hex works . z ir con . api . resource . BuiltIn Graphic Tile set Resource Ċ Ċ object ĠEntity Factory Ġ{ ĊĊĠĠĠ Ġfun Ġnew Player () Ġ= Ġnew Game Entity OfType ( Player ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Occup ier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Tile ( Game Tile Repository . PLAYER ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom bat Stats . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Hp Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattack Value Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef ense Value Ġ= Ġ 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrypt os Counter (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInventory ( 1 0 )) ĊĠĠĠĠĠĠĠ Ġbehaviors ( Player Input Handler ) ĊĠĠĠĠĠĠĠ Ġfac ets ( Mov able , ĠCamera M over , ĠBlock Inspector , ĠLevel Ch anger , ĠSte aling , ĠOp ener , ĠItem Drop per , ĠItem Picker ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew C it izen ( position : ĠPosition 3 D Ġ= ĠPosition 3 D . unknown ()) Ġ= Ġnew Game Entity OfType ( C it izen ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Occup ier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position ( position ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Tile ( Game Tile Repository . C IT IZ EN ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom bat Stats . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Hp Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattack Value Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef ense Value Ġ= Ġ 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrypt os Counter ()) ĊĠĠĠĠĠĠĠ Ġbehaviors ( Random Walk Behavior ) ĊĠĠĠĠĠĠĠ Ġfac ets ( Mov able ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Hotel Owner ( position : ĠPosition 3 D Ġ= ĠPosition 3 D . unknown ()) Ġ= Ġnew Game Entity OfType ( Hotel Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Occup ier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position ( position ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Tile ( Game Tile Repository . HOT EL _ OWNER ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom bat Stats . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Hp Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattack Value Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef ense Value Ġ= Ġ 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrypt os Counter ()) ĊĠĠĠĠĠĠĠ Ġ// be haviors () ĊĠĠĠĠĠĠĠ Ġfac ets ( Mov able ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Car ( start : ĠPosition 3 D Ġ= ĠPosition 3 D . unknown (), Ġstop : ĠPosition 3 D Ġ= ĠPosition 3 D . unknown (), Ġdirection : ĠPosition 3 D Ġ= ĠPosition 3 D . unknown (), Ġspeed : ĠInt Ġ= Ġ 1 ) Ġ= Ġnew Game Entity OfType ( Car ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Occup ier , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position ( start ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStart Stop ( start , Ġstop , Ġdirection , Ġspeed ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Tiles ( Game Tile Repository . CAR _ SMALL )) ĊĠĠĠĠĠĠĠ Ġbehaviors ( Car Behavior ) ĊĠĠĠĠĠĠĠ Ġfac ets ( Mov able ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Wall () Ġ= Ġnew Game Entity OfType ( Wall ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Vision Block er , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Occup ier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Tile ( Game Tile Repository . WALL _ VARI ATION _ D _ V )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġnew Wall ( tile : ĠTile ) Ġ= Ġnew Game Entity OfType ( Wall ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Vision Block er , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Occup ier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Tile ( tile )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Window ( tile : ĠTile ) Ġ= Ġnew Game Entity OfType ( Window ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Entity Position (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Occup ier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Tile ( tile )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew St airs Down () Ġ= Ġnew Game Entity OfType ( St airs Down ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Entity Tile ( Game Tile Repository . STA IR S _ DOWN ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew St airs Up () Ġ= Ġnew Game Entity OfType ( St airs Up ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Entity Tile ( Game Tile Repository . STA IR S _ UP ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Door ( tile : ĠTile , Ġlocked : ĠBoolean Ġ= Ġtrue ) Ġ= Ġnew Game Entity OfType ( Door ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Entity Tile ( tile ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Occup ier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOpen able ( locked )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġnew Door Opened ( tile : ĠTile ) Ġ= Ġnew Game Entity OfType ( Door ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Entity Tile ( tile ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPass ing Description ( Direction 4 . LEFT Ġto Ġ" You Ġenter Ġa Ġcaps ule Ġhotel ", ĠDirection 4 . RIGHT Ġto Ġ" You Ġleave Ġthe Ġcaps ule Ġhotel "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Bed ( tile : ĠTile ) Ġ= Ġnew Game Entity OfType ( Bed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Entity Tile ( tile ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Counter ( tile : ĠTile ) Ġ= Ġnew Game Entity OfType ( Counter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Entity Tile ( tile ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġitems Ġ// //////////////// /// ĊĊĠĠĠ Ġ//// ĠArm or Ġ// //////////////// ĊĊĠĠĠ Ġfun Ġnew J acket () Ġ= Ġnew Game Entity OfType ( J acket ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Item Combat Stats ( com bat ItemType Ġ= Ġ" Armor "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Tile ( Game Tile Repository . j acket ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem Icon ( Tiles . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name (" Le ather Ġj acket ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Tile set ( BuiltIn Graphic Tile set Resource . NET H ACK _ 1 6 X 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Graphic Tile ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ//// ĠWe apons Ġ// //////// ///// ĊĊĠĠĠ Ġfun Ġnew D agger () Ġ= Ġnew Game Entity OfType ( D agger ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( Item Icon ( Tiles . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name (" D agger ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Tile set ( BuiltIn Graphic Tile set Resource . NET H ACK _ 1 6 X 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Graphic Tile ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Position (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem Combat Stats ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattack Value Ġ= Ġ 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom bat ItemType Ġ= Ġ" Weapon "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Tile ( Game Tile Repository . d agger ())) ĊĠĠĠ Ġ} Ċ }