using GameFramework; using GameFramework.Event; using GeometryTD.CustomUtility; using GeometryTD.Definition; using GeometryTD.Procedure; namespace GeometryTD.CustomEvent { public class NodeCompleteEventArgs : GameEventArgs { public static int EventId = typeof(NodeCompleteEventArgs).GetHashCode(); public override int Id => EventId; public string RunId { get; private set; } public int NodeId { get; private set; } public RunNodeType NodeType { get; private set; } public int SequenceIndex { get; private set; } public RunNodeCompletionStatus CompletionStatus { get; private set; } public bool CombatWon { get; private set; } public BackpackInventoryData InventorySnapshotAfterNode { get; private set; } public NodeCompleteEventArgs() { } public static NodeCompleteEventArgs Create() { return Create(null, 0, RunNodeType.None, -1, RunNodeCompletionStatus.Completed, true, null); } public static NodeCompleteEventArgs Create( string runId, int nodeId, RunNodeType nodeType, int sequenceIndex, RunNodeCompletionStatus completionStatus, bool combatWon, BackpackInventoryData inventorySnapshotAfterNode) { var args = ReferencePool.Acquire(); args.RunId = runId; args.NodeId = nodeId; args.NodeType = nodeType; args.SequenceIndex = sequenceIndex; args.CompletionStatus = completionStatus; args.CombatWon = combatWon; args.InventorySnapshotAfterNode = InventoryCloneUtility.CloneInventory(inventorySnapshotAfterNode); return args; } public override void Clear() { RunId = null; NodeId = 0; NodeType = RunNodeType.None; SequenceIndex = -1; CompletionStatus = RunNodeCompletionStatus.None; CombatWon = false; InventorySnapshotAfterNode = null; } } }