NorbiPeti
f403feb298
Removed BlockIdentifiers.OWNED_BLOCKS as the original got replaced with an array Added the correct group for each supported functional block Removed EntityFactory property from IEntitySerializer as it is provided on deserialization
57 lines
No EOL
2 KiB
C#
57 lines
No EOL
2 KiB
C#
using Gamecraft.Wires;
|
|
using RobocraftX.Common;
|
|
using Svelto.ECS;
|
|
|
|
namespace GamecraftModdingAPI.Blocks
|
|
{
|
|
public class ObjectIdentifier : Block
|
|
{
|
|
public ObjectIdentifier(EGID id) : base(id)
|
|
{
|
|
if (!BlockEngine.GetBlockInfoExists<ObjectIdEntityStruct>(Id))
|
|
{
|
|
throw new BlockTypeException($"Block is not a {GetType().Name} block");
|
|
}
|
|
}
|
|
|
|
public ObjectIdentifier(uint id) : base(new EGID(id, CommonExclusiveGroups.BUILD_OBJID_BLOCK_GROUP))
|
|
{
|
|
if (!BlockEngine.GetBlockInfoExists<ObjectIdEntityStruct>(Id))
|
|
{
|
|
throw new BlockTypeException($"Block is not a {GetType().Name} block");
|
|
}
|
|
}
|
|
|
|
public char Identifier
|
|
{
|
|
get => (char) (BlockEngine.GetBlockInfo<ObjectIdEntityStruct>(Id).objectId + 'A');
|
|
set
|
|
{
|
|
BlockEngine.GetBlockInfo<ObjectIdEntityStruct>(Id).objectId = (byte) (value - 'A');
|
|
Label = value + ""; //The label isn't updated automatically
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Simulation-time ID. Assigned by the game starting from 0.
|
|
/// </summary>
|
|
public byte SimID
|
|
{
|
|
get => BlockEngine.GetBlockInfo<ObjectIdEntityStruct>(Id).simObjectId;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Finds the identifier blocks with the given ID.
|
|
/// </summary>
|
|
/// <param name="id">The ID to look for</param>
|
|
/// <returns>An array that may be empty</returns>
|
|
public static ObjectIdentifier[] GetByID(char id) => BlockEngine.GetObjectIDsFromID((byte) (id - 'A'), false);
|
|
|
|
/// <summary>
|
|
/// Finds the identifier blocks with the given simulation-time ID. This ID is assigned by the game starting from 0.
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
public static ObjectIdentifier[] GetBySimID(byte id) => BlockEngine.GetObjectIDsFromID(id, true);
|
|
}
|
|
} |