Ghost z-levels move actions + mapping z-levels combine command (#654)
* some setup * fast ghost zlevels-moving * zlevel combine command for mapping
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
using System.Numerics;
|
||||
using Content.Shared._CP14.ZLevel;
|
||||
using Content.Shared.Ghost;
|
||||
using Robust.Shared.Map;
|
||||
|
||||
namespace Content.Server._CP14.ZLevels.EntitySystems;
|
||||
|
||||
public sealed partial class CP14StationZLevelsSystem
|
||||
{
|
||||
private void InitActions()
|
||||
{
|
||||
SubscribeLocalEvent<GhostComponent, CP14ZLevelActionUp>(OnZLevelUp);
|
||||
SubscribeLocalEvent<GhostComponent, CP14ZLevelActionDown>(OnZLevelDown);
|
||||
}
|
||||
|
||||
private void OnZLevelDown(Entity<GhostComponent> ent, ref CP14ZLevelActionDown args)
|
||||
{
|
||||
ZLevelMove(ent, -1);
|
||||
}
|
||||
|
||||
private void OnZLevelUp(Entity<GhostComponent> ent, ref CP14ZLevelActionUp args)
|
||||
{
|
||||
ZLevelMove(ent, 1);
|
||||
}
|
||||
|
||||
private void ZLevelMove(EntityUid ent, int offset)
|
||||
{
|
||||
var xform = Transform(ent);
|
||||
var map = xform.MapUid;
|
||||
|
||||
if (map is null)
|
||||
return;
|
||||
|
||||
var targetMap = GetMapOffset(map.Value, offset);
|
||||
|
||||
if (targetMap is null)
|
||||
return;
|
||||
|
||||
_transform.SetMapCoordinates(ent, new MapCoordinates(_transform.GetWorldPosition(ent), targetMap.Value));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user