mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-03-13 19:39:04 +07:00
This commit is contained in:
parent
b79a6f6b32
commit
f5410c5712
@ -1,6 +1,7 @@
|
||||
package mindustry.entities.abilities;
|
||||
|
||||
import arc.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import mindustry.gen.*;
|
||||
|
||||
public abstract class Ability implements Cloneable{
|
||||
@ -16,6 +17,10 @@ public abstract class Ability implements Cloneable{
|
||||
}
|
||||
}
|
||||
|
||||
public void displayBars(Unit unit, Table bars){
|
||||
|
||||
}
|
||||
|
||||
/** @return localized ability name; mods should override this. */
|
||||
public String localized(){
|
||||
return Core.bundle.get("ability." + getClass().getSimpleName().replace("Ability", "").toLowerCase());
|
||||
|
@ -6,10 +6,12 @@ import arc.graphics.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import arc.math.geom.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.util.*;
|
||||
import mindustry.content.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.ui.*;
|
||||
|
||||
public class ForceFieldAbility extends Ability{
|
||||
/** Shield radius. */
|
||||
@ -94,6 +96,11 @@ public class ForceFieldAbility extends Ability{
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayBars(Unit unit, Table bars){
|
||||
bars.add(new Bar("stat.shieldhealth", Pal.accent, () -> unit.shield / max)).row();
|
||||
}
|
||||
|
||||
public void checkRadius(Unit unit){
|
||||
//timer2 is used to store radius scale as an effect
|
||||
realRad = radiusScale * radius;
|
||||
|
@ -2,6 +2,7 @@ package mindustry.entities.comp;
|
||||
|
||||
import arc.*;
|
||||
import arc.math.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
@ -12,6 +13,7 @@ import mindustry.entities.*;
|
||||
import mindustry.game.EventType.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.payloads.*;
|
||||
|
||||
@ -143,4 +145,19 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void contentInfo(Table table, float itemSize, float width){
|
||||
table.clear();
|
||||
table.top().left();
|
||||
|
||||
float pad = 0;
|
||||
float items = payloads.size;
|
||||
if(itemSize * items + pad * items > width){
|
||||
pad = (width - (itemSize) * items) / items;
|
||||
}
|
||||
|
||||
for (Payload p : payloads){
|
||||
table.image(p.icon(Cicon.small)).size(itemSize).padRight(pad);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -171,6 +171,23 @@ public class UnitType extends UnlockableContent{
|
||||
bars.add(new Bar(ammoType.icon + " " + Core.bundle.get("stat.ammo"), ammoType.barColor, () -> unit.ammo / ammoCapacity));
|
||||
bars.row();
|
||||
}
|
||||
|
||||
for(Ability ability : unit.abilities){
|
||||
ability.displayBars(unit, bars);
|
||||
}
|
||||
|
||||
if(unit instanceof Payloadc payload){
|
||||
bars.add(new Bar("stat.payloadcapacity", Pal.items, () -> payload.payloadUsed() / unit.type().payloadCapacity));
|
||||
bars.row();
|
||||
|
||||
var count = new float[]{-1};
|
||||
bars.table().update(t -> {
|
||||
if(count[0] != payload.payloadUsed()) {
|
||||
payload.contentInfo(t, 8 * 2, 270);
|
||||
count[0] = payload.payloadUsed();
|
||||
}
|
||||
}).growX().left();
|
||||
}
|
||||
}).growX();
|
||||
|
||||
if(unit.controller() instanceof LogicAI){
|
||||
|
@ -44,7 +44,6 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
||||
public final PlanetRenderer planets = renderer.planets;
|
||||
public final LaunchLoadoutDialog loadouts = new LaunchLoadoutDialog();
|
||||
|
||||
public int launchRange;
|
||||
public float zoom = 1f, selectAlpha = 1f;
|
||||
public @Nullable Sector selected, hovered, launchSector;
|
||||
public Mode mode = look;
|
||||
|
@ -755,6 +755,20 @@ public class HudFragment extends Fragment{
|
||||
return builder;
|
||||
}).growX().pad(8f);
|
||||
|
||||
table.row();
|
||||
|
||||
var count = new float[]{-1};
|
||||
table.table().update(t -> {
|
||||
if(player.unit() instanceof Payloadc payload){
|
||||
if(count[0] != payload.payloadUsed()){
|
||||
payload.contentInfo(t, 8 * 2, 275f);
|
||||
count[0] = payload.payloadUsed();
|
||||
}
|
||||
}else{
|
||||
t.clear();
|
||||
}
|
||||
}).growX().visible(() -> player.unit() instanceof Payloadc p && p.payloadUsed() > 0).colspan(2);
|
||||
|
||||
return table;
|
||||
}
|
||||
|
||||
|
@ -57,4 +57,9 @@ public class BuildPayload implements Payload{
|
||||
Drawf.shadow(build.x, build.y, build.block.size * tilesize * 2f);
|
||||
Draw.rect(build.block.icon(Cicon.full), build.x, build.y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion icon(Cicon icon){
|
||||
return block().icon(icon);
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,11 @@
|
||||
package mindustry.world.blocks.payloads;
|
||||
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.util.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.game.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
import static mindustry.Vars.*;
|
||||
@ -33,6 +35,9 @@ public interface Payload{
|
||||
/** writes the payload for saving. */
|
||||
void write(Writes write);
|
||||
|
||||
/** @return icon describing the contents. */
|
||||
TextureRegion icon(Cicon icon);
|
||||
|
||||
static void write(@Nullable Payload payload, Writes write){
|
||||
if(payload == null){
|
||||
write.bool(false);
|
||||
|
@ -89,4 +89,9 @@ public class UnitPayload implements Payload{
|
||||
deactiveTime = Math.max(deactiveTime - Time.delta/deactiveDuration, 0f);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion icon(Cicon icon){
|
||||
return unit.type.icon(icon);
|
||||
}
|
||||
}
|
||||
|
@ -45,8 +45,8 @@ public class Battery extends PowerDistributor{
|
||||
|
||||
@Override
|
||||
public BlockStatus status(){
|
||||
if(Mathf.equal(power.status, 0f, 0.01f)) return BlockStatus.noInput;
|
||||
if(Mathf.equal(power.status, 1f, 0.01f)) return BlockStatus.active;
|
||||
if(Mathf.equal(power.status, 0f, 0.001f)) return BlockStatus.noInput;
|
||||
if(Mathf.equal(power.status, 1f, 0.001f)) return BlockStatus.active;
|
||||
return BlockStatus.noOutput;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user