deprecate old projects & reduce CI workload
This commit is contained in:
82
projects/_deprecated/flixel-rpg-tutorial/source/Enemy.kiss
Normal file
82
projects/_deprecated/flixel-rpg-tutorial/source/Enemy.kiss
Normal file
@@ -0,0 +1,82 @@
|
||||
(var &inline :Float SPEED 140)
|
||||
|
||||
(defNew [:Float x :Float y :EnemyType _type]
|
||||
[:EnemyType type _type
|
||||
:FSM brain (new FSM idle)
|
||||
&mut :Float idleTimer 0
|
||||
&mut :Float moveDirection -1
|
||||
&mut :Bool seesPlayer false
|
||||
&mut :FlxPoint playerPosition (FlxPoint.get)]
|
||||
(super x y)
|
||||
|
||||
(loadGraphic
|
||||
(case type
|
||||
(BOSS
|
||||
AssetPaths.boss__png)
|
||||
(otherwise AssetPaths.enemy__png))
|
||||
true
|
||||
16
|
||||
16)
|
||||
|
||||
(setFacingFlip FlxObject.LEFT false false)
|
||||
(setFacingFlip FlxObject.RIGHT true false)
|
||||
(animation.add "d" [0 1 0 2] 6 false)
|
||||
(animation.add "lr" [3 4 3 5] 6 false)
|
||||
(animation.add "u" [6 7 6 8] 6 false)
|
||||
(set drag.x (set drag.y 10))
|
||||
(set width 8)
|
||||
(set height 14)
|
||||
(set offset.x 4)
|
||||
(set offset.y 2))
|
||||
|
||||
(method &override :Void update [:Float elapsed]
|
||||
(when (and
|
||||
(or !(= velocity.x 0) !(= velocity.y 0))
|
||||
(= touching FlxObject.NONE))
|
||||
(if (> (Math.abs velocity.x) (Math.abs velocity.y))
|
||||
(if (< velocity.x 0)
|
||||
(set facing FlxObject.LEFT)
|
||||
(set facing FlxObject.RIGHT))
|
||||
(if (< velocity.y 0)
|
||||
(set facing FlxObject.UP)
|
||||
(set facing FlxObject.DOWN)))
|
||||
|
||||
(case facing
|
||||
((or FlxObject.LEFT FlxObject.RIGHT)
|
||||
(animation.play "lr"))
|
||||
|
||||
(FlxObject.UP
|
||||
(animation.play "u"))
|
||||
|
||||
(FlxObject.DOWN
|
||||
(animation.play "d"))
|
||||
|
||||
(otherwise {})))
|
||||
|
||||
(brain.update elapsed)
|
||||
(super.update elapsed))
|
||||
|
||||
(method :Void idle [:Float elapsed]
|
||||
(cond
|
||||
(seesPlayer
|
||||
// TODO (the FSM) here should not be necessary!
|
||||
(set .activeState (the FSM brain) chase))
|
||||
((<= idleTimer 0)
|
||||
(if (FlxG.random.bool 1)
|
||||
{
|
||||
(set moveDirection -1)
|
||||
(set velocity.x (set velocity.y 0))
|
||||
}
|
||||
{
|
||||
(set moveDirection (* 45 (FlxG.random.int 0 8)))
|
||||
(velocity.set (* SPEED 0.5) 0)
|
||||
(velocity.rotate (FlxPoint.weak) moveDirection)
|
||||
})
|
||||
(set idleTimer (FlxG.random.int 1 4)))
|
||||
(true
|
||||
(-= idleTimer elapsed))))
|
||||
|
||||
(method :Void chase [:Float elapsed]
|
||||
(if !seesPlayer
|
||||
(set brain.activeState idle)
|
||||
(FlxVelocity.moveTowardsPoint this playerPosition (Std.int SPEED))))
|
||||
Reference in New Issue
Block a user