public ActionNodeManager(KeyCode key, Action.EActionType type = Action.EActionType.Hold, int multi = 2) { // Create the correct ActionNode type depending on the EActionType given switch (type) { case Action.EActionType.Hold: case Action.EActionType.PressOnce: case Action.EActionType.ReleaseOnce: _node = new SimpleActionNode(key, type); break; case Action.EActionType.HoldTwice: case Action.EActionType.MultiHold: _node = new MultiHoldActionNode(key, multi); break; case Action.EActionType.PressTwice: case Action.EActionType.MultiPress: _node = new MultiPressActionNode(key, multi); break; case Action.EActionType.ReleaseTwice: case Action.EActionType.MultiRelease: _node = new MultiReleaseActionNode(key, multi); break; default: throw new ArgumentOutOfRangeException("type"); } }
public SimpleActionNode(KeyCode key, Action.EActionType type) { // If a multi-press was given, throw an exception if ((int)type >= 3) { throw new InvalidEnumArgumentException("type"); } _key = key; _type = type; }