package Ġio . k ida . space from outer space . model . en emies Ċ Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . graphics . Texture Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Sprite Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Sprite Batch Ċ import Ġcom . badlogic . gdx . math . Interpolation Ċ import Ġcom . badlogic . gdx . math . Rectangle Ċ import Ġio . k ida . space from outer space . helper . Math Helper Ċ import Ġio . k ida . space from outer space . model . Projectile Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Copy On Write ArrayList Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġk ida Ġon Ġ 3 / 0 1 / 2 0 1 6 . Ċ Ġ*/ Ċ Ċ open Ġclass ĠEnemy ( sprite Batch : ĠSprite Batch , Ġenemies : ĠCopy On Write ArrayList < Enemy >, Ġtexture : ĠTexture , Ġspeed : ĠDouble ) Ġ{ ĊĊĠĠĠ Ġ// Ġinternal Ġvals ĊĠĠĠ Ġinternal Ġval Ġtexture Ġ= Ġtexture ĊĠĠĠ Ġinternal Ġval Ġspeed Ġ= Ġspeed ĊĠĠĠ Ġinternal Ġval Ġenemies Ġ= Ġenemies ĊĠĠĠ Ġinternal Ġvar Ġsprite Batch Ġ= Ġsprite Batch ĊĊĠĠĠ Ġ// Ġinternal Ġvars ĊĠĠĠ Ġinternal Ġvar Ġsprite : ĠSprite ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġprivate Ġvars ĊĠĠĠ Ġprivate Ġvar Ġx Coord Ġ= Ġ 0 . 0 ĊĠĠĠ Ġprivate Ġvar Ġy Coord Ġ= Ġ 0 . 0 ĊĠĠĠ Ġprivate Ġvar Ġv Speed : ĠDouble ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġh Speed : ĠDouble ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġv ictory Is Mine Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġfun Ġapproach ( from X : ĠDouble , Ġfrom Y : ĠDouble , Ġto X : ĠDouble , Ġto Y : ĠDouble ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġv ictory Is Mine Ġ= ĠG dx . graphics . height . toDouble () ĊĠĠĠĠĠĠĠ Ġx Coord Ġ= Ġfrom X Ġ- Ġto X ĊĠĠĠĠĠĠĠ Ġy Coord Ġ= Ġfrom Y Ġ- Ġto Y ĊĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= ĠMath . atan 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto X Ġ- Ġfrom X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Y Ġ- Ġfrom Y ĊĠĠĠĠĠĠĠ Ġ) Ġ* Ġ 1 8 0 . 0 Ġ/ ĠMath . PI ĊĊĠĠĠĠĠĠĠ Ġv Speed Ġ= ĠMath . sin ( Math Helper (). to Degree ( angle )) Ġ* Ġspeed ĊĠĠĠĠĠĠĠ Ġh Speed Ġ= ĠMath . cos ( Math Helper (). to Degree ( angle )) Ġ* Ġspeed ĊĊĠĠĠĠĠĠĠ Ġsprite Ġ= ĠSprite ( texture , Ġ 0 , Ġ 0 , Ġtexture . width , Ġtexture . height ) ĊĠĠĠĠĠĠĠ Ġsprite !!. rotate ( angle . toFloat () Ġ- Ġ 1 8 0 . 0 f ) ĊĊĠĠĠĠĠĠĠ Ġenemies . add ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrender () Ġ{ ĊĠĠĠĠĠĠĠ Ġx Coord Ġ+= Ġh Speed !! Ġ* ĠG dx . graphics . deltaTime ĊĠĠĠĠĠĠĠ Ġy Coord Ġ+= Ġv Speed !! Ġ* ĠG dx . graphics . deltaTime ĊĠĠĠĠĠĠĠ Ġv ictory Is Mine Ġ+= Ġv Speed !! Ġ* ĠG dx . graphics . deltaTime ĊĊĠĠĠĠĠĠĠ Ġsprite ?. setPosition ( x Coord . toFloat (), Ġy Coord . toFloat ()) ĊĠĠĠĠĠĠĠ Ġsprite ?. draw ( sprite Batch ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġkill () Ġ{ ĊĠĠĠĠĠĠĠ Ġenemies . remove ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Sur v ived (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġv ictory Is Mine Ġ<= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġproject ile Hit ( project iles : ĠCopy On Write ArrayList < Projectile >): ĠProject ile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġproject ile : Projectile ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġproject iles . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sprite !!. bounding Rectangle . overlap s ( it . bounding Rectangle ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject ile Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġproject ile ĊĠĠĠ Ġ} Ċ Ċ }