public void ImportData(WillowTwoPlayerSaveGame saveGame, Platform platform) { this.Slots.Clear(); this._BrokenSlots.Clear(); foreach (var bankSlot in saveGame.BankSlots) { IPackableSlot slot; try { slot = BaseDataHelper.Decode(bankSlot.InventorySerialNumber, platform); } catch (Exception e) { this._BrokenSlots.Add(new KeyValuePair <BankSlot, Exception>(bankSlot, e)); continue; } var test = BaseDataHelper.Encode(slot, platform); if (bankSlot.InventorySerialNumber.SequenceEqual(test) == false) { throw new FormatException("bank slot reencode mismatch"); } if (slot is BaseWeapon) { var viewModel = new BaseWeaponViewModel((BaseWeapon)slot); this.Slots.Add(viewModel); } else if (slot is BaseItem) { var viewModel = new BaseItemViewModel((BaseItem)slot); this.Slots.Add(viewModel); } } }
public void ExportData(WillowTwoPlayerSaveGame saveGame) { saveGame.BankSlots.Clear(); foreach (var viewModel in this.Slots) { var slot = viewModel.BaseSlot; if (slot is BaseWeapon) { var weapon = (BaseWeapon)slot; var data = BaseDataHelper.Encode(weapon); saveGame.BankSlots.Add(new BankSlot() { Data = data, }); } else if (slot is BaseItem) { var item = (BaseItem)slot; var data = BaseDataHelper.Encode(item); saveGame.BankSlots.Add(new BankSlot() { Data = data, }); } else { throw new NotSupportedException(); } } }
public IEnumerable <IResult> CopySelectedSlotCode() { yield return(new DelegateResult(() => { if (this.SelectedSlot == null || (this.SelectedSlot.BaseSlot is IPackable) == false) { if (MyClipboard.SetText("") != MyClipboard.Result.Success) { MessageBox.Show("Clipboard failure.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } return; } // just a hack until I add a way to override the unique ID in Encode() var copy = (IPackable)this.SelectedSlot.BaseSlot.Clone(); copy.UniqueId = 0; var data = BaseDataHelper.Encode(copy); var sb = new StringBuilder(); sb.Append("BL2("); sb.Append(Convert.ToBase64String(data, Base64FormattingOptions.None)); sb.Append(")"); if (MyClipboard.SetText(sb.ToString()) != MyClipboard.Result.Success) { MessageBox.Show("Clipboard failure.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } })); }
public void ImportData(WillowTwoPlayerSaveGame saveGame) { this.Slots.Clear(); foreach (var bankSlot in saveGame.BankSlots) { var slot = BaseDataHelper.Decode(bankSlot.Data); var test = BaseDataHelper.Encode(slot); if (bankSlot.Data.SequenceEqual(test) == false) { throw new FormatException("bank slot reencode mismatch"); } if (slot is BaseWeapon) { var viewModel = new BaseWeaponViewModel((BaseWeapon)slot); this.Slots.Add(viewModel); } else if (slot is BaseItem) { var viewModel = new BaseItemViewModel((BaseItem)slot); this.Slots.Add(viewModel); } } }
public void ExportData(WillowTwoPlayerSaveGame saveGame, Platform platform) { saveGame.BankSlots.Clear(); foreach (var viewModel in this.Slots) { var slot = viewModel.BaseSlot; if (slot is BaseWeapon weapon) { var data = BaseDataHelper.Encode(weapon, platform); saveGame.BankSlots.Add(new BankSlot() { InventorySerialNumber = data, }); } else if (slot is BaseItem item) { var data = BaseDataHelper.Encode(item, platform); saveGame.BankSlots.Add(new BankSlot() { InventorySerialNumber = data, }); } else { throw new NotSupportedException(); } } this._BrokenSlots.ForEach(kv => saveGame.BankSlots.Add(kv.Key)); }