Beispiel #1
0
 public override InputReturns MouseRightDown(StateControls stateControls)
 {
     //true if you click a gate
     if (new BoxCollider(stateControls.LocalMousePosition.X, stateControls.LocalMousePosition.Y, 0, 0).GetIntersections(stateControls.State, (true, true, true), out _, out var boardObjects, false))
     {
         BoardObject clickedBoardObject = boardObjects.First();
         selections.Clear();
         selections.Add(clickedBoardObject);
         //Load [CircuitActions]
         var actions = CircuitAttributes.GetActions(clickedBoardObject, RefreshSelections, stateControls.RegisterChange);
         stateControls.CircuitActionsOutput = actions;
         return(true, this);
     }
     return(false, this);
 }
        /// <summary>
        /// Returns a list of updated CircuitProperties to be passed into the StateControls
        /// </summary>
        public CircuitPropertyCollection GetUpdatedCircuitProperties(Action <string> registerChange)
        {
            if (!selections.SetEquals(oldSelections))
            {
                CircuitPropertyCollection circuitProperties = CircuitPropertyCollection.Empty;
                oldSelections.Clear();
                oldSelections.UnionWith(selections);
                foreach (var selection in selections)
                {
                    circuitProperties.Intersect(CircuitAttributes.GetProperties(selection, registerChange));
                }
                return(circuitProperties);
            }

            return(null);
        }
        /// <summary>
        /// Propogates hotkey through all selected CircuitObjects and runs any valid [CircuitProperties]
        /// </summary>
        protected bool ExecuteHotkey(BoardState state, char?key, Modifier Modifiers, Action <string> registerChange, out CircuitPropertyCollection circuitProperties)
        {
            CircuitActionCollection actions = CircuitActionCollection.Empty;

            //Find all actions
            foreach (var selection in selections)
            {
                actions.UnionWith(CircuitAttributes.GetActions(selection, RefreshSelections, registerChange));
            }

            char hotkey = (char)key;
            //Execute matches
            bool toRefresh = actions.InvokeHotkeyActions(state, hotkey, Modifiers);

            circuitProperties = GetUpdatedCircuitProperties(registerChange);
            return(toRefresh);
        }