Exemplo n.º 1
0
        public bool Perform()
        {
            successful = true;
            Cell closest  = mesh.Cells[cellIndex];
            int  newColor = Toggle(closest.Color, buttons);

            actionsPerformed = new List <IAction>();
            if (closest.Color != 0)
            {
                IAction unsetAction = new CellColorClearAction(mesh, cellIndex);
                bool    res         = unsetAction.Perform();
                if ((!res || !unsetAction.Successful))
                {
                    if (res && !unsetAction.Successful)
                    {
                        actionsPerformed.Add(unsetAction);
                    }
                    Unperform();
                    return(false);
                }
                actionsPerformed.Add(unsetAction);
            }
            if (newColor != 0)
            {
                IAction setAction = new CellColorJoinAction(mesh, cellIndex, -1, newColor == 1);
                bool    res       = setAction.Perform();
                if ((!res || !setAction.Successful))
                {
                    if (res && !setAction.Successful)
                    {
                        actionsPerformed.Add(setAction);
                    }
                    Unperform();
                    return(false);
                }
                actionsPerformed.Add(setAction);
            }
            return(true);
        }
Exemplo n.º 2
0
 public bool Perform()
 {
     successful = true;
     Cell closest = mesh.Cells[cellIndex];
     int newColor = Toggle(closest.Color, buttons);
     actionsPerformed = new List<IAction>();
     if (closest.Color != 0)
     {
         IAction unsetAction = new CellColorClearAction(mesh, cellIndex);
         bool res = unsetAction.Perform();
         if ((!res || !unsetAction.Successful))
         {
             if (res && !unsetAction.Successful)
                 actionsPerformed.Add(unsetAction);
             Unperform();
             return false;
         }
         actionsPerformed.Add(unsetAction);
     }
     if (newColor != 0)
     {
         IAction setAction = new CellColorJoinAction(mesh, cellIndex, -1, newColor == 1);
         bool res = setAction.Perform();
         if ((!res || !setAction.Successful))
         {
             if (res && !setAction.Successful)
                 actionsPerformed.Add(setAction);
             Unperform();
             return false;
         }
         actionsPerformed.Add(setAction);
     }
     return true;
 }