Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package;
- import flixel.FlxSprite;
- import flixel.util.FlxColor;
- import flixel.FlxG;
- import flixel.util.FlxAngle;
- import flixel.FlxObject;
- import flixel.util.FlxPoint;
- import flixel.util.FlxRandom;
- import flixel.tile.FlxTilemap;
- import flixel.util.FlxPath;
- import flixel.util.FlxVelocity;
- class Enemy extends FlxSprite
- {
- public var speed:Float = 200;
- public var etype(default,null):Int;
- public var seesPlayer:Bool = false;
- public var playerPos(default,null):FlxPoint;
- public var animState:Int;
- public var pathPoints:Array<FlxPoint>;
- public var path:FlxPath;
- //privates
- private var _brain:FSM;
- private var _idleTmr:Float;
- private var _moveDir:Float;
- private var _newPos:FlxPoint;
- private var _map:FlxTilemap;
- private var _tWidth:Float;
- private var _tHeight:Float;
- private var _myPos:FlxPoint;
- private var _player:Player;
- public function new(X:Float=0,Y:Float=0,EType:Int,PS:PlayState,M:FlxTilemap)
- {
- //Grab variables from function
- super(X,Y);
- etype = EType;
- PS.setEnemyAnim(this,EType,x,y);
- _map = M;
- _player = PS._player;
- //Grab sprite
- loadGraphic('assets/images/enemy-' + Std.string(etype) + '.png', true, 64,64);
- //Set some drag
- drag.x = drag.y = 10;
- //Make a hitbox maybe
- offset.set(0,48);
- setSize(64,16);
- //Probably some ai stuff
- _brain = new FSM(idle);
- _idleTmr = 0;
- playerPos = FlxPoint.get();
- _newPos = playerPos;
- path = new FlxPath();
- }
- //An idol
- public function idle():Void
- {
- if (seesPlayer)
- {
- _brain.activeState = chase;
- }
- else if (_idleTmr <= 0)
- {
- if (FlxRandom.chanceRoll(1))
- {
- _moveDir = -1;
- velocity.x = velocity.y = 0;
- }
- else
- {
- _moveDir = FlxRandom.intRanged(0,8)*45;
- FlxAngle.rotatePoint(speed * .5,0,0,0,_moveDir,velocity);
- }
- _idleTmr = FlxRandom.intRanged(1,4);
- }
- else
- {
- _idleTmr -= FlxG.elapsed;
- }
- }
- //An exite chase thingy
- public function chase():Void
- {
- if(!seesPlayer){
- _brain.activeState = idle;
- path.cancel();
- }
- else
- {
- path.start(this, pathPoints, speed);
- speed = FlxRandom.intRanged(200,280);
- //FlxVelocity.moveTowardsPoint(this, playerPos, Std.int(speed));
- }
- }
- private function updateAnim():Void
- {
- if ((velocity.x != 0 || velocity.y !=0))
- {
- //Get Current Direction...
- if (Math.abs(velocity.x) > Math.abs(velocity.y))
- {
- if (velocity.x < 0)
- animState = 1;
- else
- animState = 4;
- }
- else
- {
- if (velocity.y < 0)
- animState = 2;
- else
- animState = 3;
- }
- }
- else
- {
- animState = 0;
- }
- }
- //override an update
- override public function update():Void
- {
- this.visible = false;
- _brain.update();
- updateAnim();
- super.update();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement