Added alpha drone swarm ability

This commit is contained in:
Anuken
2018-08-24 13:54:53 -04:00
parent 5e8686db77
commit 94805259d7
14 changed files with 672 additions and 527 deletions
@@ -5,7 +5,6 @@ import io.anuke.mindustry.entities.Predict;
import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.entities.traits.CarriableTrait;
import io.anuke.mindustry.entities.traits.CarryTrait;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.graphics.Trail;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.type.AmmoType;
@@ -154,7 +153,7 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{
@Override
public void drawOver(){
trail.draw(Palette.lightTrail, 5f);
trail.draw(type.trailColor, 5f);
}
@Override
@@ -1,5 +1,6 @@
package io.anuke.mindustry.entities.units;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectSet;
@@ -43,12 +44,12 @@ public class UnitType implements UnlockableContent{
public float retreatPercent = 0.2f;
public float armor = 0f;
public float carryWeight = 1f;
public int ammoCapacity = 200;
public int itemCapacity = 30;
public ObjectSet<Item> toMine = ObjectSet.with(Items.lead, Items.copper);
public float buildPower = 0.3f, minePower = 0.7f, healSpeed = 0.1f;
public Weapon weapon = Weapons.blaster;
public float weaponOffsetX, weaponOffsetY;
public Color trailColor = Color.valueOf("ffa665");
public TextureRegion iconRegion, legRegion, baseRegion, region;
@@ -0,0 +1,76 @@
package io.anuke.mindustry.entities.units.types;
import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.entities.Predict;
import io.anuke.mindustry.entities.Unit;
import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.mindustry.entities.units.FlyingUnit;
import io.anuke.mindustry.entities.units.UnitCommand;
import io.anuke.mindustry.entities.units.UnitState;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.ucore.util.Mathf;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
public class AlphaDrone extends FlyingUnit {
static final float followDistance = 80f;
public Unit leader;
public final UnitState attack = new UnitState() {
@Override
public void update() {
if(leader == null || leader.isDead()){
damage(99999f);
return;
}
TargetTrait last = target;
target = leader;
if(last == null){
circle(50f);
}
target = last;
if(distanceTo(leader) < followDistance){
targetClosest();
}else{
target = null;
}
if(target != null){
attack(50f);
if((Mathf.angNear(angleTo(target), rotation, 15f) && distanceTo(target) < getWeapon().getAmmo().getRange())){
AmmoType ammo = getWeapon().getAmmo();
Vector2 to = Predict.intercept(AlphaDrone.this, target, ammo.bullet.speed);
getWeapon().update(AlphaDrone.this, to.x, to.y);
}
}
}
};
@Override
public void onCommand(UnitCommand command){
//nuh
}
@Override
public void behavior(){
//nope
}
@Override
public UnitState getStartState() {
return attack;
}
@Override
public void writeSave(DataOutput stream) throws IOException {
super.writeSave(stream);
}
@Override
public void readSave(DataInput stream) throws IOException {
super.readSave(stream);
}
}