Added update logic, patch and engine fixes
This commit is contained in:
parent
425e3247d3
commit
04233dffa0
3 changed files with 54 additions and 15 deletions
|
@ -1,9 +1,11 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using Gamecraft.Blocks.ConsoleBlock;
|
||||||
using Harmony;
|
using Harmony;
|
||||||
using RobocraftX;
|
using RobocraftX;
|
||||||
using RobocraftX.GUI.CommandLine;
|
using RobocraftX.GUI.CommandLine;
|
||||||
using RobocraftX.Multiplayer;
|
using RobocraftX.Multiplayer;
|
||||||
|
using RobocraftX.StateSync;
|
||||||
using Svelto.Context;
|
using Svelto.Context;
|
||||||
using Svelto.ECS;
|
using Svelto.ECS;
|
||||||
using Unity.Entities;
|
using Unity.Entities;
|
||||||
|
@ -14,18 +16,24 @@ namespace GCDC
|
||||||
[HarmonyPatch]
|
[HarmonyPatch]
|
||||||
public class DiscordEngineInjectionPatch
|
public class DiscordEngineInjectionPatch
|
||||||
{
|
{
|
||||||
static void Postfix(UnityContext<FullGameCompositionRoot> contextHolder, EnginesRoot enginesRoot, World physicsWorld, Action reloadGame, MultiplayerInitParameters multiplayerParameters)
|
static void Postfix(EnginesRoot enginesRoot, ref StateSyncRegistrationHelper stateSyncReg, bool isAuthoritative)
|
||||||
{
|
{
|
||||||
enginesRoot.AddEngine(new TextBlockUpdateEngine());
|
if (isAuthoritative)
|
||||||
Debug.Log($"Added text block update engine");
|
{
|
||||||
|
stateSyncReg.AddEngine(new TextBlockUpdateEngine());
|
||||||
|
Debug.Log($"Added Discord text block update engine");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Debug.Log("Not authoritative, not adding Discord engine");
|
||||||
}
|
}
|
||||||
|
|
||||||
static MethodBase TargetMethod(HarmonyInstance instance)
|
static MethodBase TargetMethod(HarmonyInstance instance)
|
||||||
{
|
{
|
||||||
return _ComposeMethodInfo(CommandLineCompositionRoot.Compose<UnityContext<FullGameCompositionRoot>>);
|
return _ComposeMethodInfo(ConsoleBlockCompositionRoot.Compose);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static MethodInfo _ComposeMethodInfo(Action<UnityContext<FullGameCompositionRoot>, EnginesRoot, World, Action, MultiplayerInitParameters> a)
|
private delegate void ComposeAction(EnginesRoot er, ref StateSyncRegistrationHelper ssrh, bool isAuthoritative);
|
||||||
|
private static MethodInfo _ComposeMethodInfo(ComposeAction a)
|
||||||
{
|
{
|
||||||
return a.Method;
|
return a.Method;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
using IllusionPlugin;
|
using System.Reflection;
|
||||||
|
using Harmony;
|
||||||
|
using IllusionPlugin;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace GCDC
|
namespace GCDC
|
||||||
{
|
{
|
||||||
|
@ -6,35 +9,39 @@ namespace GCDC
|
||||||
{
|
{
|
||||||
public string Name { get; } = "GCDC";
|
public string Name { get; } = "GCDC";
|
||||||
public string Version { get; } = "v0.0.1";
|
public string Version { get; } = "v0.0.1";
|
||||||
|
public static HarmonyInstance harmony { get; protected set; }
|
||||||
|
public const string HarmonyID = "io.github.norbipeti.GCDC";
|
||||||
|
|
||||||
public void OnApplicationStart()
|
public void OnApplicationStart()
|
||||||
{
|
{
|
||||||
throw new System.NotImplementedException();
|
if (harmony == null)
|
||||||
|
{
|
||||||
|
harmony = HarmonyInstance.Create(HarmonyID);
|
||||||
|
harmony.PatchAll(Assembly.GetExecutingAssembly());
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log("GCDC loaded");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnApplicationQuit()
|
public void OnApplicationQuit()
|
||||||
{
|
{
|
||||||
throw new System.NotImplementedException();
|
harmony?.UnpatchAll(HarmonyID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnLevelWasLoaded(int level)
|
public void OnLevelWasLoaded(int level)
|
||||||
{
|
{
|
||||||
throw new System.NotImplementedException();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnLevelWasInitialized(int level)
|
public void OnLevelWasInitialized(int level)
|
||||||
{
|
{
|
||||||
throw new System.NotImplementedException();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnUpdate()
|
public void OnUpdate()
|
||||||
{
|
{
|
||||||
throw new System.NotImplementedException();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnFixedUpdate()
|
public void OnFixedUpdate()
|
||||||
{
|
{
|
||||||
throw new System.NotImplementedException();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,13 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using RobocraftX.Blocks.GUI;
|
||||||
|
using RobocraftX.Common;
|
||||||
using RobocraftX.Common.Input;
|
using RobocraftX.Common.Input;
|
||||||
using RobocraftX.Common.Utilities;
|
using RobocraftX.Common.Utilities;
|
||||||
|
using RobocraftX.SimulationModeState;
|
||||||
using RobocraftX.StateSync;
|
using RobocraftX.StateSync;
|
||||||
using Svelto.ECS;
|
using Svelto.ECS;
|
||||||
|
using Svelto.ECS.Experimental;
|
||||||
using Unity.Jobs;
|
using Unity.Jobs;
|
||||||
using uREPL;
|
using uREPL;
|
||||||
|
|
||||||
|
@ -14,12 +20,30 @@ namespace GCDC
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEntitiesDB entitiesDB { get; set; }
|
public IEntitiesDB entitiesDB { get; set; }
|
||||||
public JobHandle SimulatePhysicsStep(in float deltaTime, in PhysicsUtility utility, in PlayerInput[] playerInputs)
|
public string name { get; } = "GCDC-TextUpdate";
|
||||||
|
private volatile Queue<string> messages = new Queue<string>();
|
||||||
|
private volatile bool updatedTextBlock;
|
||||||
|
|
||||||
|
public JobHandle SimulatePhysicsStep(
|
||||||
|
in float deltaTime,
|
||||||
|
in PhysicsUtility utility,
|
||||||
|
in PlayerInput[] playerInputs) //Gamecraft.Blocks.ConsoleBlock.dll
|
||||||
{
|
{
|
||||||
//TODO
|
if (updatedTextBlock)
|
||||||
|
return new JobHandle();
|
||||||
|
var txt = messages.Count > 0 ? messages.Aggregate((current, msg) => current + "\n" + msg) : "<No messages yet>";
|
||||||
|
RuntimeCommands.Call("ChangeTextBlockCommand", "Discord", txt);
|
||||||
|
updatedTextBlock = true;
|
||||||
|
|
||||||
return new JobHandle();
|
return new JobHandle();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string name { get; } = "GCDC-TextUpdate";
|
public void AddMessage(string message)
|
||||||
|
{
|
||||||
|
messages.Enqueue(message);
|
||||||
|
if (messages.Count > 10)
|
||||||
|
messages.Dequeue();
|
||||||
|
updatedTextBlock = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue