Beispiel #1
0
        public bool TransferToOpenStash(PlayerItem pi)
        {
            List <byte> buffer   = ItemInjectCallbackProcessor.Serialize(pi);
            var         stashTab = Properties.Settings.Default.StashToDepositTo;

            if (stashTab == 0)
            {
                // Find real tab.. Related to hotfix v1.0.4.0
                stashTab = TransferStashService.GetNumStashPages(GetTransferFile());
            }

            var position = _dynamicPacker.Insert(pi.BaseRecord, (uint)pi.Seed);

            if (position == null)
            {
                _logger.Warn("Item insert canceled, no valid position found.");
                _setFeedback(GlobalSettings.Language.GetTag("iatag_deposit_stash_full"));
                return(false);
            }
            buffer.InsertRange(0, BitConverter.GetBytes(position.X * 32));
            buffer.InsertRange(4, BitConverter.GetBytes(position.Y * 32));
            buffer.InsertRange(0, BitConverter.GetBytes(stashTab));

            using (NamedPipeClientStream pipeStream = new NamedPipeClientStream(".", "gdiahook", PipeDirection.InOut, PipeOptions.Asynchronous))
            {
                // The connect function will indefinitely wait for the pipe to become available
                // If that is not acceptable specify a maximum waiting time (in ms)
                try
                {
                    pipeStream.Connect(250);
                }
                catch (TimeoutException)
                {
                    return(false);
                }

                pipeStream.Write(buffer.ToArray(), 0, buffer.Count);
                _logger.Debug("Wrote item to pipe");
                _setFeedback(GlobalSettings.Language.GetTag("iatag_deposit_pipe_success"));
            }

            return(true);
        }
        public void TestCanSerializeEmptyStrings()
        {
            Random     r  = new Random();
            PlayerItem pi = new PlayerItem {
                Seed                       = (uint)r.Next(),
                RelicSeed                  = (uint)r.Next(),
                UNKNOWN                    = (uint)r.Next(),
                EnchantmentSeed            = (uint)r.Next(),
                MateriaCombines            = (uint)r.Next(),
                StackCount                 = (uint)r.Next(1, 100),
                BaseRecord                 = string.Empty,
                PrefixRecord               = string.Empty,
                SuffixRecord               = string.Empty,
                ModifierRecord             = string.Empty,
                MateriaRecord              = string.Empty,
                RelicCompletionBonusRecord = string.Empty,
                EnchantmentRecord          = string.Empty,
                TransmuteRecord            = string.Empty,
            };

            List <byte> serialized   = ItemInjectCallbackProcessor.Serialize(pi);
            PlayerItem  deserialized = ItemInjectCallbackProcessor.Deserialize(serialized.ToArray());

            pi.Seed.Should().Be.EqualTo(deserialized.Seed);
            pi.RelicSeed.Should().Be.EqualTo(deserialized.RelicSeed);
            pi.UNKNOWN.Should().Be.EqualTo(deserialized.UNKNOWN);
            pi.EnchantmentSeed.Should().Be.EqualTo(deserialized.EnchantmentSeed);
            pi.MateriaCombines.Should().Be.EqualTo(deserialized.MateriaCombines);
            pi.StackCount.Should().Be.EqualTo(deserialized.StackCount);

            pi.BaseRecord.Should().Be.EqualTo(deserialized.BaseRecord);
            pi.PrefixRecord.Should().Be.EqualTo(deserialized.PrefixRecord);
            pi.SuffixRecord.Should().Be.EqualTo(deserialized.SuffixRecord);
            pi.ModifierRecord.Should().Be.EqualTo(deserialized.ModifierRecord);
            pi.MateriaRecord.Should().Be.EqualTo(deserialized.MateriaRecord);
            pi.RelicCompletionBonusRecord.Should().Be.EqualTo(deserialized.RelicCompletionBonusRecord);
            pi.EnchantmentRecord.Should().Be.EqualTo(deserialized.EnchantmentRecord);
            pi.TransmuteRecord.Should().Be.EqualTo(deserialized.TransmuteRecord);
        }