Files
space-engineers/Ingame/IMyTerminalBlock.cs
2022-05-18 19:57:23 +03:00

114 lines
4.2 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VRage.Collections;
using VRage.Game.Entity;
using VRage.Game.ModAPI.Ingame;
using IMyInventoryOwner = VRage.Game.ModAPI.Ingame.IMyInventoryOwner;
namespace Sandbox.ModAPI.Ingame
{
public interface IMyTerminalBlock : IMyCubeBlock
{
string CustomName { get; }
string CustomNameWithFaction { get; }
string DetailedInfo { get; }
string CustomInfo { get; }
/// <summary>
/// Gets or sets the Custom Data string.
/// NOTE: Only use this for user input. For storing large mod configs, create your own MyModStorageComponent
/// </summary>
string CustomData { get; set; }
bool HasLocalPlayerAccess();
bool HasPlayerAccess(long playerId);
void SetCustomName(string text);
void SetCustomName(StringBuilder text);
bool ShowOnHUD { get; }
void GetActions(List<Sandbox.ModAPI.Interfaces.ITerminalAction> resultList, Func<Sandbox.ModAPI.Interfaces.ITerminalAction, bool> collect = null);
void SearchActionsOfName(string name,List<Sandbox.ModAPI.Interfaces.ITerminalAction> resultList, Func<Sandbox.ModAPI.Interfaces.ITerminalAction, bool> collect = null);
Sandbox.ModAPI.Interfaces.ITerminalAction GetActionWithName(string name);
Sandbox.ModAPI.Interfaces.ITerminalProperty GetProperty(string id);
void GetProperties(List<Sandbox.ModAPI.Interfaces.ITerminalProperty> resultList, Func<Sandbox.ModAPI.Interfaces.ITerminalProperty, bool> collect = null);
}
/*
Written by Kalvin Osborne, AKA Night Lone. Please do not remove this line.
*/
public static class TerminalBlockExtentions
{
public static long GetId(this IMyTerminalBlock block)
{
return block.EntityId;
}
public static void ApplyAction(this Sandbox.ModAPI.Ingame.IMyTerminalBlock block, string actionName)
{
block.GetActionWithName(actionName).Apply(block);
}
public static void ApplyAction(this Sandbox.ModAPI.Ingame.IMyTerminalBlock block, string actionName, List<TerminalActionParameter> parameters)
{
block.GetActionWithName(actionName).Apply(block, parameters);
}
public static bool HasAction(this Sandbox.ModAPI.Ingame.IMyTerminalBlock block, string actionName)
{
return block.GetActionWithName(actionName) != null;
}
public static bool HasInventory(this Sandbox.ModAPI.Ingame.IMyTerminalBlock block)
{
var entity = block as MyEntity;
if (entity == null)
return false;
if (!(block is IMyInventoryOwner))
return false;
return entity.HasInventory;
}
public static VRage.Game.ModAPI.Ingame.IMyInventory GetInventory(this Sandbox.ModAPI.Ingame.IMyTerminalBlock block, int index)
{
var entity = block as MyEntity;
if (entity == null)
return null;
if (!entity.HasInventory)
return null;
return entity.GetInventoryBase(index) as IMyInventory;
}
public static int GetInventoryCount(this Sandbox.ModAPI.Ingame.IMyTerminalBlock block)
{
var entity = block as MyEntity;
if (entity == null)
return 0;
return entity.InventoryCount;
}
[Obsolete("Use the blocks themselves, this method is no longer reliable")]
public static bool GetUseConveyorSystem(this Sandbox.ModAPI.Ingame.IMyTerminalBlock block)
{
if (block is IMyInventoryOwner)
{
return ((IMyInventoryOwner)block).UseConveyorSystem;
}
else
{
return false;
}
}
[Obsolete("Use the blocks themselves, this method is no longer reliable")]
public static void SetUseConveyorSystem(this Sandbox.ModAPI.Ingame.IMyTerminalBlock block, bool use)
{
if (block is IMyInventoryOwner)
{
((IMyInventoryOwner)block).UseConveyorSystem = use;
}
}
}
}