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
ShopLoadedItem 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\Shop;
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 Lorekeeper\Core\World\Shop\MergeCost;
16use Psl\Option\Option;
17
18final readonly class ShopLoadedItem
19{
20    public Type\Category $category;
21
22    /**
23     * @param Option<ItemDescription> $description
24     * @param Option<ItemPrice> $price
25     * @param Option<Gamefile> $file
26     * @param Option<Linkage> $link
27     * @param Option<EquipmentSlot> $slot
28     * @param list<MergeCost> $costs
29     *
30     * @mago-expect lint:excessive-parameter-list
31     */
32    public function __construct(
33        public ItemId $id,
34        public ItemName $name,
35        public Type\Equipment|Type\Weapon|Type\House|Type\Misc $detail,
36        public Option $description,
37        public Option $price,
38        public Option $file,
39        public Option $link,
40        public Option $slot,
41        public bool $memberOnly,
42        public array $costs,
43    ) {
44        $this->category = $detail instanceof Type\Weapon ? $detail->parent()->parent() : $detail->parent();
45    }
46}