Allow desktop players to configure blocks and view inventories when dead

This commit is contained in:
Anuken
2025-10-31 02:14:18 -04:00
parent fc10ea5b0b
commit 1df6c5d0ca
3 changed files with 10 additions and 4 deletions

View File

@@ -538,10 +538,14 @@ public class DesktopInput extends InputHandler{
if(Core.input.keyTap(Binding.select) && !Core.scene.hasMouse()){ if(Core.input.keyTap(Binding.select) && !Core.scene.hasMouse()){
tappedOne = false; tappedOne = false;
Tile selected = tileAt(Core.input.mouseX(), Core.input.mouseY());
if(commandMode){ if(commandMode){
commandRect = true; commandRect = true;
commandRectX = input.mouseWorldX(); commandRectX = input.mouseWorldX();
commandRectY = input.mouseWorldY(); commandRectY = input.mouseWorldY();
}else if(selected != null){
tileTapped(selected.build);
} }
} }
} }

View File

@@ -11,8 +11,8 @@ import arc.math.geom.*;
import arc.scene.*; import arc.scene.*;
import arc.scene.event.*; import arc.scene.event.*;
import arc.scene.ui.layout.*; import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.struct.Queue; import arc.struct.Queue;
import arc.struct.*;
import arc.util.*; import arc.util.*;
import mindustry.*; import mindustry.*;
import mindustry.ai.*; import mindustry.ai.*;
@@ -40,7 +40,6 @@ import mindustry.world.blocks.*;
import mindustry.world.blocks.distribution.*; import mindustry.world.blocks.distribution.*;
import mindustry.world.blocks.payloads.*; import mindustry.world.blocks.payloads.*;
import mindustry.world.blocks.storage.*; import mindustry.world.blocks.storage.*;
import mindustry.world.blocks.storage.CoreBlock.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
import java.util.*; import java.util.*;
@@ -664,6 +663,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
return; return;
} }
} }
if(player != null) build.updateLastAccess(player);
build.configured(player == null || player.dead() ? null : player.unit(), value); build.configured(player == null || player.dead() ? null : player.unit(), value);
Events.fire(new ConfigEvent(build, player, value)); Events.fire(new ConfigEvent(build, player, value));
} }

View File

@@ -47,6 +47,8 @@ public class CoreBlock extends StorageBlock{
public @Load(value = "@-thruster2", fallback = "clear-effect") TextureRegion thruster2; //bot left public @Load(value = "@-thruster2", fallback = "clear-effect") TextureRegion thruster2; //bot left
public float thrusterLength = 14f/4f, thrusterOffset = 0f; public float thrusterLength = 14f/4f, thrusterOffset = 0f;
public boolean isFirstTier; public boolean isFirstTier;
/** If false, players can't respawn at this core. */
public boolean allowSpawn = true;
/** If true, this core type requires a core zone to upgrade. */ /** If true, this core type requires a core zone to upgrade. */
public boolean requiresCoreZone; public boolean requiresCoreZone;
public boolean incinerateNonBuildable = false; public boolean incinerateNonBuildable = false;
@@ -553,7 +555,7 @@ public class CoreBlock extends StorageBlock{
@Override @Override
public void onControlSelect(Unit unit){ public void onControlSelect(Unit unit){
if(!unit.isPlayer()) return; if(!unit.isPlayer() || !allowSpawn) return;
Player player = unit.getPlayer(); Player player = unit.getPlayer();
Fx.spawn.at(player); Fx.spawn.at(player);
@@ -568,7 +570,7 @@ public class CoreBlock extends StorageBlock{
public void requestSpawn(Player player){ public void requestSpawn(Player player){
//do not try to respawn in unsupported environments at all //do not try to respawn in unsupported environments at all
if(!unitType.supportsEnv(state.rules.env)) return; if(!unitType.supportsEnv(state.rules.env) || !allowSpawn) return;
Call.playerSpawn(tile, player); Call.playerSpawn(tile, player);
} }