private void OnInsertKeyUp(object sender, KeyEventArgs e) { if (!IsEditing) { if (((e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl)) && e.Key == Key.A) || e.Key == Key.Insert) { if (CombatantsGrid.SelectedItem is CombatantData) { int idx = CombatantList.IndexOf((CombatantData)CombatantsGrid.SelectedItem) + 1; CombatantList.Insert(idx, new CombatantData { CombatantName = "Combatant " + (CombatantList.Count + 1) }); SelectRowByIndex(CombatantsGrid, idx); } else { CombatantList.Add(new CombatantData { CombatantName = "Combatant " + (CombatantList.Count + 1) }); SelectRowByIndex(CombatantsGrid, CombatantList.Count - 1); } } } }
public void LoadBattle(string filename = null) { if (string.IsNullOrEmpty(filename)) { using (var dialog = new wforms.OpenFileDialog()) { dialog.Filter = FILE_DIALOG_FILTER; if (dialog.ShowDialog() == wforms.DialogResult.OK) { LoadBattle(dialog.FileName); } } } else if (File.Exists(filename)) { if (turnTimer.IsEnabled) { turnTimer.Stop(); } CombatantList.Clear(); XmlSerializer serializer = new XmlSerializer(typeof(CombatantCollection)); using (FileStream stream = new FileStream(filename, FileMode.Open)) { IEnumerable <CombatantData> combatantData = (IEnumerable <CombatantData>)serializer.Deserialize(stream); foreach (CombatantData combatant in combatantData) { if (combatant.CombatantName == CURRENT_TURN_STRING) { CombatantList.CurrentTurn = combatant.Initiative; } else if (combatant.CombatantName == TURN_COUNT_STRING) { CombatantList.TurnCount = combatant.Initiative; } else { CombatantList.Add(combatant); } } SetTurnText(CombatantList.CurrentCombatantName, TurnLength); IudTurnCount.Value = CombatantList.TurnCount; } } else { for (int i = 1; i < 9; i++) { CombatantList.Add(new CombatantData { CombatantName = "Combatant " + i.ToString() }); } } }
public void SortCollection() { if (CombatantList.Count > 0) { turnTimer.Stop(); var orderedList = CombatantList.OrderByDescending(i => i.Initiative).ThenByDescending(i => i.InitModifier).ThenBy(i => i.CombatantName).ToList(); CombatantList.Reset(); foreach (var combatant in orderedList) { CombatantList.Add(combatant); } SetTurnText(CombatantList.CurrentCombatantName, TurnLength); IudTurnCount.Value = CombatantList.TurnCount; } }
public void SaveBattle(string filename = null) { if (string.IsNullOrEmpty(filename)) { using (var dialog = new wforms.SaveFileDialog()) { dialog.Filter = FILE_DIALOG_FILTER; if (dialog.ShowDialog() == wforms.DialogResult.OK) { SaveBattle(dialog.FileName); } } } else if (CombatantList.Count > 0) { XmlSerializer serializer = new XmlSerializer(typeof(CombatantCollection)); FileInfo finfo = new FileInfo(filename); finfo.Directory.Create(); using (FileStream stream = new FileStream(filename, FileMode.Create)) { CombatantData currentTurn = new CombatantData { CombatantName = CURRENT_TURN_STRING, Initiative = CombatantList.CurrentTurn }; CombatantList.Add(currentTurn); CombatantData turnCount = new CombatantData { CombatantName = TURN_COUNT_STRING, Initiative = CombatantList.TurnCount }; CombatantList.Add(turnCount); serializer.Serialize(stream, CombatantList); CombatantList.Remove(currentTurn); CombatantList.Remove(turnCount); } } }