using System; using Robust.Shared.GameObjects; using Robust.Shared.Network.Messages; namespace Robust.Server.Placement { [NotContentImplementable] public interface IPlacementManager { /// /// Initializes this manager into a usable state. /// void Initialize(); /// /// Handles placement related client messages. /// void HandleNetMessage(MsgPlacement msg); void HandlePlacementRequest(MsgPlacement msg); /// /// Places mob in entity placement mode with given settings. /// void SendPlacementBegin(EntityUid mob, int range, string objectType, string alignOption); /// /// Places mob in tile placement mode with given settings. /// void SendPlacementBeginTile(EntityUid mob, int range, string tileType, string alignOption); /// /// Cancels object placement mode for given mob. /// void SendPlacementCancel(EntityUid mob); /// /// Gives Mob permission to place entity and places it in object placement mode. /// void StartBuilding(EntityUid mob, int range, string objectType, string alignOption); /// /// Gives Mob permission to place tile and places it in object placement mode. /// void StartBuildingTile(EntityUid mob, int range, string tileType, string alignOption); /// /// Revokes open placement Permission and cancels object placement mode. /// void CancelBuilding(EntityUid mob); /// /// Gives a mob a permission to place a given Entity. /// void AssignBuildPermission(EntityUid mob, int range, string objectType, string alignOption); /// /// Gives a mob a permission to place a given Tile. /// void AssignBuildPermissionTile(EntityUid mob, int range, string tileType, string alignOption); /// /// Removes all building Permissions for given mob. /// void RevokeAllBuildPermissions(EntityUid mob); Func? AllowPlacementFunc { get; set; } } }