Miner unit fixes

This commit is contained in:
Anuken
2020-07-03 09:30:08 -04:00
parent fb7633cb07
commit 3772b04c6b
4 changed files with 15 additions and 24 deletions

View File

@@ -17,17 +17,20 @@ import mindustry.world.*;
import static mindustry.Vars.*;
@Component
abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{
abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc, Unitc{
@Import float x, y, rotation;
@Import UnitType type;
transient float mineTimer;
@Nullable Tile mineTile;
abstract boolean canMine(Item item);
public boolean canMine(Item item){
return type.mineTier >= item.hardness;
}
abstract float miningSpeed();
abstract boolean offloadImmediately();
public boolean offloadImmediately(){
return isPlayer();
}
boolean mining(){
return mineTile != null;
@@ -55,7 +58,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{
}else{
Item item = mineTile.drop();
rotation(Mathf.slerpDelta(rotation(), angleTo(mineTile.worldx(), mineTile.worldy()), 0.4f));
mineTimer += Time.delta()*miningSpeed();
mineTimer += Time.delta()*type.mineSpeed;
if(mineTimer >= 50f + item.hardness*10f){
mineTimer = 0;
@@ -92,6 +95,8 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{
float ex = mineTile.worldx() + Mathf.sin(Time.time() + 48, swingScl, swingMag);
float ey = mineTile.worldy() + Mathf.sin(Time.time() + 48, swingScl + 2f, swingMag);
Draw.z(Layer.power);
Draw.color(Color.lightGray, Color.white, 1f - flashScl + Mathf.absin(Time.time(), 0.5f, flashScl));
Drawf.laser(team(), Core.atlas.find("minelaser"), Core.atlas.find("minelaser-end"), px, py, ex, ey, 0.75f);

View File

@@ -264,19 +264,4 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
//deaths are synced; this calls killed()
Call.onUnitDeath(base());
}
@Override
public boolean canMine(Item item){
return type.drillTier >= item.hardness;
}
@Override
public float miningSpeed(){
return type.mineSpeed;
}
@Override
public boolean offloadImmediately(){
return false;
}
}