Lines 100.00% 1 / 1
Functions and Methods 100.00% 1 / 1
Classes and Traits 100.00% 1 / 1
Name Lines Functions and Methods CRAP Classes and Traits
InventoryItem 100.00% 1 / 1 100.00% 1 / 1 2 100.00% 1 / 1
 __construct 100.00% 1 / 1 100.00% 1 / 1 2
1<?php
2
3declare(strict_types=1);
4
5namespace Lorekeeper\Server\Event\Inventory;
6
7use Lorekeeper\Core\Asset\Gamefile;
8use Lorekeeper\Core\Asset\Linkage;
9use Lorekeeper\Core\Item\EquipmentSlot;
10use Lorekeeper\Core\Item\ItemDescription;
11use Lorekeeper\Core\Item\ItemId;
12use Lorekeeper\Core\Item\ItemName;
13use Lorekeeper\Core\Item\ItemPrice;
14use Lorekeeper\Core\Item\Type;
15use Psl\Option\Option;
16
17final readonly class InventoryItem
18{
19    public Type\Category $category;
20
21    /**
22     * @param Option<ItemDescription> $description
23     * @param Option<ItemPrice> $price
24     * @param Option<Gamefile> $file
25     * @param Option<Linkage> $link
26     * @param Option<EquipmentSlot> $slot
27     *
28     * @mago-expect lint:excessive-parameter-list
29     */
30    public function __construct(
31        public ItemId $id,
32        public ItemName $name,
33        public Type\Equipment|Type\Weapon|Type\House|Type\Misc $detail,
34        public Option $description,
35        public Option $price,
36        public Option $file,
37        public Option $link,
38        public Option $slot,
39        public bool $memberOnly,
40    ) {
41        $this->category = $detail instanceof Type\Weapon ? $detail->parent()->parent() : $detail->parent();
42    }
43}