private void UserControl_Loaded(object sender, RoutedEventArgs e) { action = (GiveOrdersAction)MainWindow.Instance.CurrentLogic; trigger = MainWindow.Instance.Mission.FindLogicOwner(action); var missionUnits = MainWindow.Instance.Mission.AllUnits.ToArray(); var triggerUnits = trigger.AllUnits.ToArray(); foreach (var unit in missionUnits) { UnitIcon.PlaceSimplifiedUnit(canvas, unit, !triggerUnits.Contains(unit)); } UpdateLines(); action.Groups.CollectionChanged += (s, ea) => UpdateLines(); trigger.Logic.CollectionChanged += (s, ea) => UpdateLines(); NotifyCollectionChangedEventHandler handler = (s, ea) => UpdateLines(); action.Orders.CollectionChanged += handler; canvas.Unloaded += (s, ea) => action.Orders.CollectionChanged -= handler; }
void CollapseAllButThisTrigger(Trigger thisTrigger) { foreach (var trigger in Mission.Triggers) { trigger.IsExpanded = thisTrigger == trigger; } }
void RenameTrigger(Trigger trigger) { if (trigger == null) return; var dialog = new StringRequest { Title = "Rename Trigger", TextBox = { Text = trigger.Name }, Owner =this }; if (dialog.ShowDialog() == true) { trigger.Name = dialog.TextBox.Text; trigger.RaisePropertyChanged(String.Empty); Mission.RaisePropertyChanged("Triggers"); } }
void DeleteTrigger(Trigger trigger) { Mission.Triggers.Remove(trigger); Mission.RaisePropertyChanged(String.Empty); }
bool MoveTrigger(MoveDirection direction, Trigger trigger, int count) { bool cont = true; for (int i = 0; i < count; i++) { cont = MoveTrigger(direction, trigger); if (cont == false) return false; } return true; }
bool MoveTrigger(MoveDirection direction, Trigger trigger, bool toEnd) { if (trigger == null) return false; var index = Mission.Triggers.IndexOf(trigger); if (direction == MoveDirection.Up) { if (index == 0) return false; if (toEnd) Mission.Triggers.Move(index, 0); else Mission.Triggers.Move(index, index - 1); } else if (direction == MoveDirection.Down) { if (index + 2 > Mission.Triggers.Count) return false; if (toEnd) Mission.Triggers.Move(index, Mission.Triggers.Count - 1); else Mission.Triggers.Move(index, index + 1); } Mission.RaisePropertyChanged("AllLogic"); return true; }
MenuItem GetNewConditionMenu(Trigger trigger) { return GetNewConditionMenu(() => trigger); }
bool MoveTrigger(MoveDirection direction, Trigger trigger) { return MoveTrigger(direction, trigger, false); }
void CreateNewTrigger(bool repeating) { var trigger = new Trigger { Name = GetNewTriggerName() }; if (repeating) { trigger.MaxOccurrences = -1; } Mission.Triggers.Add(trigger); Mission.RaisePropertyChanged(String.Empty); }
public void CopyTrigger(Trigger source) { /* MemoryStream stream = new MemoryStream(); System.Runtime.Serialization.Formatters.Binary.BinaryFormatter format = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); format.Serialize(stream, source); Trigger copy = (CMissionLib.Trigger)format.Deserialize(stream); copy.Name = copy.Name + " (Copy)"; Triggers.Add(copy); RaisePropertyChanged(String.Empty); */ string path = Path.GetTempFileName(); using (var writer = XmlWriter.Create(path, new XmlWriterSettings { Indent = true, CheckCharacters = true })) new NetDataContractSerializer().WriteObject(writer, source); try { using (var stream = File.OpenRead(path)) { Trigger copy = (Trigger)new NetDataContractSerializer().ReadObject(stream); copy.Name = copy.Name + " (Copy)"; // reconstruct object references foreach (CreateUnitsAction action in copy.Actions.Where(x => x.GetType() == typeof(CreateUnitsAction))) { foreach (UnitStartInfo unit in action.Units) { unit.Player = Players.First(x => x.Name == unit.Player.Name); unit.UnitDef = Mod.UnitDefs.First(x => x.Name == unit.UnitDefName); } } foreach (UnitsAreInAreaCondition condition in copy.Conditions.Where(x => x.GetType() == typeof(UnitsAreInAreaCondition))) { var players = condition.Players.Select(x => Players.First(p => p.Name == x.Name)); condition.Players = new ObservableCollection<Player>(players); } foreach (UnitCreatedCondition condition in copy.Conditions.Where(x => x.GetType() == typeof(UnitCreatedCondition))) { var players = condition.Players.Select(x => Players.First(p => p.Name == x.Name)); condition.Players = new ObservableCollection<Player>(players); } foreach (UnitFinishedCondition condition in copy.Conditions.Where(x => x.GetType() == typeof(UnitFinishedCondition))) { var players = condition.Players.Select(x => Players.First(p => p.Name == x.Name)); condition.Players = new ObservableCollection<Player>(players); } foreach (PlayerDiedCondition condition in copy.Conditions.Where(x => x.GetType() == typeof(PlayerDiedCondition))) { condition.Player = Players.First(p => p.Name == condition.Player.Name); } foreach (PlayerJoinedCondition condition in copy.Conditions.Where(x => x.GetType() == typeof(PlayerJoinedCondition))) { condition.Player = Players.First(p => p.Name == condition.Player.Name); } foreach (LockUnitsAction action in copy.Actions.Where(x => x.GetType() == typeof(LockUnitsAction))) { var players = action.Players.Select(x => Players.First(p => p.Name == x.Name)); action.Players = new ObservableCollection<Player>(players); } foreach (UnlockUnitsAction action in copy.Actions.Where(x => x.GetType() == typeof(UnlockUnitsAction))) { var players = action.Players.Select(x => Players.First(p => p.Name == x.Name)); action.Players = new ObservableCollection<Player>(players); } Triggers.Add(copy); RaisePropertyChanged(String.Empty); } if (File.Exists(path)) File.Delete(path); } catch(Exception ex) { throw ex; } }
public Mission(string name, Mod game, Map map) { Mod = game; Map = map; Name = name; ModName = game.Name; MapName = map.Name; var testAI = game.AllAis.FirstOrDefault(ai => ai.ShortName.Contains("NullAI")); var player1 = new Player { Name = "Player 1", Color = Colors.Blue, Alliance = "Alliance 1", IsHuman = true, IsRequired = true }; var player2 = new Player { Name = "Player 2", Color = Colors.Red, Alliance = "Alliance 2", IsHuman = false, }; StartingPlayer = player1; Players.Add(player1); Players.Add(player2); Regions.Add(new Region { Name = "Region 1" }); var gamePreloadTrigger = new Trigger(); Triggers.Add(gamePreloadTrigger); gamePreloadTrigger.Logic.Add(new GamePreloadCondition()); gamePreloadTrigger.Name = "Initialization"; var gameStartTrigger = new Trigger(); Triggers.Add(gameStartTrigger); gameStartTrigger.Logic.Add(new GameStartedCondition()); gameStartTrigger.Name = "Game Start"; var unitType = game.UnitDefs.First(); var startUnits = new UnitStartInfo[] {}; gamePreloadTrigger.Logic.Add(new CreateUnitsAction(startUnits)); var widgets = new[] { "gui_pauseScreen.lua", "cmd_unit_mover.lua", "init_startup_info_selector.lua", "gui_center_n_select.lua", "gui_take_remind.lua", "gui_startup_info_selector.lua", "gui_local_colors.lua", "spring_direct_launch.lua" }; foreach (var widget in widgets) DisabledWidgets.Add(widget); var gadgets = new string[] { "game_over.lua", "game_end.lua", "awards.lua" }; foreach (var gadget in gadgets) DisabledGadgets.Add(gadget); if (game.Name.Contains("Zero-K")) RapidTag = "zk:stable"; Items = new CompositeObservableCollection<Trigger, Region>(Triggers, Regions); }
private void UserControl_Loaded(object sender, RoutedEventArgs e) { action = (GiveOrdersAction)MainWindow.Instance.CurrentLogic; trigger = MainWindow.Instance.Mission.FindLogicOwner(action); var missionUnits = MainWindow.Instance.Mission.AllUnits.ToArray(); var triggerUnits = trigger.AllUnits.ToArray(); foreach (var unit in missionUnits) { UnitIcon.PlaceSimplifiedUnit(canvas, unit, !triggerUnits.Contains(unit)); } UpdateLines(); action.Groups.CollectionChanged += (s, ea) => UpdateLines(); trigger.Logic.CollectionChanged += (s, ea) => UpdateLines(); NotifyCollectionChangedEventHandler handler = (s, ea) => UpdateLines(); action.Orders.CollectionChanged += handler; canvas.Unloaded += (s, ea) => action.Orders.CollectionChanged -= handler; }
public ConditionsFolder(Trigger trigger) { this.Trigger = trigger; Name = "Conditions"; trigger.Logic.CollectionChanged += (s, e) => RaisePropertyChanged("Items"); }