diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 33470678e7..7b4ac590b6 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -755,6 +755,7 @@ error.title = [scarlet]An error has occured error.crashtitle = An error has occured unit.nobuild = [scarlet]Unit can't build lastaccessed = [lightgray]Last Accessed: {0} +lastcommanded = [lightgray]Last Commanded: {0} block.unknown = [lightgray]??? stat.showinmap = diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index e439197204..6ec46ac271 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -1250,7 +1250,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, if(value instanceof UnitType) type = UnitType.class; if(builder != null && builder.isPlayer()){ - lastAccessed = builder.getPlayer().name; + lastAccessed = builder.getPlayer().coloredName(); } if(block.configurations.containsKey(type)){ diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 062cc810d6..c2a6779d30 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -51,6 +51,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I //TODO could be better represented as a unit transient @Nullable UnitType dockedType; + transient String lastCommanded; transient float shadowAlpha = -1f, healTime; transient int lastFogPos; private transient float resupplyTime = Mathf.random(10f); diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 35576d75a4..086c8417bf 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -234,6 +234,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ ai.commandPosition(posTarget); } } + unit.lastCommanded = player.coloredName(); } if(unitIds.length > 0 && player == Vars.player){ diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index bfae830600..f885c6b3e9 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -510,13 +510,24 @@ public class UnitType extends UnlockableContent{ } }).growX(); - if(unit.controller() instanceof LogicAI){ + if(unit.controller() instanceof LogicAI ai){ table.row(); table.add(Blocks.microProcessor.emoji() + " " + Core.bundle.get("units.processorcontrol")).growX().wrap().left(); + if(ai.controller != null && (Core.settings.getBool("mouseposition") || Core.settings.getBool("position"))){ + table.row(); + table.add("[lightgray](" + ai.controller.tileX() + ", " + ai.controller.tileY() + ")").growX().wrap().left(); + } table.row(); table.label(() -> Iconc.settings + " " + (long)unit.flag + "").color(Color.lightGray).growX().wrap().left(); + if(net.active() && ai.controller != null && ai.controller.lastAccessed != null){ + table.row(); + table.add(Core.bundle.format("lastaccessed", ai.controller.lastAccessed)).growX().wrap().left(); + } + }else if(net.active() && unit.lastCommanded != null){ + table.row(); + table.add(Core.bundle.format("lastcommanded", unit.lastCommanded)).growX().wrap().left(); } - + table.row(); }