Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Yes, each group needs it's own function. Dang it.
- private function hitTower(enemy:Enemy, hitTower:Tower):Void
- {
- //var hitTower:Tower = cast(hitTower);
- enemy.moneyGain = false;
- var enemTarget:Int = 0;
- if (enemy.BacteriaType == 0)
- {
- enemTarget = Random.int(0, 1);
- //Head for player
- if (enemTarget == 0) FlxVelocity.moveTowardsObject(enemy, Astro, zombieSpeed);
- //Head for home base
- if (enemTarget == 1) FlxVelocity.moveTowardsObject(enemy, goal, zombieSpeed);
- }
- hitTower.health -= 1; //CHANGE TO DAMAGE DEALT BY ENEMY
- if (hitTower.health <= 0)
- {
- hitTower.kill();
- //Each group ALSO needs to be removed from baseGroup.
- towerGroup.remove(hitTower,false);
- }
- enemy.health -= 1;
- }
- //////////////////////////////////////////////////
- private function hitGateB(enemy:Enemy, hitGateB:GateB):Void
- {
- //var hitGateB:GateB = cast(hitGateB);
- enemy.moneyGain = false;
- var enemTarget:Int = 0;
- if (enemy.BacteriaType == 0)
- {
- enemTarget = Random.int(0, 1);
- //Head for player
- if (enemTarget == 0) FlxVelocity.moveTowardsObject(enemy, Astro, zombieSpeed);
- //Head for home base
- if (enemTarget == 1) FlxVelocity.moveTowardsObject(enemy, goal, zombieSpeed);
- }
- hitGateB.health -= 1; //CHANGE TO DAMAGE DEALT BY ENEMY
- if (hitGateB.health <= 0)
- {
- hitGateB.kill();
- //Each group ALSO needs to be removed from baseGroup.
- gateBGroup.remove(hitGateB,false);
- }
- enemy.health -= 1;
- }
- /////////////////////////////////////////////////////////////////Test*
- private function hitGate(enemy:Enemy, thingG:Gate):Void
- {
- var hitGate:Gate = cast(thingG);
- enemy.moneyGain = false;
- var enemTarget:Int = 0;
- if (enemy.BacteriaType == 0)
- {
- enemTarget = Random.int(0, 1);
- //Head for player
- if (enemTarget == 0) FlxVelocity.moveTowardsObject(enemy, Astro, zombieSpeed);
- //Head for home base
- if (enemTarget == 1) FlxVelocity.moveTowardsObject(enemy, goal, zombieSpeed);
- }
- hitGate.health -= 1; //CHANGE TO DAMAGE DEALT BY ENEMY
- if (hitGate.health <= 0)
- {
- hitGate.kill();
- //Each group ALSO needs to be removed from basegroup.
- gateGroup.remove(hitGate,false);
- }
- enemy.health -= 1;
- }
- //Tower Class
- package;
- //////////////////////////////////////////
- //New
- import flixel.group.FlxGroup;
- import flixel.FlxG;
- import flixel.FlxSprite;
- import flixel.math.FlxPoint;
- import flixel.math.FlxVelocity;
- import flixel.math.FlxMath;
- import flixel.effects.particles.FlxParticle;
- import flixel.effects.particles.FlxEmitter;
- import flixel.ui.FlxBar;
- import flixel.util.FlxGradient;
- class Tower extends Structure
- {
- public var range:Int = 120;
- public var fireRate:Float = 0.6;
- public var damage:Int = 1;
- public var range_LEVEL:Int = 1;
- public var firerate_LEVEL:Int = 1;
- public var damage_LEVEL:Int = 1;
- public var range_PRIZE:Int = 10;
- public var firerate_PRIZE:Int = 10;
- public var damage_PRIZE:Int = 10;
- private var shootInvertall:Int = 1;
- private var shootCounter:Int = 0;
- private var indicator:FlxSprite;
- private var beaconSpot:FlxSprite;
- public var index:Int;
- private static var HELPER_POINT:FlxPoint = new FlxPoint();
- private static var HELPER_POINT_2:FlxPoint = new FlxPoint();
- public var deathBump:Bool = false;
- public var intel:Int;
- public var upgradePoint:Int = 1;
- private var _healthBar:FlxBar;
- public function new(x:Float, y:Float)
- {
- super(x, y);
- loadGraphic("assets/images/Turret.png", false, 12,12);
- intel = 0;
- health = 10;
- immovable = true;
- Mode = 1;
- _healthBar = new FlxBar(x, y, FlxBarFillDirection.LEFT_TO_RIGHT, Std.int(width), 2, this, "health", 0, health, true);
- _healthBar.createGradientBar([0xff800000], [0xffff0000,0xffFF0000], 1, 0, true, 0xcc333333);
- _healthBar.scrollFactor.set();
- _healthBar.trackParent(0, -4);
- _healthBar.killOnEmpty;
- R.PS.add(_healthBar);
- //R.STATE.add(_healthBar);
- }
- override public function update(elapsed:Float):Void
- {
- if (upgradePoint == 2)
- {
- loadGraphic("assets/images/Turret2.png", false, 12, 27);
- y -= 15;
- }
- if (getNearestEnemy() == null)
- {
- intel = 0;
- }
- else
- {
- shootCounter += cast(FlxG.timeScale);
- if (shootCounter > (shootInvertall * FlxG.updateFramerate) * fireRate)
- shoot();
- }
- if (FlxG.keys.justReleased.U && R.PS.money > R.PS.upgradePrice && upgradePoint < 7) upgradeLevel();
- super.update(elapsed);
- //if (deathBump == true) kill();
- }
- override public function kill():Void
- {
- //indicator.kill();
- //FlxG.sound.play("LostTower2");
- var emitter:FlxTypedEmitter<FlxParticle> = new FlxTypedEmitter(x, y,2);
- var speed:Int = 100;
- emitter.focusOn(this);
- emitter.velocity.set( -speed, -speed, speed, speed);
- var particles:Int = 2;
- for (i in 0...(particles))
- {
- var particle:FlxParticle = new FlxParticle();
- particle.makeGraphic(3, 3, 0xff8000FF);
- particle.exists = false;
- particle.lifespan = 0.2;
- emitter.add(particle);
- }
- R.PS.emitterGroup.add(emitter);
- emitter.start(true);
- R.PS.towerGroup.remove(this, true);
- _healthBar.kill();
- super.kill();
- }
- private function shoot():Void
- {
- var target:Enemy = getNearestEnemy();
- if (target == null) return;
- //var targeting:FlxSprite = R.PS.targetCon;
- var bullet:Bullet = new Bullet(getMidpoint().x, getMidpoint().y, target, damage);
- if (this.alive)
- {
- R.PS.bulletGroup.add(bullet);
- //FlxG.sound.play("LaserShot2",0.2);
- }
- shootCounter = 0;
- }
- private function getNearestEnemy():Enemy
- {
- var firstEnemy:Enemy = null;
- var enemies:FlxTypedGroup<Enemy> = R.PS.enemyGroup;
- for (enemy in enemies.members)
- {
- if (enemy != null && enemy.alive)
- {
- HELPER_POINT.x = x;
- HELPER_POINT.y = y;
- HELPER_POINT_2.x = enemy.x;
- HELPER_POINT_2.y = enemy.y;
- var distance:Float = getPosition(HELPER_POINT).distanceTo(HELPER_POINT_2);
- if (distance <= range)
- {
- firstEnemy = enemy;
- break;
- }
- }
- }
- return firstEnemy;
- }
- // Upgrades
- public function upgradeLevel():Void
- {
- upgradePoint += 1;
- range += 10;
- range_LEVEL ++;
- range_PRIZE = cast(range_PRIZE * 1.5);
- damage ++;
- damage_LEVEL ++;
- damage_PRIZE = cast(damage_PRIZE * 1.5);
- }
- }
- ////////////////////////////
- Gate Class
- package;
- //////////////////////////////////////////
- //New
- import flixel.group.FlxGroup;
- import flixel.FlxG;
- import flixel.FlxSprite;
- import flixel.math.FlxPoint;
- import flixel.math.FlxVelocity;
- import flixel.math.FlxMath;
- import flixel.effects.particles.FlxParticle;
- import flixel.effects.particles.FlxEmitter;
- import flixel.util.FlxColor;
- import flixel.ui.FlxBar;
- import flixel.util.FlxGradient;
- class Gate extends Structure
- {
- public var index:Int;
- private var _healthBar:FlxBar;
- public function new(x:Float, y:Float)
- {
- super(x, y);
- loadGraphic("assets/images/Gate.png", false, 12, 12);
- health = 3;
- Mode = 3;
- immovable = true;
- _healthBar = new FlxBar(x, y, FlxBarFillDirection.LEFT_TO_RIGHT, Std.int(width), 2, this, "health", 0, health, true);
- _healthBar.createGradientBar([0xff800000], [0xffff0000,0xffFF0000], 1, 0, true, 0xcc333333);
- _healthBar.scrollFactor.set();
- _healthBar.trackParent(0, -4);
- _healthBar.killOnEmpty;
- R.PS.add(_healthBar);
- }
- override public function update(elapsed:Float):Void
- {
- //if (this.x == x + 12) loadGraphic("assets/images/Silo.png", false, 12,12);
- //if (this.x == x + 12) loadGraphic("assets/images/Silo.png", false, 12,12);
- FlxG.watch.add(this, "Px", "Next");
- super.update(elapsed);
- }
- override public function kill():Void
- {
- var emitter:FlxTypedEmitter<FlxParticle> = new FlxTypedEmitter(x, y,2);
- var speed:Int = 100;
- emitter.focusOn(this);
- emitter.velocity.set( -speed, -speed, speed, speed);
- var particles:Int = 2;
- for (i in 0...(particles))
- {
- var particle:FlxParticle = new FlxParticle();
- particle.makeGraphic(3, 3, 0xff8000FF);
- particle.exists = false;
- particle.lifespan = 0.2;
- emitter.add(particle);
- }
- R.PS.emitterGroup.add(emitter);
- emitter.start(true);
- R.PS.gateGroup.remove(this, true);
- _healthBar.kill();
- super.kill();
- }
- }
- ////////////
- Gate B Class
- package;
- //////////////////////////////////////////
- //New
- import flixel.group.FlxGroup;
- import flixel.FlxG;
- import flixel.FlxSprite;
- import flixel.math.FlxPoint;
- import flixel.math.FlxVelocity;
- import flixel.math.FlxMath;
- import flixel.effects.particles.FlxParticle;
- import flixel.effects.particles.FlxEmitter;
- import flixel.ui.FlxBar;
- import flixel.util.FlxGradient;
- class GateB extends Structure
- {
- public var index:Int;
- private var _healthBar:FlxBar;
- public function new(x:Float, y:Float)
- {
- super(x, y);
- loadGraphic("assets/images/Gate.png", false, 12, 12);
- color = 0xffFFFF00;
- health = 10;
- immovable = true;
- Mode = 3;
- _healthBar = new FlxBar(x, y, FlxBarFillDirection.LEFT_TO_RIGHT, Std.int(width), 2, this, "health", 0, health, true);
- _healthBar.createGradientBar([0xff800000], [0xffff0000,0xffFF0000], 1, 0, true, 0xcc333333);
- _healthBar.scrollFactor.set();
- _healthBar.trackParent(0, -4);
- _healthBar.killOnEmpty;
- R.PS.add(_healthBar);
- //R.STATE.add(_healthBar);
- }
- override public function update(elapsed:Float):Void
- {
- super.update(elapsed);
- }
- override public function kill():Void
- {
- //indicator.kill();
- //FlxG.sound.play("LostTower2");
- var emitter:FlxTypedEmitter<FlxParticle> = new FlxTypedEmitter(x, y,2);
- var speed:Int = 100;
- emitter.focusOn(this);
- emitter.velocity.set( -speed, -speed, speed, speed);
- var particles:Int = 2;
- for (i in 0...(particles))
- {
- var particle:FlxParticle = new FlxParticle();
- particle.makeGraphic(3, 3, 0xff8000FF);
- particle.exists = false;
- particle.lifespan = 0.2;
- emitter.add(particle);
- }
- R.PS.emitterGroup.add(emitter);
- emitter.start(true);
- R.PS.gateBGroup.remove(this, true);
- _healthBar.kill();
- super.kill();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement