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);
                }
            }
        }
Ejemplo n.º 2
0
        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();
                }
            }
        }
Ejemplo n.º 3
0
        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);
                }
            }));
        }
Ejemplo n.º 4
0
        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));
        }