JuiceBoxx

Enemy

Sep 12th, 2015
142
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package;
  2. import flixel.FlxSprite;
  3. import flixel.util.FlxColor;
  4. import flixel.FlxG;
  5. import flixel.util.FlxAngle;
  6. import flixel.FlxObject;
  7. import flixel.util.FlxPoint;
  8. import flixel.util.FlxRandom;
  9. import flixel.tile.FlxTilemap;
  10. import flixel.util.FlxPath;
  11. import flixel.util.FlxVelocity;
  12.  
  13. class Enemy extends FlxSprite
  14. {
  15.     public var speed:Float = 200;
  16.     public var etype(default,null):Int;
  17.     public var seesPlayer:Bool = false;
  18.     public var playerPos(default,null):FlxPoint;
  19.     public var animState:Int;
  20.     public var pathPoints:Array<FlxPoint>;
  21.     public var path:FlxPath;
  22.     //privates
  23.     private var _brain:FSM;
  24.     private var _idleTmr:Float;
  25.     private var _moveDir:Float;
  26.     private var _newPos:FlxPoint;
  27.     private var _map:FlxTilemap;
  28.     private var _tWidth:Float;
  29.     private var _tHeight:Float;
  30.     private var _myPos:FlxPoint;
  31.     private var _player:Player;
  32.  
  33.     public function new(X:Float=0,Y:Float=0,EType:Int,PS:PlayState,M:FlxTilemap)
  34.     {
  35.         //Grab variables from function
  36.         super(X,Y);
  37.         etype = EType;
  38.         PS.setEnemyAnim(this,EType,x,y);
  39.         _map = M;
  40.         _player = PS._player;
  41.         //Grab sprite
  42.         loadGraphic('assets/images/enemy-' + Std.string(etype) + '.png', true, 64,64);
  43.         //Set some drag
  44.         drag.x = drag.y = 10;
  45.         //Make a hitbox maybe
  46.         offset.set(0,48);
  47.         setSize(64,16);
  48.         //Probably some ai stuff
  49.         _brain = new FSM(idle);
  50.         _idleTmr = 0;
  51.         playerPos = FlxPoint.get();
  52.         _newPos = playerPos;
  53.         path = new FlxPath();
  54.     }
  55.  
  56.     //An idol
  57.     public function idle():Void
  58.     {
  59.         if (seesPlayer)
  60.         {
  61.             _brain.activeState = chase;
  62.         }
  63.         else if (_idleTmr <= 0)
  64.         {
  65.             if (FlxRandom.chanceRoll(1))
  66.             {
  67.                 _moveDir = -1;
  68.                 velocity.x = velocity.y = 0;
  69.             }
  70.             else
  71.             {
  72.                 _moveDir = FlxRandom.intRanged(0,8)*45;
  73.                 FlxAngle.rotatePoint(speed * .5,0,0,0,_moveDir,velocity);
  74.             }
  75.             _idleTmr = FlxRandom.intRanged(1,4);
  76.         }
  77.         else
  78.         {
  79.             _idleTmr -= FlxG.elapsed;
  80.         }
  81.     }
  82.     //An exite chase thingy
  83.     public function chase():Void
  84.     {
  85.  
  86.         if(!seesPlayer){
  87.             _brain.activeState = idle;
  88.             path.cancel();
  89.         }
  90.         else
  91.         {
  92.             path.start(this, pathPoints, speed);
  93.             speed = FlxRandom.intRanged(200,280);
  94.  
  95.             //FlxVelocity.moveTowardsPoint(this, playerPos, Std.int(speed));
  96.  
  97.         }
  98.  
  99.     }
  100.  
  101.     private function updateAnim():Void
  102.     {
  103.         if ((velocity.x != 0 || velocity.y !=0))
  104.         {
  105.             //Get Current Direction...
  106.             if (Math.abs(velocity.x) > Math.abs(velocity.y))
  107.             {
  108.                 if (velocity.x < 0)
  109.                     animState = 1;
  110.                 else
  111.                     animState = 4;
  112.             }
  113.             else
  114.             {
  115.                 if (velocity.y < 0)
  116.                     animState = 2;
  117.                 else
  118.                     animState = 3;
  119.             }
  120.         }
  121.         else
  122.         {
  123.             animState = 0;
  124.         }
  125.     }
  126.  
  127.     //override an update
  128.     override public function update():Void
  129.     {
  130.         this.visible = false;
  131.         _brain.update();
  132.         updateAnim();
  133.         super.update();
  134.     }
  135. }
RAW Paste Data