Power-based ammo / Refactoring / IP kicks / Fixes

This commit is contained in:
Anuken
2020-09-24 13:05:39 -04:00
parent db94acdb83
commit 0a07458186
28 changed files with 322 additions and 126 deletions

View File

@@ -2,8 +2,10 @@ package mindustry.world.blocks.power;
import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.struct.*;
import mindustry.annotations.Annotations.*;
import mindustry.gen.*;
import mindustry.world.meta.*;
import static mindustry.Vars.tilesize;
@@ -17,6 +19,7 @@ public class Battery extends PowerDistributor{
super(name);
outputsPower = true;
consumesPower = true;
flags = EnumSet.of(BlockFlag.powerResupply);
}
public class BatteryBuild extends Building{

View File

@@ -5,6 +5,7 @@ import mindustry.content.*;
import mindustry.entities.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.type.AmmoTypes.*;
import mindustry.world.*;
import static mindustry.Vars.*;
@@ -53,10 +54,10 @@ public class ResupplyPoint extends Block{
public static boolean resupply(Building tile, float range, int ammoAmount, Color ammoColor){
if(!state.rules.unitAmmo) return false;
Unit unit = Units.closest(tile.team, tile.x, tile.y, range, u -> u.ammo() <= u.type().ammoCapacity - ammoAmount);
Unit unit = Units.closest(tile.team, tile.x, tile.y, range, u -> u.type().ammoType instanceof ItemAmmoType && u.ammo <= u.type().ammoCapacity - ammoAmount);
if(unit != null){
Fx.itemTransfer.at(tile.x, tile.y, ammoAmount / 2f, ammoColor, unit);
unit.ammo(Math.min(unit.ammo() + ammoAmount, unit.type().ammoCapacity));
unit.ammo = Math.min(unit.ammo + ammoAmount, unit.type().ammoCapacity);
return true;
}

View File

@@ -12,6 +12,8 @@ public enum BlockFlag{
repair,
/** Rally point. */
rally,
/** Block that stored power for resupply. */
powerResupply,
/** Any block that boosts unit capacity. */
unitModifier;