NorbiPeti
9609187cff
Removed GameState methods from block APIs Created a BlockUtility class to get the block the player is looking at Changed the return type of PlaceBlock, returning the ID of the newly placed block or null
74 lines
No EOL
2.5 KiB
C#
74 lines
No EOL
2.5 KiB
C#
using System.Reflection;
|
|
|
|
using Harmony;
|
|
using RobocraftX.Blocks;
|
|
using RobocraftX.Blocks.Ghost;
|
|
using RobocraftX.Character.Camera;
|
|
using RobocraftX.Character.Factories;
|
|
using RobocraftX.Common;
|
|
using RobocraftX.Players;
|
|
using Svelto.ECS;
|
|
using uREPL;
|
|
|
|
using GamecraftModdingAPI.Commands;
|
|
using GamecraftModdingAPI.Utility;
|
|
|
|
namespace GamecraftModdingAPI.Blocks
|
|
{
|
|
public class RemovalEngine : IApiEngine
|
|
{
|
|
private static IEntityFunctions _entityFunctions;
|
|
private static MachineGraphConnectionEntityFactory _connectionFactory;
|
|
|
|
public bool RemoveBlock(EGID target)
|
|
{
|
|
if (!entitiesDB.Exists<MachineGraphConnectionsEntityStruct>(target))
|
|
return false;
|
|
var connections = entitiesDB.QueryEntity<MachineGraphConnectionsEntityStruct>(target);
|
|
for (int i = connections.connections.Length - 1; i >= 0; i--)
|
|
_connectionFactory.RemoveConnection(connections, i, entitiesDB);
|
|
_entityFunctions.RemoveEntity<BlockEntityDescriptor>(target);
|
|
return true;
|
|
}
|
|
|
|
public void Ready()
|
|
{
|
|
/*CommandManager.AddCommand(new SimpleCustomCommandEngine(() =>
|
|
{
|
|
var block = BlockUtility.GetBlockLookedAt(LocalPlayerIDUtility.GetLocalPlayerID(entitiesDB), entitiesDB);
|
|
if (block.HasValue)
|
|
{
|
|
RemoveBlock(block.Value);
|
|
Log.Output("Removed block.");
|
|
}
|
|
else
|
|
Log.Output("No block found where you're looking at.");
|
|
}, "removeCube", "Removes the cube you're looking at."));*/
|
|
}
|
|
|
|
public EntitiesDB entitiesDB { get; set; }
|
|
|
|
public void Dispose()
|
|
{
|
|
}
|
|
|
|
public string Name { get; } = "GamecraftModdingAPIRemovalGameEngine";
|
|
|
|
[HarmonyPatch]
|
|
public class FactoryObtainerPatch
|
|
{
|
|
static void Postfix(IEntityFunctions entityFunctions,
|
|
MachineGraphConnectionEntityFactory machineGraphConnectionEntityFactory)
|
|
{
|
|
_entityFunctions = entityFunctions;
|
|
_connectionFactory = machineGraphConnectionEntityFactory;
|
|
Logging.MetaDebugLog("Requirements injected.");
|
|
}
|
|
|
|
static MethodBase TargetMethod(HarmonyInstance instance)
|
|
{
|
|
return AccessTools.TypeByName("RobocraftX.CR.MachineEditing.RemoveBlockEngine").GetConstructors()[0];
|
|
}
|
|
}
|
|
}
|
|
} |