Пример #1
0
 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;
 }
Пример #2
0
        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();
            }
        }