Merge master into preview

This commit is contained in:
Norbi Peti 2020-09-18 17:10:01 +02:00
commit 53bdd27166
10 changed files with 28 additions and 38 deletions

View file

@ -10,7 +10,7 @@ using GamecraftModdingAPI.Utility;
namespace GamecraftModdingAPI.Blocks namespace GamecraftModdingAPI.Blocks
{ {
public class ConsoleBlock : Block public class ConsoleBlock : SignalingBlock
{ {
public ConsoleBlock(EGID id): base(id) public ConsoleBlock(EGID id): base(id)
{ {

View file

@ -9,7 +9,7 @@ using GamecraftModdingAPI.Utility;
namespace GamecraftModdingAPI.Blocks namespace GamecraftModdingAPI.Blocks
{ {
public class Motor : Block public class Motor : SignalingBlock
{ {
public Motor(EGID id) : base(id) public Motor(EGID id) : base(id)
{ {

View file

@ -14,7 +14,7 @@ using GamecraftModdingAPI.Utility;
namespace GamecraftModdingAPI.Blocks namespace GamecraftModdingAPI.Blocks
{ {
public class MusicBlock : Block public class MusicBlock : SignalingBlock
{ {
public MusicBlock(EGID id) : base(id) public MusicBlock(EGID id) : base(id)
{ {

View file

@ -9,7 +9,7 @@ using RobocraftX.Common;
namespace GamecraftModdingAPI.Blocks namespace GamecraftModdingAPI.Blocks
{ {
public class Piston : Block public class Piston : SignalingBlock
{ {
public Piston(EGID id) : base(id) public Piston(EGID id) : base(id)
{ {

View file

@ -9,7 +9,7 @@ using GamecraftModdingAPI.Utility;
namespace GamecraftModdingAPI.Blocks namespace GamecraftModdingAPI.Blocks
{ {
public class Servo : Block public class Servo : SignalingBlock
{ {
public Servo(EGID id) : base(id) public Servo(EGID id) : base(id)
{ {

View file

@ -10,7 +10,7 @@ using GamecraftModdingAPI.Utility;
namespace GamecraftModdingAPI.Blocks namespace GamecraftModdingAPI.Blocks
{ {
public class TextBlock : Block public class TextBlock : SignalingBlock
{ {
public TextBlock(EGID id) : base(id) public TextBlock(EGID id) : base(id)
{ {

View file

@ -11,7 +11,7 @@ using GamecraftModdingAPI.Utility;
namespace GamecraftModdingAPI.Blocks namespace GamecraftModdingAPI.Blocks
{ {
public class Timer : Block public class Timer : SignalingBlock
{ {
public Timer(EGID id) : base(id) public Timer(EGID id) : base(id)
{ {

View file

@ -31,7 +31,7 @@ namespace GamecraftModdingAPI.Blocks
public static Wire Connect(SignalingBlock start, byte startPort, SignalingBlock end, byte endPort) public static Wire Connect(SignalingBlock start, byte startPort, SignalingBlock end, byte endPort)
{ {
WireEntityStruct wire = signalEngine.CreateNewWire(start.Id, startPort, end.Id, endPort); WireEntityStruct wire = signalEngine.CreateNewWire(start.Id, startPort, end.Id, endPort);
return new Wire(wire); return new Wire(wire, start, end);
} }
/// <summary> /// <summary>
@ -173,15 +173,15 @@ namespace GamecraftModdingAPI.Blocks
this.startPort = wire.sourcePortUsage; this.startPort = wire.sourcePortUsage;
} }
internal Wire(WireEntityStruct wire) internal Wire(WireEntityStruct wire, SignalingBlock src, SignalingBlock dest)
{ {
this.wireEGID = wire.ID; this.wireEGID = wire.ID;
this.startBlockEGID = wire.sourceBlockEGID; this.startBlockEGID = wire.sourceBlockEGID;
this.endBlockEGID = wire.destinationBlockEGID; this.endBlockEGID = wire.destinationBlockEGID;
inputToOutput = false; inputToOutput = false;
endPortEGID = signalEngine.MatchBlockInputToPort(wire.destinationBlockEGID, wire.destinationPortUsage, out bool exists); endPortEGID = signalEngine.MatchBlockInputToPort(dest, wire.destinationPortUsage, out bool exists);
if (!exists) throw new WireInvalidException("Wire end port not found"); if (!exists) throw new WireInvalidException("Wire end port not found");
startPortEGID = signalEngine.MatchBlockOutputToPort(wire.sourceBlockEGID, wire.sourcePortUsage, out exists); startPortEGID = signalEngine.MatchBlockOutputToPort(src, wire.sourcePortUsage, out exists);
if (!exists) throw new WireInvalidException("Wire start port not found"); if (!exists) throw new WireInvalidException("Wire start port not found");
this.endPort = wire.destinationPortUsage; this.endPort = wire.destinationPortUsage;
this.startPort = wire.sourcePortUsage; this.startPort = wire.sourcePortUsage;

View file

@ -1,4 +1,6 @@
using System; using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using RobocraftX.Character; using RobocraftX.Character;
@ -10,12 +12,16 @@ using RobocraftX.Physics;
using RobocraftX.Blocks.Ghost; using RobocraftX.Blocks.Ghost;
using RobocraftX.Character.Camera; using RobocraftX.Character.Camera;
using RobocraftX.Character.Factories; using RobocraftX.Character.Factories;
using Gamecraft.GUI.HUDFeedbackBlocks;
using Svelto.ECS; using Svelto.ECS;
using Unity.Mathematics; using Unity.Mathematics;
using Unity.Physics; using Unity.Physics;
using UnityEngine; using UnityEngine;
using GamecraftModdingAPI.Engines; using GamecraftModdingAPI.Engines;
using HarmonyLib;
using RobocraftX.Common;
using Svelto.ECS.DataStructures;
namespace GamecraftModdingAPI.Players namespace GamecraftModdingAPI.Players
{ {
@ -356,15 +362,12 @@ namespace GamecraftModdingAPI.Players
public bool GetGameOverScreen(uint playerId) public bool GetGameOverScreen(uint playerId)
{ {
if (entitiesDB == null) return false; if (entitiesDB == null) return false;
ref var c = ref GetCharacterStruct<CharacterLivesEntityComponent>(playerId, out bool exists); ref HudActivatedBlocksEntityStruct habes = ref entitiesDB.QueryEntity<HudActivatedBlocksEntityStruct>(HUDFeedbackBlocksGUIExclusiveGroups.GameOverHudEgid);
if (exists) NativeDynamicArrayCast<EGID> nativeDynamicArrayCast = new NativeDynamicArrayCast<EGID>(habes.activatedBlocksOrdered);
{ return nativeDynamicArrayCast.count > 0;
return c.gameOverScreen;
}
return false;
} }
public bool IsDead(uint playerId) public bool IsDead(uint playerId)
{ {
if (entitiesDB == null) return true; if (entitiesDB == null) return true;
return entitiesDB.Exists<RigidBodyEntityStruct>(playerId, CharacterExclusiveGroups.DeadCharacters); return entitiesDB.Exists<RigidBodyEntityStruct>(playerId, CharacterExclusiveGroups.DeadCharacters);

View file

@ -22,33 +22,29 @@ using GamecraftModdingAPI.Players;
namespace GamecraftModdingAPI.Tests namespace GamecraftModdingAPI.Tests
{ {
#if DEBUG
// unused by design // unused by design
/// <summary> /// <summary>
/// Modding API implemented as a standalone IPA Plugin. /// Modding API implemented as a standalone IPA Plugin.
/// Ideally, GamecraftModdingAPI should be loaded by another mod; not itself /// Ideally, GamecraftModdingAPI should be loaded by another mod; not itself
/// </summary> /// </summary>
public class GamecraftModdingAPIPluginTest public class GamecraftModdingAPIPluginTest : IllusionPlugin.IEnhancedPlugin
#if DEBUG
: IllusionPlugin.IEnhancedPlugin
#endif
{ {
private static Harmony harmony { get; set; } private static Harmony harmony { get; set; }
public string[] Filter { get; } = new string[] { "Gamecraft", "GamecraftPreview" }; public override string Name { get; } = Assembly.GetExecutingAssembly().GetName().Name;
public string Name { get; } = Assembly.GetExecutingAssembly().GetName().Name; public override string Version { get; } = Assembly.GetExecutingAssembly().GetName().Version.ToString();
public string Version { get; } = Assembly.GetExecutingAssembly().GetName().Version.ToString();
public string HarmonyID { get; } = "org.git.exmods.modtainers.gamecraftmoddingapi"; public string HarmonyID { get; } = "org.git.exmods.modtainers.gamecraftmoddingapi";
public void OnApplicationQuit() public override void OnApplicationQuit()
{ {
GamecraftModdingAPI.Main.Shutdown(); GamecraftModdingAPI.Main.Shutdown();
} }
public void OnApplicationStart() public override void OnApplicationStart()
{ {
FileLog.Reset(); FileLog.Reset();
Harmony.DEBUG = true; Harmony.DEBUG = true;
@ -387,16 +383,6 @@ namespace GamecraftModdingAPI.Tests
} }
} }
public void OnFixedUpdate() { }
public void OnLateUpdate() { }
public void OnLevelWasInitialized(int level) { }
public void OnLevelWasLoaded(int level) { }
public void OnUpdate() { }
[HarmonyPatch] [HarmonyPatch]
public class MinimumSpecsPatch public class MinimumSpecsPatch
{ {
@ -411,4 +397,5 @@ namespace GamecraftModdingAPI.Tests
} }
} }
} }
#endif
} }