Browse Source

Expose the simulation-time object IDs

They are useful
tags/v1.2.0
NorbiPeti 4 years ago
parent
commit
448cf3af48
2 changed files with 19 additions and 4 deletions
  1. +2
    -2
      GamecraftModdingAPI/Blocks/BlockEngine.cs
  2. +17
    -2
      GamecraftModdingAPI/Blocks/ObjectIdentifier.cs

+ 2
- 2
GamecraftModdingAPI/Blocks/BlockEngine.cs View File

@@ -144,14 +144,14 @@ namespace GamecraftModdingAPI.Blocks
return ret.ToArray();
}

public ObjectIdentifier[] GetObjectIDsFromID(byte id)
public ObjectIdentifier[] GetObjectIDsFromID(byte id, bool sim)
{
var ret = new FasterList<ObjectIdentifier>(4);
if (!entitiesDB.HasAny<ObjectIdEntityStruct>(CommonExclusiveGroups.OWNED_BLOCKS_GROUP))
return new ObjectIdentifier[0];
var oids = entitiesDB.QueryEntities<ObjectIdEntityStruct>(CommonExclusiveGroups.OWNED_BLOCKS_GROUP);
foreach (ref ObjectIdEntityStruct oid in oids)
if (oid.objectId == id)
if (sim ? oid.simObjectId == id : oid.objectId == id)
ret.Add(new ObjectIdentifier(oid.ID));
return ret.ToArray();
}


+ 17
- 2
GamecraftModdingAPI/Blocks/ObjectIdentifier.cs View File

@@ -32,10 +32,25 @@ namespace GamecraftModdingAPI.Blocks
}

/// <summary>
/// Finds the identfier blocks with the given ID.
/// 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'));
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);
}
}

Loading…
Cancel
Save