Skip to content

Commit e8c6b7b

Browse files
committed
Merge branch 'master' of github.com:uoinfusion/Infusion
2 parents 94246f0 + bcdfb37 commit e8c6b7b

8 files changed

+90
-3
lines changed

Infusion.LegacyApi/Legacy.cs

+6
Original file line numberDiff line numberDiff line change
@@ -666,6 +666,12 @@ public void CloseGump()
666666
gumpObservers.CloseGump();
667667
}
668668

669+
public void SellItems(ObjectId vendor, SellListItem[] items)
670+
{
671+
NotifyAction();
672+
Server.SellItems(vendor, items);
673+
}
674+
669675
public void Wear(ObjectId id, Layer layer)
670676
{
671677
NotifyAction();

Infusion.LegacyApi/UO.cs

+3
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,9 @@ public static void LastGumpInfo()
246246
public static void CloseGump()
247247
=> Current.CloseGump();
248248

249+
public static void SellItems(ObjectId vendor, params SellListItem[] items)
250+
=> Current.SellItems(vendor, items);
251+
249252
public static void Wear(ObjectId id, Layer layer)
250253
=> Current.Wear(id, layer);
251254

Infusion/ClientPacketHandler.cs

+2
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ public void Unsubscribe<TPacket>(PacketDefinition<TPacket> definition, Action<TP
7373
packetHandler.Publish<LoginRequest>(rawPacket);
7474
else if (rawPacket.Id == PacketDefinitions.GameServerLoginRequest.Id)
7575
packetHandler.Publish<GameServerLoginRequest>(rawPacket);
76+
else if (rawPacket.Id == PacketDefinitions.SellRequest.Id)
77+
packetHandler.Publish<SellRequest>(rawPacket);
7678

7779
return rawPacket;
7880
}
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using Infusion.IO;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Text;
5+
6+
namespace Infusion.Packets.Client
7+
{
8+
internal sealed class SellRequest: MaterializedPacket
9+
{
10+
private Packet rawPacket;
11+
public override Packet RawPacket => rawPacket;
12+
public SellRequest()
13+
{
14+
15+
}
16+
17+
public SellRequest(ObjectId vendor, SellListItem[] list)
18+
{
19+
if (list == null || list.Length == 0)
20+
{
21+
return;
22+
}
23+
24+
ushort length = (ushort)(9 + list.Length * 6);
25+
byte[] payload = new byte[length];
26+
27+
var writer = new ArrayPacketWriter(payload);
28+
29+
writer.WriteByte((byte)PacketDefinitions.SellRequest.Id);
30+
writer.WriteUShort(length);
31+
writer.WriteUInt(vendor);
32+
writer.WriteUShort((ushort)list.Length);
33+
34+
foreach (var item in list)
35+
{
36+
writer.WriteUInt(item.Serial);
37+
writer.WriteUShort(item.Amount);
38+
}
39+
40+
41+
rawPacket = new Packet(PacketDefinitions.SellRequest.Id, payload);
42+
43+
}
44+
45+
public override void Deserialize(Packet rawPacket)
46+
{
47+
48+
}
49+
}
50+
51+
52+
}

Infusion/Packets/PacketDefinitionRegistryFactory.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ public static void CreateClassicClient(PacketDefinitionRegistry registry, Versio
242242
registry.Register(PacketDefinitions.MoveCharacter);
243243
registry.Register(PacketDefinitions.Unknown8F);
244244
registry.Register(PacketDefinitions.RequestHelp);
245-
registry.Register(PacketDefinitions.SellListReply);
245+
registry.Register(PacketDefinitions.SellRequest);
246246
registry.Register(PacketDefinitions.RequestTipNoticeWindow);
247247
registry.Register(PacketDefinitions.GumpTextEntryDialogReply);
248248
registry.Register(PacketDefinitions.GumpMenuSelection);

Infusion/Packets/PacketDefinitions.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -510,8 +510,8 @@ public static readonly PacketDefinition<ServerListingPacket> ServerListing
510510
public static readonly PacketDefinition SellList = new PacketDefinition(0x9E,
511511
new VariablePacketLength(), "SellList");
512512

513-
public static readonly PacketDefinition SellListReply = new PacketDefinition(0x9F,
514-
new VariablePacketLength(), "SellListReply");
513+
public static readonly PacketDefinition SellRequest = new PacketDefinition<SellRequest>(0x9F,
514+
new VariablePacketLength(), "SellRequest", () => new SellRequest());
515515

516516
public static readonly PacketDefinition<SelectServerRequest> SelectServerRequest
517517
= new PacketDefinition<SelectServerRequest>(0xA0, new StaticPacketLength(3), "SelectServerRequest", () => new Client.SelectServerRequest());

Infusion/SellListItem.cs

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace Infusion
6+
{
7+
public class SellListItem
8+
{
9+
public ObjectId Serial;
10+
public ushort Amount;
11+
12+
public SellListItem(ObjectId serial, ushort amount)
13+
{
14+
Serial = serial;
15+
Amount = amount;
16+
}
17+
}
18+
}

Infusion/UltimaServer.cs

+6
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,12 @@ public void CastSpell(Spell spell)
133133
Send(request.RawPacket);
134134
}
135135

136+
public void SellItems(ObjectId vendor, SellListItem[] items)
137+
{
138+
var request = new SellRequest(vendor, items);
139+
Send(request.RawPacket);
140+
}
141+
136142
public void UseSkill(Skill skill)
137143
{
138144
var request = new SkillRequest(skill);

0 commit comments

Comments
 (0)