public ViewModel() { // コマンドの初期化 PlusCommand = new PlusCommand(); MinusCommand = new MinusCommand(); MultiCommand = new MultiCommand(); DivCommand = new DivCommand(); // コマンド実行後の結果をResultに反映 PlusCommand.PropertyChanged += (sender, e) => { Result = ((PlusCommand)sender).Result.ToString(); RaisePropertyChanged(e.PropertyName); }; MinusCommand.PropertyChanged += (sender, e) => { Result = ((MinusCommand)sender).Result.ToString(); RaisePropertyChanged(e.PropertyName); }; MultiCommand.PropertyChanged += (sender, e) => { Result = ((MultiCommand)sender).Result.ToString(); RaisePropertyChanged(e.PropertyName); }; DivCommand.PropertyChanged += (sender, e) => { Result = ((DivCommand)sender).Result; RaisePropertyChanged(e.PropertyName); }; }
public void AddMultiCommandToQueue(MultiCommand command, bool clear = false) { if (clear) { StopCurrentMultiCommand (); } commandQueue.Enqueue (command); }
// How can I have a shared context like this for all Commands of the group? public static MultiCommand SharedContext(this MultiCommand mc, Action <CommandContext> CallBack) { var cc = new CommandContext(); CallBack(cc); mc.SharedContext = cc; return(mc); }
public CommandEntity ParseMultiCommand(Type attribute) { CommandEntity command = new CommandEntity(); MultiCommandAttribute moduleAttribute = attribute.GetTypeInfo().GetCustomAttribute <MultiCommandAttribute>(); command = new MultiCommand(moduleAttribute.Entity as MultiCommand); object constructedInstance = null; try { constructedInstance = Activator.CreateInstance(Type.GetType(attribute.AssemblyQualifiedName), command); } catch { constructedInstance = Activator.CreateInstance(Type.GetType(attribute.AssemblyQualifiedName)); } List <Type> allChildren = attribute.GetNestedTypes(BindingFlags.NonPublic | BindingFlags.Public) .Where((x) => x.GetTypeInfo().GetCustomAttributes <CommandEntityAttribute>().Any()) .ToList(); foreach (Type t in allChildren) { CommandEntityAttribute entityAttribute = t.GetTypeInfo().GetCustomAttribute <CommandEntityAttribute>(); CommandEntity entity = null; if (entityAttribute is MultiCommandAttribute cAttribute) { entity = ParseMultiCommand(t); } if (entity == null) { continue; } entity.Parent = command; command.Children.Add(entity); } List <MethodInfo> methods = attribute.GetMethods() .Where((x) => x.GetCustomAttributes <CommandAttribute>().Any()) .ToList(); foreach (MethodInfo m in methods) { Command newEvent = CreateCommand(m, command, constructedInstance); if (newEvent.IsDefault && (command as MultiCommand).defaultCommand == null) { (command as MultiCommand).defaultCommand = newEvent; } command.Children.Add(newEvent); } return(command); }
public void MultiCommandInit() { MultiCommand.New() .Add(new Command1()) .Add(new Command2()) .Add(new Command3()) .SharedContext(CC => { CC.Data = new RequiredData(); CC.ServerController = GetServerController(); }); }
public void MutiCommand_Execute() { Doctor doctor = new Doctor(); DoctorMakeAdvice doctorMakeAdvice = new DoctorMakeAdvice(doctor); Light light = new Light(); LightOnCommand lightOnCommand = new LightOnCommand(light); MultiCommand multiCommand = new MultiCommand(new ICommand[] { doctorMakeAdvice, lightOnCommand }); multiCommand.Execute(); }
/// <summary>Wire up view model.</summary> public ProxyViewModel() { _controller = new ProxyController(); _cameraProxyController = new ProxyController(); _connectCommands = new List <ConnectCommand> { new ConnectCommand(_controller), new ConnectCommand(_cameraProxyController), }; _connectCommand = new MultiCommand(_connectCommands); _cameraProxyController.PropertyChanged += onControllerPropertyChanged; _controller.PropertyChanged += onControllerPropertyChanged; }
private void ExecuteMultiCommand(string buttonText) { _multiCommandHaveExecuted = true; if (buttonText.Contains("Ready")) { Actions.SetAndUpdateState(PlayerState.Ready); } else if (buttonText.Contains("Kill") && SelectedItem != null) { PlayersHub.Connection.InvokeAsync("KillRequest", Globals.PlayerObject.Guid, SelectedItem.Guid, Globals.GameObject.Guid); Actions.SetAndUpdateState(PlayerState.Ready); } else if (buttonText.Contains("Guess") && SelectedItem != null) { if (SelectedItem.Role == PlayerRole.Mafia) { DependencyService.Get <IMessage>().LongAlert($"'{SelectedItem.Name}' IS the Mafia!"); } else { DependencyService.Get <IMessage>().LongAlert($"'{SelectedItem.Name}' NOT a Mafia"); } Actions.SetAndUpdateState(PlayerState.Ready); } else if (buttonText.Contains("Vote") && SelectedItem != null) { PlayersHub.Connection.InvokeAsync("VoteRequest", Globals.PlayerObject.Guid, SelectedItem.Guid, Globals.GameObject.Guid); Actions.SetAndUpdateState(PlayerState.Ready); } else { _multiCommandHaveExecuted = false; DependencyService.Get <IMessage>().ShortAlert("Select player"); } MultiCommand.ChangeCanExecute(); UpdateMultiButtonText(); }
public void PerformActions() { bool complete = true; if (currentMultiCommand != null && currentCommands != null) { for (int i = 0; i < currentCommands.Count; i++) { //loop through each command and see if it's done if (currentCommands [i].IsComplete () != true) { complete = false; break; } } } if (complete && commandQueue.Count > 0) { //if we're done and we have another, queue it up; Debug.Log("Selection "+ID+" has "+commandQueue.Count + " in queue, issuing "+commandQueue.Peek()+" to "+units.Count+" units"); currentMultiCommand = commandQueue.Dequeue (); currentCommands = currentMultiCommand.IssueCommands (this.units); } }
private void OnDelete(object o, EventArgs args) { List <IObject> Objects = new List <IObject>(selectedObjects); //OnObjectRemoved() tries to access selectedObject and that's not possible during "foreach" List <Command> commands = new List <Command>(); Command command = null; foreach (IGameObject selectedObject in Objects) { sector.Remove(selectedObject, ref command); commands.Add(command); } if (commands.Count > 1) //If there are more items, then create multiCommand, otherwise keep single one { command = new MultiCommand("Deleted " + commands.Count.ToString() + " objects", commands); } UndoManager.AddCommand(command); }
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var command = new MultiCommand() { Commands = new List <ICommand>() }; foreach (var obj in values) { if (obj is ICommand c) { command.Commands.Add(c); } } return(command); }
public PipelineCommand(IEnumerable<RedisCommand> commands, bool transactional) { if (commands == null) throw new ArgumentNullException("commands"); _commands.AddRange(commands); _transactional = transactional; if (transactional) { _multi = new MultiCommand(); _exec = new ExecCommand(); } else { _multi = null; _exec = null; } }
public void Hide() { if (IsOpen && isActive && instantiatedObject != null) { Command[] commands = new MenuBehaviourCommand[menuBehaviours.Length]; for (int i = 0; i < menuBehaviours.Length; i++) { commands[i] = new MenuBehaviourCommand(menuBehaviours[i], MenuBehaviourCommand.Type.Close, true); } MultiCommand multiCommand = new MultiCommand(commands); multiCommand.RegisterFinishCallback(HideFinish); commandQ.AddCommand(multiCommand); } else { HideFinish(); } }
public void Show() { if (IsOpen && !isActive && instantiatedObject != null) { instantiatedObject.SetActive(true); Command[] commands = new MenuBehaviourCommand[menuBehaviours.Length]; for (int i = 0; i < menuBehaviours.Length; i++) { commands[i] = new MenuBehaviourCommand(menuBehaviours[i], MenuBehaviourCommand.Type.Open, true); } MultiCommand multiCommand = new MultiCommand(commands); multiCommand.RegisterFinishCallback(ShowFinish); commandQ.AddCommand(multiCommand, CommandQueue.AddMode.Instant); } else { ShowFinish(); } }
/// <summary> /// Create a new instance of this class /// </summary> public PatchVersionSelectionViewModel(Window parentWindow, UserControl control) : base(parentWindow) { Patches patches = new Patches(); AllPatches = patches.GetPatches(); IProgressCommand downloadPatchesCommand = new DownloadAllPatchesCommand(settingManager); ProgressBarDialog dialog = new ProgressBarDialog(); if (dialog.DataContext is ProgressBarDialogViewModel progressViewModel) { downloadPatchesCommand.ProgressChanged += (sender, data) => { progressViewModel.UpdateProgress(data.CurrentWorkload, data.TotalWorkload); }; downloadPatchesCommand.Executed += (sender, data) => { progressViewModel.UpdateProgress(100, 100); }; } DownloadAllPatches = new MultiCommand(new List <ICommand>() { downloadPatchesCommand, new OpenCustomPopupWindowCommand(currentWindow, FontAwesomeIcon.Hourglass, "Downloading all patches", dialog, false, null) }); object dockArea = control.FindName("DP_InnerDock"); object controllerDock = control.FindName("IC_PatchSelectionControl"); if (dockArea is DockPanel panel && controllerDock is ItemsControl controller) { panelToUse = panel; OpenLaunchGameCommand = new OpenLaunchUserControlToPanel( panelToUse, new LaunchGameUserControl(parentWindow), controller ); } }
private void OnClone(object o, EventArgs args) { List <Command> commands = new List <Command>(); Command command = null; foreach (IGameObject selectedObject in selectedObjects) { try { object newObject = ((ICloneable)selectedObject).Clone(); IGameObject gameObject = (IGameObject)newObject; sector.Add(gameObject, gameObject.GetType().Name + " (clone)", ref command); commands.Add(command); } catch (Exception e) { ErrorDialog.Exception(e); } } if (commands.Count > 1) //If there are more items, then create multiCommand, otherwise keep single one { command = new MultiCommand("Cloned " + commands.Count.ToString() + " objects", commands); } UndoManager.AddCommand(command); }
public void OnMouseButtonRelease(Vector mousePos, int button, ModifierType Modifiers) { if (button == 1) { switch (state) { case State.NONE: break; case State.SELECTING: // Add objects in the selected area to selectedObjects // Flush selected objects if it's not CTRL+select if ((Modifiers & ModifierType.ControlMask) == 0) { selectedObjects.Clear(); } RectangleF selectedArea = new RectangleF(pressPoint, mousePos); foreach (IObject Object in sector.GetObjects(typeof(IObject))) { if (selectedArea.Contains(Object.Area)) { if (selectedObjects.Contains(Object)) { selectedObjects.Remove(Object); } else { selectedObjects.Add(Object); } } } if (selectedObjects.Count == 1) { //show properties MakeActive(selectedObjects[0]); //application.EditProperties(selectedObjects[0], selectedObjects[0].GetType().Name); } else { // resizing is unavailable if more objects are selected activeObject = null; controlPoints.Clear(); application.EditProperties(selectedObjects, "Group of " + selectedObjects.Count.ToString() + " objects"); } break; case State.DRAGGING: // Finish dragging and register undo command Vector newPosition = new Vector(activeObject.Area.Left, activeObject.Area.Top); //Area is up to date, no need to calculate it again if (newPosition != originalPosition) // FIXME: is that ok in C# or do we compare the reference here? { Vector totalShift = newPosition - originalPosition; MultiCommand multi_command = new MultiCommand("Moved " + selectedObjects.Count + " objects"); foreach (IObject selectedObject in selectedObjects) { // copy new area to variable RectangleF oldArea = selectedObject.Area; // and shift it to it's oreginal location oldArea.Move(-totalShift); multi_command.Add(new ObjectAreaChangeCommand( "Moved Object " + selectedObject, oldArea, selectedObject.Area, // We are already on new area selectedObject)); } UndoManager.AddCommand(multi_command); } break; } state = State.NONE; Redraw(); } /*if (false) * { * if (button == 1 && state == State.DRAGGING) { * state = State.NONE; * * Vector newPosition = new Vector (activeObject.Area.Left, activeObject.Area.Top);//Area is up to date, no need to calculate it again * if (originalPosition != newPosition) { * Command command = null; * List<Command> commandList = new List<Command>(); * Vector totalShift = newPosition - originalPosition; * foreach (IObject selectedObject in selectedObjects) { * RectangleF oldArea = selectedObject.Area; //copy new area to variable * oldArea.Move(-totalShift); // and shift it to it's oreginal location * command = new ObjectAreaChangeCommand( * "Moved Object " + selectedObject, * oldArea, * selectedObject.Area, //We are already on new area * selectedObject); * commandList.Add(command); * } * * if (commandList.Count > 1) //If there are more items, then create multiCommand, otherwise keep single one * command = new MultiCommand("Moved " + commandList.Count.ToString() + " objects", commandList); * * UndoManager.AddCommand(command); //All commands are already done.. no need to do that again * * Redraw(); * } else { //L click + no CTRL => select single object under cursor * if ((Modifiers & ModifierType.ControlMask) == 0) { * MakeActive(FindObjectAt(mousePos)); * Redraw(); * } * } * } * if (button == 3 && state == State.SELECTING) { * state = State.NONE; * if ((pressPoint - mousePos).Norm() < 10) { //for moves within 10px circle around pressPoint show popup menu * bool hit = false; * foreach (IObject selectedObject in selectedObjects) { * hit |= selectedObject.Area.Contains(mousePos); * } * if (!hit) { * MakeActive(FindObjectAt(mousePos)); * Redraw(); * } * if (hit || activeObject != null) //Show popup menu when clicked on object (from selection or new one) * PopupMenu(button); * } else { * if ((Modifiers & ModifierType.ControlMask) == 0) //Flush selected objects if it's not CTRL+select * selectedObjects.Clear(); * * RectangleF selectedArea = new RectangleF(pressPoint, mousePos); * foreach(IObject Object in sector.GetObjects(typeof(IObject))) { * if (selectedArea.Contains(Object.Area)) { * if (selectedObjects.Contains(Object)) * selectedObjects.Remove(Object); * else * selectedObjects.Add(Object); * } * } * if (selectedObjects.Count == 1) { //show properties * MakeActive(selectedObjects[0]); * //application.EditProperties(selectedObjects[0], selectedObjects[0].GetType().Name); * } else { * activeObject = null; //resizing is unavailable if more objects are selected * controlPoints.Clear(); * application.EditProperties(selectedObjects, "Group of " + selectedObjects.Count.ToString() + " objects"); * } * Redraw(); * } * } * }*/ }
public Command1(MultiCommand rollbackMultiCommand = null) : base(rollbackMultiCommand) { }
// it makes some sense in demonstration purposes... private MultiCommand BuildCommands() { #region Here we are creating all commands var fileGroup = new MultiCommand(BuildTestListOfCommands("file")); var dataSourceGroup = new MultiCommand(BuildTestListOfCommands("dataSource")); var otherTypeGroup = new MultiCommand(BuildTestListOfCommands("otherType")); var serviceCommandGroup = new MultiCommand(BuildTestListOfCommands("service")); var multiCommand = new MultiCommand(new List <ICommand>() { fileGroup, dataSourceGroup, otherTypeGroup, serviceCommandGroup }); #endregion #region here we'll set strategies to commands // FULLROLLBACK var fullRollbackStrategy = new RollbackOneStrategy(multiCommand); // ONECOMMMANDROLLBACK // this one will be executed by default if no strategy is selected // Certain GROUPROLLBACK (ONLY COMMANDS OF A SPECIFIC GROUP) var fileGroupRollBackStrategy = new RollbackOneStrategy(fileGroup); var serviceGroupRollBackStrategy = new RollbackOneStrategy(serviceCommandGroup); var dataGroupRollBackStrategy = new RollbackOneStrategy(dataSourceGroup); var otherGroupRollBackStrategy = new RollbackOneStrategy(otherTypeGroup); // COMBINATIONSOFCOMMANDSINDIFFERENTGROUPSROLLBACK | MORETHANONECOMMANDROLLBACK var customRollback1 = new RollbackManyStrategy(new List <ICommand> { // rollback 2 file commands fileGroup.CommandAt(0), otherTypeGroup.CommandAt(2) }); var customRollback2 = new RollbackManyStrategy(new List <ICommand> { fileGroup.CommandAt(1), fileGroup.CommandAt(2), // rollback 2 dataSource commands dataSourceGroup.CommandAt(1), dataSourceGroup.CommandAt(4), // and we can also rollback the whole group of Service commands (if they are executed) otherTypeGroup }); // NONEROLLBACKSTRATEGY // and this one can be used if we do not need to rollback a certain command if it ever fails var noneRollbackCommand = new RollbackNoneStrategy(); #endregion #region Here we'll set up strategies for certain commands (serviceCommandGroup.CommandAt(3) as BaseCommand).SetRollbackStrategy(fullRollbackStrategy); (dataSourceGroup.CommandAt(0) as BaseCommand).SetRollbackStrategy(fileGroupRollBackStrategy); (serviceCommandGroup.CommandAt(4) as BaseCommand).SetRollbackStrategy(serviceGroupRollBackStrategy); (dataSourceGroup.CommandAt(3) as BaseCommand).SetRollbackStrategy(dataGroupRollBackStrategy); (otherTypeGroup.CommandAt(4) as BaseCommand).SetRollbackStrategy(otherGroupRollBackStrategy); (serviceCommandGroup.CommandAt(2) as BaseCommand).SetRollbackStrategy(customRollback1); (serviceCommandGroup.CommandAt(0) as BaseCommand).SetRollbackStrategy(customRollback2); #endregion return(multiCommand); }
private void OnClone(object o, EventArgs args) { List<Command> commands = new List<Command>(); Command command = null; foreach (IGameObject selectedObject in selectedObjects) try { object newObject = ((ICloneable) selectedObject).Clone(); IGameObject gameObject = (IGameObject) newObject; sector.Add(gameObject, gameObject.GetType().Name + " (clone)", ref command); commands.Add(command); } catch(Exception e) { ErrorDialog.Exception(e); } if (commands.Count > 1) //If there are more items, then create multiCommand, otherwise keep single one command = new MultiCommand("Cloned " + commands.Count.ToString() + " objects", commands); UndoManager.AddCommand(command); }
public void OnMouseButtonRelease(Vector mousePos, int button, ModifierType Modifiers) { if (button == 1) { switch(state) { case State.NONE: break; case State.SELECTING: // Add objects in the selected area to selectedObjects // Flush selected objects if it's not CTRL+select if ((Modifiers & ModifierType.ControlMask) == 0) { selectedObjects.Clear(); } RectangleF selectedArea = new RectangleF(pressPoint, mousePos); foreach(IObject Object in sector.GetObjects(typeof(IObject))) { if (selectedArea.Contains(Object.Area)) { if (selectedObjects.Contains(Object)) { selectedObjects.Remove(Object); } else { selectedObjects.Add(Object); } } } if (selectedObjects.Count == 1) { //show properties MakeActive(selectedObjects[0]); //application.EditProperties(selectedObjects[0], selectedObjects[0].GetType().Name); } else { // resizing is unavailable if more objects are selected activeObject = null; controlPoints.Clear(); application.EditProperties(selectedObjects, "Group of " + selectedObjects.Count.ToString() + " objects"); } break; case State.DRAGGING: // Finish dragging and register undo command Vector newPosition = new Vector (activeObject.Area.Left, activeObject.Area.Top);//Area is up to date, no need to calculate it again if (newPosition != originalPosition) // FIXME: is that ok in C# or do we compare the reference here? { Vector totalShift = newPosition - originalPosition; MultiCommand multi_command = new MultiCommand("Moved " + selectedObjects.Count + " objects"); foreach (IObject selectedObject in selectedObjects) { // copy new area to variable RectangleF oldArea = selectedObject.Area; // and shift it to it's oreginal location oldArea.Move(-totalShift); multi_command.Add(new ObjectAreaChangeCommand( "Moved Object " + selectedObject, oldArea, selectedObject.Area, // We are already on new area selectedObject)); } UndoManager.AddCommand(multi_command); } break; } state = State.NONE; Redraw(); } /*if (false) { if (button == 1 && state == State.DRAGGING) { state = State.NONE; Vector newPosition = new Vector (activeObject.Area.Left, activeObject.Area.Top);//Area is up to date, no need to calculate it again if (originalPosition != newPosition) { Command command = null; List<Command> commandList = new List<Command>(); Vector totalShift = newPosition - originalPosition; foreach (IObject selectedObject in selectedObjects) { RectangleF oldArea = selectedObject.Area; //copy new area to variable oldArea.Move(-totalShift); // and shift it to it's oreginal location command = new ObjectAreaChangeCommand( "Moved Object " + selectedObject, oldArea, selectedObject.Area, //We are already on new area selectedObject); commandList.Add(command); } if (commandList.Count > 1) //If there are more items, then create multiCommand, otherwise keep single one command = new MultiCommand("Moved " + commandList.Count.ToString() + " objects", commandList); UndoManager.AddCommand(command); //All commands are already done.. no need to do that again Redraw(); } else { //L click + no CTRL => select single object under cursor if ((Modifiers & ModifierType.ControlMask) == 0) { MakeActive(FindObjectAt(mousePos)); Redraw(); } } } if (button == 3 && state == State.SELECTING) { state = State.NONE; if ((pressPoint - mousePos).Norm() < 10) { //for moves within 10px circle around pressPoint show popup menu bool hit = false; foreach (IObject selectedObject in selectedObjects) { hit |= selectedObject.Area.Contains(mousePos); } if (!hit) { MakeActive(FindObjectAt(mousePos)); Redraw(); } if (hit || activeObject != null) //Show popup menu when clicked on object (from selection or new one) PopupMenu(button); } else { if ((Modifiers & ModifierType.ControlMask) == 0) //Flush selected objects if it's not CTRL+select selectedObjects.Clear(); RectangleF selectedArea = new RectangleF(pressPoint, mousePos); foreach(IObject Object in sector.GetObjects(typeof(IObject))) { if (selectedArea.Contains(Object.Area)) { if (selectedObjects.Contains(Object)) selectedObjects.Remove(Object); else selectedObjects.Add(Object); } } if (selectedObjects.Count == 1) { //show properties MakeActive(selectedObjects[0]); //application.EditProperties(selectedObjects[0], selectedObjects[0].GetType().Name); } else { activeObject = null; //resizing is unavailable if more objects are selected controlPoints.Clear(); application.EditProperties(selectedObjects, "Group of " + selectedObjects.Count.ToString() + " objects"); } Redraw(); } } }*/ }
public MultiCommandAttribute() { Entity = new MultiCommand(Entity); }
public FailCommand(MultiCommand rollbackMultiCommand = null) : base(rollbackMultiCommand) { }
private void OnDelete(object o, EventArgs args) { List<IObject> Objects = new List<IObject>(selectedObjects); //OnObjectRemoved() tries to access selectedObject and that's not possible during "foreach" List<Command> commands = new List<Command>(); Command command = null; foreach (IGameObject selectedObject in Objects) { sector.Remove(selectedObject, ref command); commands.Add(command); } if (commands.Count > 1) //If there are more items, then create multiCommand, otherwise keep single one command = new MultiCommand("Deleted " + commands.Count.ToString() + " objects", commands); UndoManager.AddCommand(command); }
/// <summary> /// Create a new instance of this model /// </summary> /// <param name="window"></param> public MainWindowModel(Window window) : base(window, true) { IconVisible = false; updateSearched = false; CloseWindowCommand = new CloseApplicationCommand(); SetWindowTitle(); object dockArea = window.FindName("DP_ContentDock"); if (dockArea is DockPanel panel) { ISettingFactory settingFactory = new WpfPropertySettingManagerFactory(); SettingManager wpfSettings = settingFactory.GetSettingsManager(); contentDock = panel; BrowserUserControl localBrowser = new BrowserUserControl(string.Empty); ICommand openLocalBrowser = new MultiCommand(new List <ICommand>() { new OpenControlToPanel(contentDock, localBrowser, false), new ChangeBrowserContentCommand(localBrowser) }); BrowserUserControl remoteBrowser = new BrowserUserControl(string.Empty, new RemoteDocumentManagerFactory(new TimeSpan(0, 30, 0))); ICommand openRemoteBrowser = new MultiCommand(new List <ICommand>() { new OpenControlToPanel(contentDock, remoteBrowser, false), new ChangeBrowserContentCommand(remoteBrowser) }); OpenNewsCommand = openRemoteBrowser; OpenChangelogCommand = openLocalBrowser; OpenDisclamerCommand = openLocalBrowser; OpenAboutCommand = openLocalBrowser; OpenLicenseCommand = openLocalBrowser; OpenHDPatchCommand = new OpenControlToPanel(contentDock, new ComingSoonControl()); OpenMapCommand = new OpenControlToPanel(contentDock, new MapUserControl()); LaunchGameCommand = new OpenControlToPanel(contentDock, new PatchVersionSelectionUserControl(window)); OpenSettingCommand = new OpenControlToPanel(contentDock, new SettingsUserControl(currentWindow)); ComingSoonCommand = new OpenControlToPanel(contentDock, new ComingSoonControl()); ReportIssueCommand = new OpenLinkCommand(wpfSettings.GetValue <string>("ReportIssueLink")); OpenEditorCommand = new StartEditorCommand(settingManager); OpenSettlersConfigurationCommand = new StartSettlersConfigCommand(settingManager); OpenSavesFolderCommand = new OpenFolderCommand(Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments) + "/TheSettlers4/Save/" ); string gameFolder = settingManager.GetValue <string>("GameFolder"); string textureChange = gameFolder + "Texturenwechsler.bat"; OpenTextureChangerCommand = new StartProgramCommand(textureChange); OpenNewsCommand.Execute("News.md"); } ChangeGroupVisiblity = new ToggleSubGroupVisibilityCommand(currentWindow); window.ContentRendered += (sender, data) => { if (updateSearched) { return; } updateSearched = true; CheckForUpdateIfNeeded(window); }; }
public void StopCurrentMultiCommand() { commandQueue.Clear (); currentMultiCommand = null; for (int i = 0; i < units.Count; i++) { units [i].StopCurrentCommand (); } }
protected BaseCommand(MultiCommand rollbackMultiCommand = null) { this.rollbackMultiCommand = rollbackMultiCommand; }