public TriggerEventArgs(ItemTriggerTarget target, IItem specifiedTargetItem, GameObject collidedObject, string key, ParameterType type, TriggerValue value) { Target = target; SpecifiedTargetItem = specifiedTargetItem; CollidedObject = collidedObject; Key = key; Type = type; Value = value; }
bool TryGetKey(ItemTriggerTarget target, IItem senderItem, IItem specifiedTarget, GameObject collidedObject, string triggerKey, out string key) { key = default; switch (target) { case ItemTriggerTarget.This: key = RoomStateKey.GetItemKey(senderItem.Id.Value, triggerKey); return(true); case ItemTriggerTarget.SpecifiedItem: if (specifiedTarget == null) { return(false); } if (specifiedTarget.gameObject == null) { return(false); } key = RoomStateKey.GetItemKey(specifiedTarget.Id.Value, triggerKey); return(true); case ItemTriggerTarget.Owner: key = RoomStateKey.GetPlayerKey(triggerKey); return(true); case ItemTriggerTarget.CollidedItemOrPlayer: if (collidedObject.CompareTag("Player")) { key = RoomStateKey.GetPlayerKey(triggerKey); return(true); } var collidedItem = collidedObject.GetComponentInParent <IItem>(); if (collidedItem != null) { key = RoomStateKey.GetItemKey(collidedItem.Id.Value, triggerKey); return(true); } return(false); case ItemTriggerTarget.Global: key = RoomStateKey.GetGlobalKey(triggerKey); return(true); default: throw new NotImplementedException(); } }