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); }