package Ġde . tra end y . spaces h ooter . player Ċ Ċ import Ġandroid . graphics .* Ċ import Ġde . tra end y . spaces h ooter . Build Config Ċ import Ġde . tra end y . spaces h ooter . engine . Entity Ċ import Ġde . tra end y . spaces h ooter . game . Game Config Ċ import Ġde . tra end y . spaces h ooter . game . Game Running Ċ import Ġde . tra end y . spaces h ooter . game . State Mediator Ċ Ċ open Ġclass ĠPlayer ( ĊĠĠĠ Ġprivate Ġval Ġm Paint : ĠPaint , ĊĠĠĠ Ġprivate Ġval Ġrect F : ĠRect F , ĊĠĠĠ Ġprivate Ġval Ġbitmap : ĠBitmap ? Ġ= Ġnull Ċ ) Ġ: ĠEntity Ġ{ ĊĊĠĠĠ Ġoverride Ġvar Ġx Pos : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġoverride Ġvar Ġy Pos : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġval Ġm With Ġ= Ġ 1 0 0 f ĊĠĠĠ Ġval Ġm Height Ġ= Ġ 2 5 0 f ĊĠĠĠ Ġopen Ġvar Ġhit Points Ġ= ĠGame Config . player Hit Points ĊĠĠĠ Ġprivate Ġval Ġm Width 2 Ġ= Ġ 2 5 0 f ĊĠĠĠ Ġprivate Ġval Ġm Height 2 Ġ= Ġ 7 0 f ĊĠĠĠ Ġprotected Ġopen Ġvar Ġliving Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġrect F 2 Ġ= ĠRect F () ĊĠĠĠ Ġprivate Ġval Ġrect F 3 Ġ= ĠRect F () ĊĊĠĠĠ Ġfun Ġset Spawn ( pos X : ĠFloat , Ġpos Y : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Position Box ( pos X , Ġpos Y ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Position Before Game Start ( pos X : ĠFloat ){ ĊĠĠĠĠĠĠĠ Ġy Pos Ġ-= Ġ 5 f ĊĠĠĠĠĠĠĠ Ġset Position Box ( pos X , Ġy Pos ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Position ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( in Bounds ( x , Ġy ) Ġ&& ĠState Mediator . getState () Ġis ĠGame Running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Position Box ( x , Ġy ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Position Box ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġx Pos Ġ= Ġx ĊĠĠĠĠĠĠĠ Ġy Pos Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġrect F . set ( x Pos , Ġy Pos , Ġx Pos Ġ+ Ġm With , Ġy Pos Ġ+ Ġm Height ) ĊĠĠĠĠĠĠĠ Ġrect F 2 . set ( x Pos , Ġy Pos , Ġx Pos Ġ+ Ġm Width 2 , Ġy Pos Ġ+ Ġm Height 2 ) ĊĠĠĠĠĠĠĠ Ġrect F 3 . set ( x Pos , Ġy Pos , Ġx Pos Ġ+ Ġm Width 2 , Ġy Pos Ġ+ Ġm Height ) ĊĠĠĠĠĠĠĠ Ġrect F . offset (- m With Ġ/ Ġ 2 , Ġ- m Height Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġrect F 2 . offset (- m Width 2 Ġ/ Ġ 2 , Ġ+ 1 0 f ) ĊĠĠĠĠĠĠĠ Ġrect F 3 . offset (- m Width 2 Ġ/ Ġ 2 , Ġ- m Height Ġ/ Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġin Bounds ( x : ĠFloat , Ġy : ĠFloat ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġx Ġ>= Ġrect F 3 . left Ġ&& Ġx Ġ<= Ġrect F 3 . right Ġ&& Ġy Ġ>= Ġrect F 3 . top Ġ&& Ġy Ġ<= Ġrect F 3 . bottom ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas . save () ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( rect F , Ġm Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( rect F 2 , Ġm Paint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbitmap ?. let { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bitmap , null , Ġrect F 3 , Ġm Paint ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcanvas . restore () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġget Collision Box (): ĠList < Rect F > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( rect F , Ġrect F 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Alive (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġliving ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġkill () Ġ{ ĊĠĠĠĠĠĠĠ Ġhit Points -- ĊĠĠĠĠĠĠĠ Ġif Ġ( hit Points Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġliving Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Projectile Spawn Position (): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( rect F . left Ġ+ Ġm With Ġ/ Ġ 2 ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect F . top . toInt () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrev ive () Ġ{ ĊĠĠĠĠĠĠĠ Ġhit Points Ġ= ĠGame Config . player Hit Points ĊĠĠĠĠĠĠĠ Ġliving Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġy Pos Ġ= Ġ- 1 0 0 f ĊĠĠĠ Ġ} Ċ }