package Ġcom . w rott . kit k att . ai Ċ Ċ import Ġcom . badlogic . ash ley . core . Entity Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . Input Ċ import Ġcom . badlogic . gdx . ai . msg . Telegram Ċ import Ġcom . w rott . kit k att . Game Ċ import Ġcom . w rott . kit k att . ecs . component . AI Component Ċ import Ġcom . w rott . kit k att . ecs . component . Animation Type Ċ import Ġcom . w rott . kit k att . ecs . component . Jump Component Ċ import Ġcom . w rott . kit k att . ecs . component . Phys ic Component Ċ import Ġcom . w rott . kit k att . ecs . system . Key Extra Info Ċ import Ġk tx . ash ley . configure Entity Ċ import Ġk tx . ash ley . get Ċ import Ġk tx . ash ley . with Ċ import Ġk tx . log . logger Ċ Ċ sealed Ġclass ĠPlayer State ( animation Type : ĠAnimation Type ) Ġ: ĠAnimated State ( animation Type ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġenter ( entity : ĠEntity , Ġai : ĠAI Component ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . enter ( entity , Ġai ) ĊĠĠĠĠĠĠĠ ĠLOG . info Ġ{ Ġ" Player Ġ'$ entity ' Ġis Ġentering Ġstate Ġ'${ this :: class . simple Name } '" Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠId le Ġ: ĠPlayer State ( Animation Type . PLAYER _ IDLE ), ĠEntity State Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( entity : ĠEntity , Ġai : ĠAI Component ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity [ Phys ic Component . mapper ]?. let Ġ{ Ġphys ic Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphys ic . body . linear Velocity . y Ġ< Ġ 0 f Ġ-> Ġai . state Machine . change State ( Fall ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphys ic . body . linear Velocity . x Ġ!= Ġ 0 f Ġ-> Ġai . state Machine . change State ( Run ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( entity : ĠEntity , Ġai : ĠAI Component , Ġtele gram : ĠTelegram ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextra Info Ġ= Ġtele gram . extra Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( extra Info Ġis ĠKey Extra Info . Down ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( extra Info . key code ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput . Keys . A Ġ-> Ġai . state Machine . change State ( Attack 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput . Keys . SPACE Ġ-> Ġai . state Machine . change State ( Jump ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġobject ĠJump Ġ: ĠPlayer State ( Animation Type . PLAYER _ JUMP ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġenter ( entity : ĠEntity , Ġai : ĠAI Component ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . enter ( entity , Ġai ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( G dx . app . application Listener ) Ġas ĠGame ). ecs Engine . configure Entity ( entity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < Jump Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( entity : ĠEntity , Ġai : ĠAI Component ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphys ic Ġ= Ġentity [ Phys ic Component . mapper ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( phys ic Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġai . state Machine . change State ( Idle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( entity [ Jump Component . mapper ] Ġ== Ġnull Ġ&& Ġphys ic . body . linear Velocity . y Ġ<= Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġai . state Machine . change State ( Fall ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġobject ĠRun Ġ: ĠPlayer State ( Animation Type . PLAYER _ RUN ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( entity : ĠEntity , Ġai : ĠAI Component ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity [ Phys ic Component . mapper ]?. let Ġ{ Ġphys ic Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphys ic . body . linear Velocity . y Ġ< Ġ 0 f Ġ-> Ġai . state Machine . change State ( Fall ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphys ic . body . linear Velocity . x Ġ== Ġ 0 f Ġ-> Ġai . state Machine . change State ( Idle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( entity : ĠEntity , Ġai : ĠAI Component , Ġtele gram : ĠTelegram ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextra Info Ġ= Ġtele gram . extra Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( extra Info Ġis ĠKey Extra Info . Down ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( extra Info . key code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput . Keys . SPACE Ġ-> Ġai . state Machine . change State ( Jump ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġobject ĠFall Ġ: ĠPlayer State ( Animation Type . PLAYER _ FALL ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( entity : ĠEntity , Ġai : ĠAI Component ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphys ic Ġ= Ġentity [ Phys ic Component . mapper ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( phys ic Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġai . state Machine . change State ( Idle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( phys ic . body . linear Velocity . y Ġ>= Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġai . state Machine . change State ( Idle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG Ġ= Ġlogger < Player State >() ĊĠĠĠ Ġ} Ċ } Ċ