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); }
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; }