using Content.Shared._CP14.DayCycle.Components; using Content.Shared.Maps; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; namespace Content.Shared._CP14.DayCycle; public abstract class CP14SharedDayCycleSystem : EntitySystem { private static readonly ProtoId DayPeriod = "Day"; [Dependency] private readonly SharedMapSystem _maps = default!; [Dependency] private readonly ITileDefinitionManager _tileDefManager = default!; /// /// Checks to see if the specified entity is on the map where it's daytime. /// /// An entity being tested to see if it is in daylight /// Checks if the tile covers the weather (the only "roof" factor at the moment) public bool TryDaylightThere(EntityUid target, bool checkRoof) { var xform = Transform(target); if (!TryComp(xform.MapUid, out var dayCycle)) return false; if (!checkRoof || !TryComp(xform.GridUid, out var mapGrid)) return dayCycle.CurrentPeriod == DayPeriod; var tileRef = _maps.GetTileRef(xform.GridUid.Value, mapGrid, xform.Coordinates); var tileDef = (ContentTileDefinition) _tileDefManager[tileRef.Tile.TypeId]; if (!tileDef.Weather) return false; return dayCycle.CurrentPeriod == DayPeriod; } }