feat(B.5): InteractRequests.BuildPickUp — PutItemInContainer 0x0019
TDD: failing test first (CS0117 on BuildPickUp + PutItemInContainerOpcode), then implementation. Wire layout matches ACE GameActionPutItemInContainer: 0xF7B1 envelope + seq + 0x0019 opcode + itemGuid + containerGuid + placement (24 bytes). For F-key ground-pickup, caller passes player's server guid as containerGuid; Task 2 (GameWindow wiring) will handle that dispatch. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
86440ff04a
commit
e8a20f26c7
2 changed files with 57 additions and 0 deletions
|
|
@ -42,4 +42,28 @@ public sealed class InteractRequestsTests
|
|||
Assert.Equal(InteractRequests.TeleToLifestoneOpcode,
|
||||
BinaryPrimitives.ReadUInt32LittleEndian(body.AsSpan(8)));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildPickUp_WritesOpcode0x0019AndPayload()
|
||||
{
|
||||
byte[] body = InteractRequests.BuildPickUp(
|
||||
gameActionSequence: 5,
|
||||
itemGuid: 0xABCDu,
|
||||
containerGuid: 0x5000000Au,
|
||||
placement: 0);
|
||||
|
||||
Assert.Equal(24, body.Length);
|
||||
Assert.Equal(InteractRequests.GameActionEnvelope,
|
||||
BinaryPrimitives.ReadUInt32LittleEndian(body.AsSpan(0)));
|
||||
Assert.Equal(5u,
|
||||
BinaryPrimitives.ReadUInt32LittleEndian(body.AsSpan(4)));
|
||||
Assert.Equal(InteractRequests.PutItemInContainerOpcode,
|
||||
BinaryPrimitives.ReadUInt32LittleEndian(body.AsSpan(8)));
|
||||
Assert.Equal(0xABCDu,
|
||||
BinaryPrimitives.ReadUInt32LittleEndian(body.AsSpan(12)));
|
||||
Assert.Equal(0x5000000Au,
|
||||
BinaryPrimitives.ReadUInt32LittleEndian(body.AsSpan(16)));
|
||||
Assert.Equal(0,
|
||||
BinaryPrimitives.ReadInt32LittleEndian(body.AsSpan(20)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue