diff --git a/Editor/Frontends/SyntaxRewriters/SyntaxUtils.cs b/Editor/Frontends/SyntaxRewriters/SyntaxUtils.cs index cf666e1..43ddc50 100644 --- a/Editor/Frontends/SyntaxRewriters/SyntaxUtils.cs +++ b/Editor/Frontends/SyntaxRewriters/SyntaxUtils.cs @@ -66,6 +66,10 @@ public static ArgumentListSyntax ArgumentList(params ExpressionSyntax[] argument return SyntaxFactory.ArgumentList(SyntaxFactory.SeparatedList(withCommas)); } public static TypeArgumentListSyntax TypeArgumentList(params TypeSyntax[] arguments) + { + return TypeArgumentList((IEnumerable)arguments); + } + public static TypeArgumentListSyntax TypeArgumentList(IEnumerable arguments) { var withCommas = CommaSeparated(arguments.Select(arg => (SyntaxNodeOrToken)arg)); diff --git a/Runtime/Chips/ChipBuilder.cs b/Runtime/Chips/ChipBuilder.cs index 212751f..487db0a 100644 --- a/Runtime/Chips/ChipBuilder.cs +++ b/Runtime/Chips/ChipBuilder.cs @@ -1,10 +1,9 @@ using RRCG; using RRCGGenerated; -using RRCGSource; -using System; -using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Runtime.CompilerServices; +using System; using UnityEngine; namespace RRCGBuild @@ -15,437 +14,93 @@ public class ChipBuilder : RRCGGenerated.ChipBuilderGen // Event Nodes // #region EventNodes - public static void EventReceiver(StringPort eventName) - { - EventReceiver(new EventReceiverData(eventName.AsData())); - } - - public static T0 EventReceiver(StringPort eventName) where T0 : AnyPort, new() - { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return new T0() { Port = node.Port(0, 1) }; - } - - public static (T0, T1) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) } - ); - } - public static (T0, T1, T2) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) } - ); - } - public static (T0, T1, T2, T3) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) } - ); - } - - public static (T0, T1, T2, T3, T4) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() + public static void EventReceiver(string eventName) { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) } - ); + EventReceiver(new EventReceiverData(new EventDefinitionData(eventName, Guid.Empty, null))); } - public static (T0, T1, T2, T3, T4, T5) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() + public static void EventReceiver(Guid eventId) { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) } - ); + EventReceiver(new EventReceiverData(new EventDefinitionData(null, eventId, null))); } - public static (T0, T1, T2, T3, T4, T5, T6) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() - where T6 : AnyPort, new() + public static T EventReceiver(string eventName) where T : new() { EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) }, - new T6() { Port = node.Port(0, 7) } - ); + return ReadEventReceiverData(); } - public static (T0, T1, T2, T3, T4, T5, T6, T7) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() - where T6 : AnyPort, new() - where T7 : AnyPort, new() + public static T EventReceiver(Guid eventId) where T : new() { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) }, - new T6() { Port = node.Port(0, 7) }, - new T7() { Port = node.Port(0, 8) } - ); + EventReceiver(eventId); + return ReadEventReceiverData(); } - public static (T0, T1, T2, T3, T4, T5, T6, T7, T8) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() - where T6 : AnyPort, new() - where T7 : AnyPort, new() - where T8 : AnyPort, new() + public static T EventReceiver(EventReceiverData receiverData) where T : new() { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) }, - new T6() { Port = node.Port(0, 7) }, - new T7() { Port = node.Port(0, 8) }, - new T8() { Port = node.Port(0, 9) } - ); + EventReceiver(receiverData); + return ReadEventReceiverData(); } - public static (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() - where T6 : AnyPort, new() - where T7 : AnyPort, new() - where T8 : AnyPort, new() - where T9 : AnyPort, new() + private static T ReadEventReceiverData() where T : new() { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; + Node node = Context.lastSpawnedNode; - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) }, - new T6() { Port = node.Port(0, 7) }, - new T7() { Port = node.Port(0, 8) }, - new T8() { Port = node.Port(0, 9) }, - new T9() { Port = node.Port(0, 10) } - ); - } - - public static (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() - where T6 : AnyPort, new() - where T7 : AnyPort, new() - where T8 : AnyPort, new() - where T9 : AnyPort, new() - where T10 : AnyPort, new() - { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) }, - new T6() { Port = node.Port(0, 7) }, - new T7() { Port = node.Port(0, 8) }, - new T8() { Port = node.Port(0, 9) }, - new T9() { Port = node.Port(0, 10) }, - new T10() { Port = node.Port(0, 11) } - ); - } - - public static (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() - where T6 : AnyPort, new() - where T7 : AnyPort, new() - where T8 : AnyPort, new() - where T9 : AnyPort, new() - where T10 : AnyPort, new() - where T11 : AnyPort, new() - { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) }, - new T6() { Port = node.Port(0, 7) }, - new T7() { Port = node.Port(0, 8) }, - new T8() { Port = node.Port(0, 9) }, - new T9() { Port = node.Port(0, 10) }, - new T10() { Port = node.Port(0, 11) }, - new T11() { Port = node.Port(0, 12) } - ); - } - - public static (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() - where T6 : AnyPort, new() - where T7 : AnyPort, new() - where T8 : AnyPort, new() - where T9 : AnyPort, new() - where T10 : AnyPort, new() - where T11 : AnyPort, new() - where T12 : AnyPort, new() - { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) }, - new T6() { Port = node.Port(0, 7) }, - new T7() { Port = node.Port(0, 8) }, - new T8() { Port = node.Port(0, 9) }, - new T9() { Port = node.Port(0, 10) }, - new T10() { Port = node.Port(0, 11) }, - new T11() { Port = node.Port(0, 12) }, - new T12() { Port = node.Port(0, 13) } - ); - } - - public static (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() - where T6 : AnyPort, new() - where T7 : AnyPort, new() - where T8 : AnyPort, new() - where T9 : AnyPort, new() - where T10 : AnyPort, new() - where T11 : AnyPort, new() - where T12 : AnyPort, new() - where T13 : AnyPort, new() - { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; - - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) }, - new T6() { Port = node.Port(0, 7) }, - new T7() { Port = node.Port(0, 8) }, - new T8() { Port = node.Port(0, 9) }, - new T9() { Port = node.Port(0, 10) }, - new T10() { Port = node.Port(0, 11) }, - new T11() { Port = node.Port(0, 12) }, - new T12() { Port = node.Port(0, 13) }, - new T13() { Port = node.Port(0, 14) } - ); - } - - public static (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() - where T6 : AnyPort, new() - where T7 : AnyPort, new() - where T8 : AnyPort, new() - where T9 : AnyPort, new() - where T10 : AnyPort, new() - where T11 : AnyPort, new() - where T12 : AnyPort, new() - where T13 : AnyPort, new() - where T14 : AnyPort, new() - { - EventReceiver(eventName); - var node = Context.lastSpawnedNode; + if (typeof(AnyPort).IsAssignableFrom(typeof(T))) + { + T instance = new T(); + if (instance is AnyPort anyPort) + anyPort.Port = node.Port(0, 1); + else + throw new ArgumentException($"Cast failed."); + return instance; + } + else if (typeof(ITuple).IsAssignableFrom(typeof(T))) + { + Type tupleType = typeof(T); + int tupleLength = tupleType.GenericTypeArguments.Length; + object[] tupleArgs = new object[tupleLength]; + for (int i = 0; i < tupleLength; i++) + { + Type portType = tupleType.GenericTypeArguments[i]; + if (Activator.CreateInstance(portType) is not AnyPort portInstance) + throw new ArgumentException($"Tuple argument {i} ({portType}) must be an AnyPort."); + portInstance.Port = node.Port(0, i + 1); + tupleArgs[i] = portInstance; + } - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) }, - new T6() { Port = node.Port(0, 7) }, - new T7() { Port = node.Port(0, 8) }, - new T8() { Port = node.Port(0, 9) }, - new T9() { Port = node.Port(0, 10) }, - new T10() { Port = node.Port(0, 11) }, - new T11() { Port = node.Port(0, 12) }, - new T12() { Port = node.Port(0, 13) }, - new T13() { Port = node.Port(0, 14) }, - new T14() { Port = node.Port(0, 15) } - ); + return (T)Activator.CreateInstance(tupleType, tupleArgs); + } + else + { + throw new ArgumentException($"T ({typeof(T)}) must be an AnyPort or tuple."); + } } - public static (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) EventReceiver(StringPort eventName) - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - where T4 : AnyPort, new() - where T5 : AnyPort, new() - where T6 : AnyPort, new() - where T7 : AnyPort, new() - where T8 : AnyPort, new() - where T9 : AnyPort, new() - where T10 : AnyPort, new() - where T11 : AnyPort, new() - where T12 : AnyPort, new() - where T13 : AnyPort, new() - where T14 : AnyPort, new() - where T15 : AnyPort, new() + internal static void EventSender(EventSenderData eventData, params AnyPort[] inputs) { - EventReceiver(eventName); + ChipBuilderGen.EventSender(eventData); var node = Context.lastSpawnedNode; - return ( - new T0() { Port = node.Port(0, 1) }, - new T1() { Port = node.Port(0, 2) }, - new T2() { Port = node.Port(0, 3) }, - new T3() { Port = node.Port(0, 4) }, - new T4() { Port = node.Port(0, 5) }, - new T5() { Port = node.Port(0, 6) }, - new T6() { Port = node.Port(0, 7) }, - new T7() { Port = node.Port(0, 8) }, - new T8() { Port = node.Port(0, 9) }, - new T9() { Port = node.Port(0, 10) }, - new T10() { Port = node.Port(0, 11) }, - new T11() { Port = node.Port(0, 12) }, - new T12() { Port = node.Port(0, 13) }, - new T13() { Port = node.Port(0, 14) }, - new T14() { Port = node.Port(0, 15) }, - new T15() { Port = node.Port(0, 16) } - ); + for (var i = 0; i < inputs.Length; i++) + node.ConnectInputPort(inputs[i], node.Port(0, 1 + i)); } - internal static void EventSender(StringPort eventName, EventTarget eventTarget, params AnyPort[] inputs) + internal static void EventSender(EventDefinitionData eventDefinition, EventTarget eventTarget, params AnyPort[] inputs) { - EventSender(new EventSenderData(eventName.AsData(), eventTarget)); - var node = Context.lastSpawnedNode; - - for (var i = 0; i < inputs.Length; i++) - node.ConnectInputPort(inputs[i], node.Port(0, 1 + i)); + EventSender(new EventSenderData(eventDefinition, eventTarget), inputs); } - internal static void EventDefinition(StringPort eventName, params (StringPort, Type)[] eventDefinition) + internal static EventDefinitionData EventDefinition(string eventName, Guid eventId, params (StringPort, Type)[] eventDefinition) { - EventDefinition(new EventDefinitionData( - eventName.AsData(), + EventDefinitionData data = new( + eventName, + eventId, eventDefinition.Select(t => (t.Item1.AsData(), t.Item2)).ToArray() - )); + ); + EventDefinition(data); + return data; } #endregion diff --git a/Runtime/Chips/ClassChips/EventDefinitionBuild.cs b/Runtime/Chips/ClassChips/EventDefinitionBuild.cs index 5f9a782..47ed61d 100644 --- a/Runtime/Chips/ClassChips/EventDefinitionBuild.cs +++ b/Runtime/Chips/ClassChips/EventDefinitionBuild.cs @@ -2,65 +2,64 @@ using System; using System.Collections.Generic; using System.Linq; +using UnityEngine.UIElements; namespace RRCGBuild { public abstract class BaseEvent { - protected string EventName; - protected (StringPort, Type)[] EventDefinition; + protected EventDefinitionData EventDefinitionData; protected BaseEvent() { } + protected string EventName => EventDefinitionData.EventName; + protected Guid EventId => EventDefinitionData.EventId; + protected IEnumerable EventPortTypes => EventDefinitionData.EventParameters.Select(x => x.Item2); + protected void InitNewEvent(string eventName, params (StringPort, Type)[] eventDefinition) { var sourceName = SanitizeUtils.SantizeCV2Name(SemanticStackUtils.GetNamedAssignmentName("Event")); - var eventNameBase = eventName ?? sourceName; - EventName = Context.current.GetUniqueId($"RRCG_{eventNameBase}"); - EventDefinition = eventDefinition; - - ChipBuilder.EventDefinition(EventName, eventDefinition); + EventDefinitionData = ChipBuilder.EventDefinition( + Context.current.GetUniqueId($"RRCG_{eventNameBase}"), + Guid.Empty, + eventDefinition + ); } - protected void InitExistingEvent(string eventName) + protected void InitExistingEvent(Guid eventId, string eventName) { - EventName = eventName; + EventDefinitionData = new EventDefinitionData(eventName, eventId, null); } - public void SendLocal(params AnyPort[] values) => ChipBuilder.EventSender(EventName, EventTarget.LOCAL, values); - public void SendOthers(params AnyPort[] values) => ChipBuilder.EventSender(EventName, EventTarget.OTHERS, values); - public void SendAll(params AnyPort[] values) => ChipBuilder.EventSender(EventName, EventTarget.ALL, values); - public void SendAuthority(params AnyPort[] values) => ChipBuilder.EventSender(EventName, EventTarget.AUTHORITY, values); - public void SendRoomAuthority(params AnyPort[] values) => ChipBuilder.EventSender(EventName, EventTarget.ROOM_AUTHORITY, values); - public void SendPlayer(PlayerPort player, params AnyPort[] values) => ChipBuilder.EventSender(EventName, EventTarget.PLAYER, new[] { player }.Concat(values).ToArray()); + public void SendLocal(params AnyPort[] values) => ChipBuilder.EventSender(new EventSenderData(EventDefinitionData, EventTarget.LOCAL), values); + public void SendOthers(params AnyPort[] values) => ChipBuilder.EventSender(new EventSenderData(EventDefinitionData, EventTarget.OTHERS), values); + public void SendAll(params AnyPort[] values) => ChipBuilder.EventSender(new EventSenderData(EventDefinitionData, EventTarget.ALL), values); + public void SendAuthority(params AnyPort[] values) => ChipBuilder.EventSender(new EventSenderData(EventDefinitionData, EventTarget.AUTHORITY), values); + public void SendRoomAuthority(params AnyPort[] values) => ChipBuilder.EventSender(new EventSenderData(EventDefinitionData, EventTarget.ROOM_AUTHORITY), values); + public void SendPlayer(PlayerPort player, params AnyPort[] values) => ChipBuilder.EventSender(new EventSenderData(EventDefinitionData, EventTarget.PLAYER), new[] { player }.Concat(values).ToArray()); } // Access to the generic interface. It is up to the user to make sure the types are correct. internal class DynamicEventDefinition : BaseEvent { - public DynamicEventDefinition(StringPort eventName, params (StringPort, Type)[] eventDefinition) => InitNewEvent(eventName.AsData(), eventDefinition); + public DynamicEventDefinition(string eventName, params (StringPort, Type)[] eventDefinition) => InitNewEvent(eventName, eventDefinition); public AnyPort[] Receiver() { - ChipBuilder.EventReceiver(EventName); - + ChipBuilder.EventReceiver(new EventReceiverData(EventDefinitionData)); var node = Context.lastSpawnedNode; - var ports = new List(); - for (var i = 0; i < EventDefinition.Length; i++) + int index = 0; + foreach (Type portType in EventPortTypes) { - var portType = EventDefinition[i].Item2; - var port = (AnyPort)Activator.CreateInstance(portType); - - port.Port = node.Port(0, 1 + i); - + port.Port = node.Port(0, 1 + index); ports.Add(port); + ++index; } - return ports.ToArray(); } } @@ -68,10 +67,9 @@ public AnyPort[] Receiver() public class EventDefinition : BaseEvent { public EventDefinition() => InitNewEvent(null); - public EventDefinition(StringPort eventName) => InitNewEvent(eventName.AsData()); + public EventDefinition(string eventName) => InitNewEvent(eventName); - // The bool param is only used to make the signature different from the other constructors - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal() => base.SendLocal(); public void SendOthers() => base.SendOthers(); @@ -80,13 +78,13 @@ public class EventDefinition : BaseEvent public void SendRoomAuthority() => base.SendRoomAuthority(); public void SendPlayer(PlayerPort player) => base.SendPlayer(player); - public void Receiver() => ChipBuilder.EventReceiver(EventName); + public void Receiver() => ChipBuilder.EventReceiver(new EventReceiverData(EventDefinitionData)); + public EventDefinition Receiver(AlternativeExec inlineGraph) { CircuitBuilder.InlineGraph(() => { Receiver(); inlineGraph(); }); return this; } - } public class EventDefinition : BaseEvent @@ -96,11 +94,11 @@ public EventDefinition(StringPort param0Name = null) => InitNewEvent( null, (param0Name ?? "value0", typeof(T0)) ); - public EventDefinition(StringPort eventName, StringPort param0Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0) => base.SendLocal(value0); public void SendOthers(T0 value0) => base.SendOthers(value0); @@ -109,7 +107,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name) => InitNewEv public void SendRoomAuthority(T0 value0) => base.SendRoomAuthority(value0); public void SendPlayer(PlayerPort player, T0 value0) => base.SendPlayer(player, value0); - public T0 Receiver() => ChipBuilder.EventReceiver(EventName); + public T0 Receiver() => ChipBuilder.EventReceiver(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -126,12 +124,12 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1) => base.SendLocal(value0, value1); public void SendOthers(T0 value0, T1 value1) => base.SendOthers(value0, value1); @@ -140,7 +138,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1) => base.SendRoomAuthority(value0, value1); public void SendPlayer(PlayerPort player, T0 value0, T1 value1) => base.SendPlayer(player, value0, value1); - public (T0, T1) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1) Receiver() => ChipBuilder.EventReceiver<(T0, T1)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -159,13 +157,13 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2) => base.SendLocal(value0, value1, value2); public void SendOthers(T0 value0, T1 value1, T2 value2) => base.SendOthers(value0, value1, value2); @@ -174,7 +172,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2) => base.SendRoomAuthority(value0, value1, value2); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2) => base.SendPlayer(player, value0, value1, value2); - public (T0, T1, T2) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -195,14 +193,14 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param2Name ?? "value2", typeof(T2)), (param3Name ?? "value3", typeof(T3)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), (param3Name ?? "value3", typeof(T3)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3) => base.SendLocal(value0, value1, value2, value3); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3) => base.SendOthers(value0, value1, value2, value3); @@ -211,7 +209,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3) => base.SendRoomAuthority(value0, value1, value2, value3); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3) => base.SendPlayer(player, value0, value1, value2, value3); - public (T0, T1, T2, T3) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -234,15 +232,15 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param3Name ?? "value3", typeof(T3)), (param4Name ?? "value4", typeof(T4)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), (param3Name ?? "value3", typeof(T3)), (param4Name ?? "value4", typeof(T4)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4) => base.SendLocal(value0, value1, value2, value3, value4); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4) => base.SendOthers(value0, value1, value2, value3, value4); @@ -251,7 +249,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4) => base.SendRoomAuthority(value0, value1, value2, value3, value4); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4) => base.SendPlayer(player, value0, value1, value2, value3, value4); - public (T0, T1, T2, T3, T4) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -276,8 +274,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param4Name ?? "value4", typeof(T4)), (param5Name ?? "value5", typeof(T5)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -285,7 +283,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param4Name ?? "value4", typeof(T4)), (param5Name ?? "value5", typeof(T5)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5) => base.SendLocal(value0, value1, value2, value3, value4, value5); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5) => base.SendOthers(value0, value1, value2, value3, value4, value5); @@ -294,7 +292,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5); - public (T0, T1, T2, T3, T4, T5) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -321,8 +319,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param5Name ?? "value5", typeof(T5)), (param6Name ?? "value6", typeof(T6)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -331,7 +329,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param5Name ?? "value5", typeof(T5)), (param6Name ?? "value6", typeof(T6)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6) => base.SendLocal(value0, value1, value2, value3, value4, value5, value6); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6) => base.SendOthers(value0, value1, value2, value3, value4, value5, value6); @@ -340,7 +338,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5, value6); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5, value6); - public (T0, T1, T2, T3, T4, T5, T6) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5, T6) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5, T6)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5, T6)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -369,8 +367,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param6Name ?? "value6", typeof(T6)), (param7Name ?? "value7", typeof(T7)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -380,7 +378,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param6Name ?? "value6", typeof(T6)), (param7Name ?? "value7", typeof(T7)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7) => base.SendLocal(value0, value1, value2, value3, value4, value5, value6, value7); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7) => base.SendOthers(value0, value1, value2, value3, value4, value5, value6, value7); @@ -389,7 +387,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5, value6, value7); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5, value6, value7); - public (T0, T1, T2, T3, T4, T5, T6, T7) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5, T6, T7) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5, T6, T7)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5, T6, T7)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -420,8 +418,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param7Name ?? "value7", typeof(T7)), (param8Name ?? "value8", typeof(T8)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -432,7 +430,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param7Name ?? "value7", typeof(T7)), (param8Name ?? "value8", typeof(T8)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8) => base.SendLocal(value0, value1, value2, value3, value4, value5, value6, value7, value8); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8) => base.SendOthers(value0, value1, value2, value3, value4, value5, value6, value7, value8); @@ -441,7 +439,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5, value6, value7, value8); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5, value6, value7, value8); - public (T0, T1, T2, T3, T4, T5, T6, T7, T8) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5, T6, T7, T8) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5, T6, T7, T8)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5, T6, T7, T8)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -474,8 +472,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param8Name ?? "value8", typeof(T8)), (param9Name ?? "value9", typeof(T9)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -487,7 +485,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param8Name ?? "value8", typeof(T8)), (param9Name ?? "value9", typeof(T9)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9) => base.SendLocal(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9) => base.SendOthers(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9); @@ -496,7 +494,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5, value6, value7, value8, value9); - public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -531,8 +529,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param9Name ?? "value9", typeof(T9)), (param10Name ?? "value10", typeof(T10)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -545,7 +543,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param9Name ?? "value9", typeof(T9)), (param10Name ?? "value10", typeof(T10)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10) => base.SendLocal(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10) => base.SendOthers(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10); @@ -554,7 +552,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10); - public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -591,8 +589,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param10Name ?? "value10", typeof(T10)), (param11Name ?? "value11", typeof(T11)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name, StringPort param11Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name, StringPort param11Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -606,7 +604,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param10Name ?? "value10", typeof(T10)), (param11Name ?? "value11", typeof(T11)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11) => base.SendLocal(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11) => base.SendOthers(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11); @@ -615,7 +613,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11); - public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -654,8 +652,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param11Name ?? "value11", typeof(T11)), (param12Name ?? "value12", typeof(T12)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name, StringPort param11Name, StringPort param12Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name, StringPort param11Name, StringPort param12Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -670,7 +668,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param11Name ?? "value11", typeof(T11)), (param12Name ?? "value12", typeof(T12)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12) => base.SendLocal(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12) => base.SendOthers(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12); @@ -679,7 +677,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12); - public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -720,8 +718,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param12Name ?? "value12", typeof(T12)), (param13Name ?? "value13", typeof(T13)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name, StringPort param11Name, StringPort param12Name, StringPort param13Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name, StringPort param11Name, StringPort param12Name, StringPort param13Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -737,7 +735,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param12Name ?? "value12", typeof(T12)), (param13Name ?? "value13", typeof(T13)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13) => base.SendLocal(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13) => base.SendOthers(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13); @@ -746,7 +744,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13); - public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -789,8 +787,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param13Name ?? "value13", typeof(T13)), (param14Name ?? "value14", typeof(T14)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name, StringPort param11Name, StringPort param12Name, StringPort param13Name, StringPort param14Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name, StringPort param11Name, StringPort param12Name, StringPort param13Name, StringPort param14Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -807,7 +805,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param13Name ?? "value13", typeof(T13)), (param14Name ?? "value14", typeof(T14)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13, T14 value14) => base.SendLocal(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13, T14 value14) => base.SendOthers(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14); @@ -816,7 +814,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13, T14 value14) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13, T14 value14) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14); - public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); @@ -861,8 +859,8 @@ public EventDefinition(StringPort param0Name = null, StringPort param1Name = nul (param14Name ?? "value14", typeof(T14)), (param15Name ?? "value15", typeof(T15)) ); - public EventDefinition(StringPort eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name, StringPort param11Name, StringPort param12Name, StringPort param13Name, StringPort param14Name, StringPort param15Name) => InitNewEvent( - eventName.AsData(), + public EventDefinition(string eventName, StringPort param0Name, StringPort param1Name, StringPort param2Name, StringPort param3Name, StringPort param4Name, StringPort param5Name, StringPort param6Name, StringPort param7Name, StringPort param8Name, StringPort param9Name, StringPort param10Name, StringPort param11Name, StringPort param12Name, StringPort param13Name, StringPort param14Name, StringPort param15Name) => InitNewEvent( + eventName, (param0Name ?? "value0", typeof(T0)), (param1Name ?? "value1", typeof(T1)), (param2Name ?? "value2", typeof(T2)), @@ -880,7 +878,7 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p (param14Name ?? "value14", typeof(T14)), (param15Name ?? "value15", typeof(T15)) ); - internal EventDefinition(bool _, string existingEvent) => InitExistingEvent(existingEvent); + internal EventDefinition(Guid existingEventId, string existingEvent) => InitExistingEvent(existingEventId, existingEvent); public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13, T14 value14, T15 value15) => base.SendLocal(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14, value15); public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13, T14 value14, T15 value15) => base.SendOthers(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14, value15); @@ -889,202 +887,11 @@ public EventDefinition(StringPort eventName, StringPort param0Name, StringPort p public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13, T14 value14, T15 value15) => base.SendRoomAuthority(value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14, value15); public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8, T9 value9, T10 value10, T11 value11, T12 value12, T13 value13, T14 value14, T15 value15) => base.SendPlayer(player, value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14, value15); - public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) Receiver() => ChipBuilder.EventReceiver(EventName); + public (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) Receiver() => ChipBuilder.EventReceiver<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)>(new EventReceiverData(EventDefinitionData)); public EventDefinition Receiver(AlternativeExec<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)> inlineGraph) { CircuitBuilder.InlineGraph(() => inlineGraph(Receiver())); return this; } } - - // - // Old classes - // - - [Obsolete("Use new EventDefinition() or ExistingEvent() instead")] - public class EventHelper - { - private StringPort eventName; - public EventHelper(StringPort eventName) - { - this.eventName = eventName; - } - public EventHelper Definition() - { - ChipBuilder.EventDefinition(eventName); - return this; - } - - public void Sender() => SendLocal(); - - public void SendLocal() => ChipBuilder.EventSender(eventName, EventTarget.LOCAL); - public void SendOthers() => ChipBuilder.EventSender(eventName, EventTarget.OTHERS); - public void SendAll() => ChipBuilder.EventSender(eventName, EventTarget.ALL); - public void SendAuthority() => ChipBuilder.EventSender(eventName, EventTarget.AUTHORITY); - public void SendRoomAuthority() => ChipBuilder.EventSender(eventName, EventTarget.ROOM_AUTHORITY); - public void SendPlayer(PlayerPort player) => ChipBuilder.EventSender(eventName, EventTarget.PLAYER, player); - - public void Receiver() => ChipBuilder.EventReceiver(eventName); - } - - [Obsolete("Use new EventDefinition() or ExistingEvent() instead")] - public class EventHelper where T0 : AnyPort, new() - { - private StringPort eventName; - private StringPort value0; - public EventHelper(StringPort eventName, StringPort value0 = null) - { - this.eventName = eventName; - this.value0 = value0 ?? "value0"; - } - - public EventHelper Definition() - { - ChipBuilder.EventDefinition(eventName, (value0, typeof(T0))); - return this; - } - public void Sender(T0 value0) => SendLocal(value0); - - public void SendLocal(T0 value0) => ChipBuilder.EventSender(eventName, EventTarget.LOCAL, value0); - public void SendOthers(T0 value0) => ChipBuilder.EventSender(eventName, EventTarget.OTHERS, value0); - public void SendAll(T0 value0) => ChipBuilder.EventSender(eventName, EventTarget.ALL, value0); - public void SendAuthority(T0 value0) => ChipBuilder.EventSender(eventName, EventTarget.AUTHORITY, value0); - public void SendRoomAuthority(T0 value0) => ChipBuilder.EventSender(eventName, EventTarget.ROOM_AUTHORITY, value0); - public void SendPlayer(PlayerPort player, T0 value0) => ChipBuilder.EventSender(eventName, EventTarget.PLAYER, player, value0); - - public T0 Receiver() => ChipBuilder.EventReceiver(eventName); - } - - [Obsolete("Use new EventDefinition() or ExistingEvent() instead")] - public class EventHelper - where T0 : AnyPort, new() - where T1 : AnyPort, new() - { - private StringPort eventName; - private StringPort value0; - private StringPort value1; - public EventHelper( - StringPort eventName, - StringPort value0 = null, - StringPort value1 = null - ) - { - this.eventName = eventName; - this.value0 = value0 ?? "value0"; - this.value1 = value1 ?? "value1"; - } - public EventHelper Definition() - { - ChipBuilder.EventDefinition( - eventName, - (value0, typeof(T0)), - (value1, typeof(T1)) - ); - return this; - } - public void Sender(T0 value0, T1 value1) => SendLocal(value0, value1); - - public void SendLocal(T0 value0, T1 value1) => ChipBuilder.EventSender(eventName, EventTarget.LOCAL, value0, value1); - public void SendOthers(T0 value0, T1 value1) => ChipBuilder.EventSender(eventName, EventTarget.OTHERS, value0, value1); - public void SendAll(T0 value0, T1 value1) => ChipBuilder.EventSender(eventName, EventTarget.ALL, value0, value1); - public void SendAuthority(T0 value0, T1 value1) => ChipBuilder.EventSender(eventName, EventTarget.AUTHORITY, value0, value1); - public void SendRoomAuthority(T0 value0, T1 value1) => ChipBuilder.EventSender(eventName, EventTarget.ROOM_AUTHORITY, value0, value1); - public void SendPlayer(PlayerPort player, T0 value0, T1 value1) => ChipBuilder.EventSender(eventName, EventTarget.PLAYER, player, value0, value1); - - public (T0, T1) Receiver() => ChipBuilder.EventReceiver(eventName); - } - - [Obsolete("Use new EventDefinition() or ExistingEvent() instead")] - public class EventHelper - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - { - private StringPort eventName; - private StringPort value0; - private StringPort value1; - private StringPort value2; - public EventHelper( - StringPort eventName, - StringPort value0 = null, - StringPort value1 = null, - StringPort value2 = null - ) - { - this.eventName = eventName; - this.value0 = value0 ?? "value0"; - this.value1 = value1 ?? "value1"; - this.value2 = value2 ?? "value2"; - } - public EventHelper Definition() - { - ChipBuilder.EventDefinition( - eventName, - (value0, typeof(T0)), - (value1, typeof(T1)), - (value2, typeof(T2)) - ); - return this; - } - public void Sender(T0 value0, T1 value1, T2 value2) => SendLocal(value0, value1, value2); - - public void SendLocal(T0 value0, T1 value1, T2 value2) => ChipBuilder.EventSender(eventName, EventTarget.LOCAL, value0, value1, value2); - public void SendOthers(T0 value0, T1 value1, T2 value2) => ChipBuilder.EventSender(eventName, EventTarget.OTHERS, value0, value1, value2); - public void SendAll(T0 value0, T1 value1, T2 value2) => ChipBuilder.EventSender(eventName, EventTarget.ALL, value0, value1, value2); - public void SendAuthority(T0 value0, T1 value1, T2 value2) => ChipBuilder.EventSender(eventName, EventTarget.AUTHORITY, value0, value1, value2); - public void SendRoomAuthority(T0 value0, T1 value1, T2 value2) => ChipBuilder.EventSender(eventName, EventTarget.ROOM_AUTHORITY, value0, value1, value2); - public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2) => ChipBuilder.EventSender(eventName, EventTarget.PLAYER, player, value0, value1, value2); - - public (T0, T1, T2) Receiver() => ChipBuilder.EventReceiver(eventName); - } - - [Obsolete("Use new EventDefinition() or ExistingEvent() instead")] - public class EventHelper - where T0 : AnyPort, new() - where T1 : AnyPort, new() - where T2 : AnyPort, new() - where T3 : AnyPort, new() - { - private StringPort eventName; - private StringPort value0; - private StringPort value1; - private StringPort value2; - private StringPort value3; - public EventHelper( - StringPort eventName, - StringPort value0 = null, - StringPort value1 = null, - StringPort value2 = null, - StringPort value3 = null - ) - { - this.eventName = eventName; - this.value0 = value0 ?? "value0"; - this.value1 = value1 ?? "value1"; - this.value2 = value2 ?? "value2"; - this.value3 = value3 ?? "value3"; - } - public EventHelper Definition() - { - ChipBuilder.EventDefinition( - eventName, - (value0, typeof(T0)), - (value1, typeof(T1)), - (value2, typeof(T2)), - (value3, typeof(T3)) - ); - return this; - } - public void Sender(T0 value0, T1 value1, T2 value2, T3 value3) => SendLocal(value0, value1, value2, value3); - - public void SendLocal(T0 value0, T1 value1, T2 value2, T3 value3) => ChipBuilder.EventSender(eventName, EventTarget.LOCAL, value0, value1, value2, value3); - public void SendOthers(T0 value0, T1 value1, T2 value2, T3 value3) => ChipBuilder.EventSender(eventName, EventTarget.OTHERS, value0, value1, value2, value3); - public void SendAll(T0 value0, T1 value1, T2 value2, T3 value3) => ChipBuilder.EventSender(eventName, EventTarget.ALL, value0, value1, value2, value3); - public void SendAuthority(T0 value0, T1 value1, T2 value2, T3 value3) => ChipBuilder.EventSender(eventName, EventTarget.AUTHORITY, value0, value1, value2, value3); - public void SendRoomAuthority(T0 value0, T1 value1, T2 value2, T3 value3) => ChipBuilder.EventSender(eventName, EventTarget.ROOM_AUTHORITY, value0, value1, value2, value3); - public void SendPlayer(PlayerPort player, T0 value0, T1 value1, T2 value2, T3 value3) => ChipBuilder.EventSender(eventName, EventTarget.PLAYER, player, value0, value1, value2, value3); - - public (T0, T1, T2, T3) Receiver() => ChipBuilder.EventReceiver(eventName); - } - } diff --git a/Runtime/Chips/ClassChips/VariableBuild.cs b/Runtime/Chips/ClassChips/VariableBuild.cs index aca59eb..7f37032 100644 --- a/Runtime/Chips/ClassChips/VariableBuild.cs +++ b/Runtime/Chips/ClassChips/VariableBuild.cs @@ -7,6 +7,7 @@ namespace RRCGBuild { public enum VariableKind { + None = -1, Local, Synced, Cloud diff --git a/Runtime/CircuitDescriptor/CircuitBuilder.cs b/Runtime/CircuitDescriptor/CircuitBuilder.cs index 024f6b5..1c726a8 100644 --- a/Runtime/CircuitDescriptor/CircuitBuilder.cs +++ b/Runtime/CircuitDescriptor/CircuitBuilder.cs @@ -6,7 +6,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using UnityEngine; -using DeclaredVariable = RRCGBuild.AccessibilityScope.DeclaredVariable; using PromotedVariable = RRCGBuild.ConditionalContext.PromotedVariable; namespace RRCGBuild @@ -299,51 +298,54 @@ public static void ExistingExecOutput(StringPort portName) { } - public static void StudioEventReceiver(string eventName) + public static void StudioEventReceiver(string eventName, Guid eventId = default) { - CircuitBuilder.Singleton("StudioEventReceiver_" + eventName, () => EventDefinition(eventName)); - EventReceiver(eventName); + CircuitBuilder.Singleton("StudioEventReceiver_" + eventName, () => EventDefinition(eventName, eventId)); + if (eventId == Guid.Empty) + EventReceiver(eventName); + else + EventReceiver(eventId); } /// /// Returns an Instance of the Event class for an already exising Event in the room /// - public static EventDefinition ExistingEvent(string eventName) + public static EventDefinition ExistingEvent(string eventName, Guid eventId) { - return new EventDefinition(true, eventName); + return new EventDefinition(eventId, eventName); } /// /// Returns an Instance of the Event class for an already exising Event in the room. /// With one Event parameter. /// - public static EventDefinition ExistingEvent(string eventName) + public static EventDefinition ExistingEvent(string eventName, Guid eventId) where T0 : AnyPort, new() { - return new EventDefinition(true, eventName); + return new EventDefinition(eventId, eventName); } /// /// Returns an Instance of the Event class for an already exising Event in the room. /// With two Event parameter. /// - public static EventDefinition ExistingEvent(string eventName) + public static EventDefinition ExistingEvent(string eventName, Guid eventId) where T0 : AnyPort, new() where T1 : AnyPort, new() { - return new EventDefinition(true, eventName); + return new EventDefinition(eventId, eventName); } /// /// Returns an Instance of the Event class for an already exising Event in the room. /// With three Event parameter. /// - public static EventDefinition ExistingEvent(string eventName) + public static EventDefinition ExistingEvent(string eventName, Guid eventId) where T0 : AnyPort, new() where T1 : AnyPort, new() where T2 : AnyPort, new() { - return new EventDefinition(true, eventName); + return new EventDefinition(eventId, eventName); } /// diff --git a/Runtime/Events.meta b/Runtime/Events.meta new file mode 100644 index 0000000..84e1c89 --- /dev/null +++ b/Runtime/Events.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ec3c442858d8a546a51d5a6e40d9f23 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Events/Generated.meta b/Runtime/Events/Generated.meta new file mode 100644 index 0000000..7d601f0 --- /dev/null +++ b/Runtime/Events/Generated.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cffd55fa7d942dc40be118bf4536f21e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Events/Generated/RoomEvent3.cs b/Runtime/Events/Generated/RoomEvent3.cs new file mode 100644 index 0000000..17f9b77 --- /dev/null +++ b/Runtime/Events/Generated/RoomEvent3.cs @@ -0,0 +1,107 @@ +using RRCGSource; +using UnityEngine; +using System; + +namespace RRCGSource +{ + public class RoomEvent3 + { + /// + /// Consumable Purchased + /// + public static void ConsumablePurchased(AlternativeExec<(Consumable consumable, int quantity)> onConsumablePurchased) + { + } + + /// + /// Consumable Used + /// + public static void ConsumableUsed(AlternativeExec onConsumableUsed) + { + } + + /// + /// DEPRECATED Local Player Spawned + /// + public static void DEPRECATEDLocalPlayerSpawned(AlternativeExec onDEPRECATEDLocalPlayerSpawned) + { + } + + /// + /// DEPRECATED Player Left + /// + public static void DEPRECATEDPlayerLeft(AlternativeExec onDEPRECATEDPlayerLeft) + { + } + + /// + /// Level Reached + /// + public static void LevelReached(AlternativeExec onLevelReached) + { + } + + /// + /// Player Joined + /// + public static void PlayerJoined(AlternativeExec onPlayerJoined) + { + } + + /// + /// Player Leaving + /// + public static void PlayerLeaving(AlternativeExec onPlayerLeaving) + { + } + + /// + /// Player Left + /// + public static void PlayerLeft(AlternativeExec onPlayerLeft) + { + } + + /// + /// Room Authority Changed + /// + public static void RoomAuthorityChanged(AlternativeExec onRoomAuthorityChanged) + { + } + + /// + /// Room Key Purchased + /// + public static void RoomKeyPurchased(AlternativeExec onRoomKeyPurchased) + { + } + + /// + /// Room Loaded + /// + public static void RoomLoaded(AlternativeExec onRoomLoaded) + { + } + + /// + /// Room Reset + /// + public static void RoomReset(AlternativeExec onRoomReset) + { + } + + /// + /// Test Event + /// + public static void TestEvent(AlternativeExec onTestEvent) + { + } + + /// + /// Update 30Hz + /// + public static void Update30Hz(AlternativeExec onUpdate30Hz) + { + } + } +} \ No newline at end of file diff --git a/Runtime/Events/Generated/RoomEvent3.cs.meta b/Runtime/Events/Generated/RoomEvent3.cs.meta new file mode 100644 index 0000000..ec6973d --- /dev/null +++ b/Runtime/Events/Generated/RoomEvent3.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b8cd892e3d2059d4f8374662e37b817a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Events/Generated/RoomEvent3Build.cs b/Runtime/Events/Generated/RoomEvent3Build.cs new file mode 100644 index 0000000..bf651d5 --- /dev/null +++ b/Runtime/Events/Generated/RoomEvent3Build.cs @@ -0,0 +1,152 @@ +using RRCGSource; +using UnityEngine; +using System; + +namespace RRCGBuild +{ + public class RoomEvent3 + { + public static void ConsumablePurchased(AlternativeExec<(ConsumablePort consumable, IntPort quantity)> onConsumablePurchased) + { + CircuitBuilder.InlineGraph(() => + { + onConsumablePurchased(ChipBuilder.EventReceiver<(ConsumablePort consumable, IntPort quantity)>(Guid.ParseExact("b5678272-adbe-4e59-a833-bd156fd8f7fa", "D"))); + } + + ); + } + + public static void ConsumableUsed(AlternativeExec onConsumableUsed) + { + CircuitBuilder.InlineGraph(() => + { + onConsumableUsed(ChipBuilder.EventReceiver(Guid.ParseExact("304464c2-e4ec-408c-9b6e-26788d9b0526", "D"))); + } + + ); + } + + public static void DEPRECATEDLocalPlayerSpawned(AlternativeExec onDEPRECATEDLocalPlayerSpawned) + { + CircuitBuilder.InlineGraph(() => + { + ChipBuilder.EventReceiver(Guid.ParseExact("3c0c12fe-d760-48a3-b44e-b96850f82a4a", "D")); + onDEPRECATEDLocalPlayerSpawned(); + } + + ); + } + + public static void DEPRECATEDPlayerLeft(AlternativeExec onDEPRECATEDPlayerLeft) + { + CircuitBuilder.InlineGraph(() => + { + onDEPRECATEDPlayerLeft(ChipBuilder.EventReceiver(Guid.ParseExact("f52effba-2c1b-4f0b-a661-7079b45710ff", "D"))); + } + + ); + } + + public static void LevelReached(AlternativeExec onLevelReached) + { + CircuitBuilder.InlineGraph(() => + { + onLevelReached(ChipBuilder.EventReceiver(Guid.ParseExact("456a88e0-ed1d-4928-8af3-cb566ce19488", "D"))); + } + + ); + } + + public static void PlayerJoined(AlternativeExec onPlayerJoined) + { + CircuitBuilder.InlineGraph(() => + { + onPlayerJoined(ChipBuilder.EventReceiver(Guid.ParseExact("a68a4b00-adf5-4aef-801a-fa6264771a9f", "D"))); + } + + ); + } + + public static void PlayerLeaving(AlternativeExec onPlayerLeaving) + { + CircuitBuilder.InlineGraph(() => + { + onPlayerLeaving(ChipBuilder.EventReceiver(Guid.ParseExact("e8a19063-e8a2-40b0-a955-b0a23712aefa", "D"))); + } + + ); + } + + public static void PlayerLeft(AlternativeExec onPlayerLeft) + { + CircuitBuilder.InlineGraph(() => + { + onPlayerLeft(ChipBuilder.EventReceiver(Guid.ParseExact("dd292b5d-5218-4d4a-abf4-aa9dbe283e50", "D"))); + } + + ); + } + + public static void RoomAuthorityChanged(AlternativeExec onRoomAuthorityChanged) + { + CircuitBuilder.InlineGraph(() => + { + onRoomAuthorityChanged(ChipBuilder.EventReceiver(Guid.ParseExact("dc968273-75aa-455e-9aa4-58f4e9548e62", "D"))); + } + + ); + } + + public static void RoomKeyPurchased(AlternativeExec onRoomKeyPurchased) + { + CircuitBuilder.InlineGraph(() => + { + onRoomKeyPurchased(ChipBuilder.EventReceiver(Guid.ParseExact("a6c9db82-c995-41f4-9e9e-2fa6241a21bf", "D"))); + } + + ); + } + + public static void RoomLoaded(AlternativeExec onRoomLoaded) + { + CircuitBuilder.InlineGraph(() => + { + ChipBuilder.EventReceiver(Guid.ParseExact("5efce997-30d2-431f-b156-c4ebda8fb1ad", "D")); + onRoomLoaded(); + } + + ); + } + + public static void RoomReset(AlternativeExec onRoomReset) + { + CircuitBuilder.InlineGraph(() => + { + ChipBuilder.EventReceiver(Guid.ParseExact("ba20b726-fbc4-400b-b6fd-f88804063378", "D")); + onRoomReset(); + } + + ); + } + + public static void TestEvent(AlternativeExec onTestEvent) + { + CircuitBuilder.InlineGraph(() => + { + onTestEvent(ChipBuilder.EventReceiver(Guid.ParseExact("888ab607-ac44-422e-b3d7-94a219450484", "D"))); + } + + ); + } + + public static void Update30Hz(AlternativeExec onUpdate30Hz) + { + CircuitBuilder.InlineGraph(() => + { + onUpdate30Hz(ChipBuilder.EventReceiver(Guid.ParseExact("1ac8f2f7-ca6e-4530-b19a-1b9a8de3954d", "D"))); + } + + ); + } + } +} \ No newline at end of file diff --git a/Runtime/Events/Generated/RoomEvent3Build.cs.meta b/Runtime/Events/Generated/RoomEvent3Build.cs.meta new file mode 100644 index 0000000..d05eabe --- /dev/null +++ b/Runtime/Events/Generated/RoomEvent3Build.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c5728c23cade1b141aa1db2e54d150d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Types/Configuration.cs b/Runtime/Types/Configuration.cs index 1ee4b18..1eca45f 100644 --- a/Runtime/Types/Configuration.cs +++ b/Runtime/Types/Configuration.cs @@ -96,19 +96,38 @@ public record RoomKeyData(Guid Id); public record RoomCurrencyData(Guid Id); public record RoomConsumableData(Guid Id); - public record EventDefinitionData( - string EventName, - (string, Type)[] EventDefinition - ); + public record EventDefinitionData + { + public string EventName { get; set; } // set is only used by the obfuscator + public Guid EventId { get; set; } + + public (string, Type)[] EventParameters { get; init; } + + public EventDefinitionData(string name, Guid id, (string, Type)[] parameters) + { + if (string.IsNullOrWhiteSpace(name) && (id == Guid.Empty)) + throw new ArgumentException("Event name and ID cannot be empty at the same time."); + EventName = name; + EventId = id; + EventParameters = parameters; + } + } + + public record EventData(EventDefinitionData EventDefinition) + { + public string EventName => EventDefinition.EventName; + public Guid EventId => EventDefinition.EventId; + public (string, Type)[] EventParameters => EventDefinition.EventParameters; + } public record EventReceiverData( - string EventName - ); + EventDefinitionData EventDefinition + ) : EventData(EventDefinition); public record EventSenderData( - string EventName, + EventDefinitionData EventDefinition, EventTarget EventTarget - ); + ) : EventData(EventDefinition); public record RaycastData( bool IgnorePlayers = false, @@ -122,10 +141,17 @@ public record VariableData( object HomeValue ); + // Couldn't come up with a descriptive name for this one. + // This one is for Data Table Get Row/Column count. + // It refers to a specific Data Table, but not to a column. + public record DataTableData( + string DataTableName + ); + public record DataTableColumnData( string DataTableName, string ColumnName - ); + ) : DataTableData(DataTableName); public record FogData( int Color, @@ -138,13 +164,6 @@ public record DataTableDefinitionData( (Type Type, string Name, object[] Cells)[] Columns ); - // Couldn't come up with a descriptive name for this one. - // This one is for Data Table Get Row/Column count. - // It refers to a specific Data Table, but not to a column. - public record DataTableData( - string DataTableName - ); - public record SequenceData( int NumBranches ); diff --git a/Runtime/Types/Events/RoomEventBuild.cs b/Runtime/Types/Events/RoomEventBuild.cs index 0d25514..27c7b78 100644 --- a/Runtime/Types/Events/RoomEventBuild.cs +++ b/Runtime/Types/Events/RoomEventBuild.cs @@ -1,4 +1,5 @@ using RRCG; +using System; namespace RRCGBuild { diff --git a/Test/ClassChips/EventDefinitionTest.rrcg.gen.cs b/Test/ClassChips/EventDefinitionTest.rrcg.gen.cs index 06bfdac..0e4cb8b 100644 --- a/Test/ClassChips/EventDefinitionTest.rrcg.gen.cs +++ b/Test/ClassChips/EventDefinitionTest.rrcg.gen.cs @@ -1,4 +1,5 @@ using RRCGBuild; +using System; using System.Collections.Generic; namespace RRCGBuild @@ -61,16 +62,16 @@ void Existing() __BeginReturnScope("Existing", null, null); __BeginAccessibilityScope(AccessibilityScope.Kind.MethodRoot); RRCGBuild.EventDefinition params0 = default !; - params0 = __VariableDeclaratorExpression("params0", () => ExistingEvent("Existing0"), () => params0!, (_RRCG_SETTER_VALUE) => params0 = _RRCG_SETTER_VALUE); + params0 = __VariableDeclaratorExpression("params0", () => ExistingEvent("Existing0", Guid.Empty), () => params0!, (_RRCG_SETTER_VALUE) => params0 = _RRCG_SETTER_VALUE); params0.Receiver(); params0.SendLocal(); RRCGBuild.EventDefinition params1 = default !; - params1 = __VariableDeclaratorExpression>("params1", () => ExistingEvent("Existing1"), () => params1!, (_RRCG_SETTER_VALUE) => params1 = _RRCG_SETTER_VALUE); + params1 = __VariableDeclaratorExpression>("params1", () => ExistingEvent("Existing1", Guid.Empty), () => params1!, (_RRCG_SETTER_VALUE) => params1 = _RRCG_SETTER_VALUE); RRCGBuild.IntPort params1Value = default !; params1Value = __VariableDeclaratorExpression("params1Value", () => params1.Receiver(), () => params1Value!, (_RRCG_SETTER_VALUE) => params1Value = _RRCG_SETTER_VALUE); params1.SendLocal(params1Value); RRCGBuild.EventDefinition params2 = default !; - params2 = __VariableDeclaratorExpression>("params2", () => ExistingEvent("Existing2"), () => params2!, (_RRCG_SETTER_VALUE) => params2 = _RRCG_SETTER_VALUE); + params2 = __VariableDeclaratorExpression>("params2", () => ExistingEvent("Existing2", Guid.Empty), () => params2!, (_RRCG_SETTER_VALUE) => params2 = _RRCG_SETTER_VALUE); (RRCGBuild.IntPort Item1, RRCGBuild.StringPort Item2) params2Value = default !; params2Value = __VariableDeclaratorExpression<(RRCGBuild.IntPort Item1, RRCGBuild.StringPort Item2)>("params2Value", () => params2.Receiver(), () => params2Value!, (_RRCG_SETTER_VALUE) => params2Value = _RRCG_SETTER_VALUE); params2.SendLocal(params2Value.Item1, params2Value.Item2); diff --git a/Test/Compiler/Returns.rrcg.gen.cs b/Test/Compiler/Returns.rrcg.gen.cs index 63a6b65..ec923ce 100644 --- a/Test/Compiler/Returns.rrcg.gen.cs +++ b/Test/Compiler/Returns.rrcg.gen.cs @@ -461,11 +461,11 @@ RRCGBuild.StringPort EFTestSwitchReturn(RRCGBuild.IntPort match) , match); } - private void Test(RRCGBuild.StringPort name, System.Action test) + private void Test(string name, System.Action test) { __BeginReturnScope("Test", null, null); __BeginAccessibilityScope(AccessibilityScope.Kind.MethodRoot); - __VariableDeclaratorExpression("name", null, () => name!, (_RRCG_SETTER_VALUE) => name = _RRCG_SETTER_VALUE); + __VariableDeclaratorExpression("name", null, () => name!, (_RRCG_SETTER_VALUE) => name = _RRCG_SETTER_VALUE); __VariableDeclaratorExpression("test", null, () => test!, (_RRCG_SETTER_VALUE) => test = _RRCG_SETTER_VALUE); new RRCGBuild.EventDefinition(name).Receiver(); LogString(__StringInterpolation("Starting test ", name));