Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
17 / 17
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
ItemEquippedEvent
100.00% covered (success)
100.00%
17 / 17
100.00% covered (success)
100.00%
2 / 2
6
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 from
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
5
1<?php
2
3declare(strict_types=1);
4
5namespace AqwSocketClient\Events;
6
7use AqwSocketClient\Enums\EquipmentSlot;
8use AqwSocketClient\Enums\JsonMessageType;
9use AqwSocketClient\Interfaces\EventInterface;
10use AqwSocketClient\Interfaces\MessageInterface;
11use AqwSocketClient\Messages\JsonMessage;
12use AqwSocketClient\Objects\GameFileMetadata;
13use AqwSocketClient\Objects\Identifiers\ItemIdentifier;
14use AqwSocketClient\Objects\Identifiers\SocketIdentifier;
15use AqwSocketClient\Objects\Item\EquippedItem;
16use Override;
17
18final class ItemEquippedEvent implements EventInterface
19{
20    public function __construct(
21        public readonly SocketIdentifier $socketId,
22        public readonly EquippedItem $item,
23    ) {}
24
25    /**
26     * @return ?ItemEquippedEvent
27     */
28    #[Override]
29    public static function from(MessageInterface $message): ?EventInterface
30    {
31        if (!($message instanceof JsonMessage && $message->type === JsonMessageType::EquipItem)) {
32            return null;
33        }
34
35        $data = $message->data;
36        $slot = EquipmentSlot::tryFrom((string) $data['strES']);
37
38        if ($slot === null) {
39            return null;
40        }
41
42        $boost = $data['sMeta'] ?? null;
43
44        return new self(
45            new SocketIdentifier((int) $data['uid']),
46            new EquippedItem(
47                new ItemIdentifier((int) $data['ItemID']),
48                $slot,
49                new GameFileMetadata((string) $data['sLink'], (string) $data['sFile']),
50                $boost !== null ? (string) $boost : null,
51            ),
52        );
53    }
54}