This commit is contained in:
2022-05-18 19:57:23 +03:00
commit 0ad135ca0f
73 changed files with 2282 additions and 0 deletions

113
Ingame/IMyTerminalBlock.cs Normal file
View File

@@ -0,0 +1,113 @@
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;
}
}
}
}