Attempt to use custom cube category
This commit is contained in:
parent
9c5c980c0b
commit
6a90739197
3 changed files with 39 additions and 21 deletions
|
@ -2,27 +2,19 @@
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using DataLoader;
|
|
||||||
using GamecraftModdingAPI.App;
|
|
||||||
using GamecraftModdingAPI.Utility;
|
|
||||||
using GPUInstancer;
|
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
|
||||||
|
using DataLoader;
|
||||||
using RobocraftX.Blocks;
|
using RobocraftX.Blocks;
|
||||||
using RobocraftX.Common;
|
|
||||||
using RobocraftX.Rendering;
|
using RobocraftX.Rendering;
|
||||||
using Svelto.DataStructures;
|
|
||||||
using Svelto.ECS;
|
using Svelto.ECS;
|
||||||
using Svelto.Tasks;
|
using Svelto.Tasks;
|
||||||
using Unity.Entities.Conversion;
|
|
||||||
using Unity.Physics;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.AddressableAssets;
|
using UnityEngine.AddressableAssets;
|
||||||
using BoxCollider = UnityEngine.BoxCollider;
|
|
||||||
using Material = UnityEngine.Material;
|
using Material = UnityEngine.Material;
|
||||||
using Object = UnityEngine.Object;
|
|
||||||
using ScalingPermission = DataLoader.ScalingPermission;
|
using GamecraftModdingAPI.Utility;
|
||||||
|
|
||||||
namespace GamecraftModdingAPI.Blocks
|
namespace GamecraftModdingAPI.Blocks
|
||||||
{
|
{
|
||||||
|
@ -62,18 +54,18 @@ namespace GamecraftModdingAPI.Blocks
|
||||||
|
|
||||||
public CustomBlock(EGID id) : base(id)
|
public CustomBlock(EGID id) : base(id)
|
||||||
{
|
{
|
||||||
if (id.groupID != Group)
|
/*if (id.groupID != Group)
|
||||||
throw new BlockTypeException("The block is not a custom block! It has a group of " + id.groupID);
|
throw new BlockTypeException("The block is not a custom block! It has a group of " + id.groupID);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public CustomBlock(uint id) : this(new EGID(id, Group))
|
public CustomBlock(uint id) : base(id)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ExclusiveGroup Group { get; } = new ExclusiveGroup("Custom block");
|
//public static ExclusiveGroup Group { get; } = new ExclusiveGroup("Custom block");
|
||||||
|
|
||||||
[HarmonyPatch]
|
[HarmonyPatch]
|
||||||
public static class Patch
|
public static class MaterialCopyPatch
|
||||||
{
|
{
|
||||||
private static Material[] materials;
|
private static Material[] materials;
|
||||||
|
|
||||||
|
@ -110,6 +102,7 @@ namespace GamecraftModdingAPI.Blocks
|
||||||
var cld = new CubeListData
|
var cld = new CubeListData
|
||||||
{ //"Assets/Prefabs/Cube.prefab" - "CTR_CommandBlock" - "strConsoleBlock"
|
{ //"Assets/Prefabs/Cube.prefab" - "CTR_CommandBlock" - "strConsoleBlock"
|
||||||
cubeType = attr.Type,
|
cubeType = attr.Type,
|
||||||
|
//cubeCategory = (CubeCategory) 1000,
|
||||||
cubeCategory = attr.Category,
|
cubeCategory = attr.Category,
|
||||||
inventoryCategory = attr.InventoryCategory,
|
inventoryCategory = attr.InventoryCategory,
|
||||||
ID = nextID++,
|
ID = nextID++,
|
||||||
|
@ -141,8 +134,24 @@ namespace GamecraftModdingAPI.Blocks
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerator Prep()
|
/*[HarmonyPatch] - The block has no collision even in simulation if using a custom category
|
||||||
{ //TODO: Don't let the game load until this finishes
|
private static class FactorySetupPatch
|
||||||
|
{
|
||||||
|
public static void Prefix(BlockEntityFactory __instance)
|
||||||
|
{
|
||||||
|
var builders = (Dictionary<CubeCategory, IBlockBuilder>)
|
||||||
|
AccessTools.Field(__instance.GetType(), "_blockBuilders").GetValue(__instance);
|
||||||
|
builders.Add((CubeCategory) 1000, new BlockBuilder<StandardBlockEntityDescriptor>(Group));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MethodBase TargetMethod()
|
||||||
|
{
|
||||||
|
return AccessTools.Method(typeof(BlockEntityFactory), "ParseDataDB");
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
internal static IEnumerator Prepare()
|
||||||
|
{ //Should be pretty quick
|
||||||
foreach (var type in _customBlocks.Values)
|
foreach (var type in _customBlocks.Values)
|
||||||
{
|
{
|
||||||
var attr = type.GetCustomAttribute<CustomBlockAttribute>();
|
var attr = type.GetCustomAttribute<CustomBlockAttribute>();
|
||||||
|
@ -153,5 +162,12 @@ namespace GamecraftModdingAPI.Blocks
|
||||||
Addressables.AddResourceLocator(res.Result);
|
Addressables.AddResourceLocator(res.Result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*internal static void OnBlockFactoryObtained(BlockEntityFactory factory)
|
||||||
|
{
|
||||||
|
var builders = (Dictionary<CubeCategory, IBlockBuilder>)
|
||||||
|
AccessTools.Field(factory.GetType(), "_blockBuilders").GetValue(factory);
|
||||||
|
builders.Add((CubeCategory) 1000, new BlockBuilder<StandardBlockEntityDescriptor>(Group));
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,12 +1,14 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using GamecraftModdingAPI.Blocks;
|
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
|
||||||
using RobocraftX;
|
using RobocraftX;
|
||||||
|
using RobocraftX.Schedulers;
|
||||||
using RobocraftX.Services;
|
using RobocraftX.Services;
|
||||||
using Svelto.Context;
|
using Svelto.Context;
|
||||||
|
using Svelto.Tasks.ExtraLean;
|
||||||
|
|
||||||
|
using GamecraftModdingAPI.Blocks;
|
||||||
using GamecraftModdingAPI.Utility;
|
using GamecraftModdingAPI.Utility;
|
||||||
using GamecraftModdingAPI.Events;
|
using GamecraftModdingAPI.Events;
|
||||||
using GamecraftModdingAPI.Tasks;
|
using GamecraftModdingAPI.Tasks;
|
||||||
|
@ -89,6 +91,7 @@ namespace GamecraftModdingAPI
|
||||||
AsyncUtils.Init();
|
AsyncUtils.Init();
|
||||||
GamecraftModdingAPI.App.Client.Init();
|
GamecraftModdingAPI.App.Client.Init();
|
||||||
GamecraftModdingAPI.App.Game.Init();
|
GamecraftModdingAPI.App.Game.Init();
|
||||||
|
CustomBlock.Prepare().RunOn(ExtraLean.UIScheduler);
|
||||||
Logging.MetaLog($"{currentAssembly.GetName().Name} v{currentAssembly.GetName().Version} initialized");
|
Logging.MetaLog($"{currentAssembly.GetName().Name} v{currentAssembly.GetName().Version} initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -369,7 +369,6 @@ namespace GamecraftModdingAPI.Tests
|
||||||
Log.Output("Submitted: " + Window.selected.submittedCode);
|
Log.Output("Submitted: " + Window.selected.submittedCode);
|
||||||
})
|
})
|
||||||
.Build();
|
.Build();
|
||||||
CustomBlock.Prep().RunOn(ExtraLean.UIScheduler);
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
CustomBlock.RegisterCustomBlock<TestBlock>();
|
CustomBlock.RegisterCustomBlock<TestBlock>();
|
||||||
|
|
Loading…
Reference in a new issue