Lines 100.00% 28 / 28
Methods 100.00% 1 / 1
Classes 100.00% 1 / 1
Name Lines Methods CRAP
 read 100.00% 28 / 28 100.00% 1 / 1 28
27final readonly class ItemKinds
28{
29    /**
30     * @param class-string<Event> $event
31     *
32     * @throws MalformedEventException
33     */
34    public static function read(ItemId $id, ItemName $name, string $type, string $event): Item
35    {
36        return match ($type) {
37            'Class' => new ClassItem($id, $name),
38            'Armor' => new Armor($id, $name),
39            'Helm' => new Helm($id, $name),
40            'Cape' => new Cape($id, $name),
41            'Pet' => new Pet($id, $name),
42            'Necklace' => new Necklace($id, $name),
43            'Misc' => new GroundItem($id, $name),
44            'Axe' => new Weapon($id, $name, WeaponType::Axe),
45            'Bow' => new Weapon($id, $name, WeaponType::Bow),
46            'Dagger' => new Weapon($id, $name, WeaponType::Dagger),
47            'Gauntlet' => new Weapon($id, $name, WeaponType::Gauntlet),
48            'Gun' => new Weapon($id, $name, WeaponType::Gun),
49            'HandGun' => new Weapon($id, $name, WeaponType::HandGun),
50            'Mace' => new Weapon($id, $name, WeaponType::Mace),
51            'Polearm' => new Weapon($id, $name, WeaponType::Polearm),
52            'Rifle' => new Weapon($id, $name, WeaponType::Rifle),
53            'Staff' => new Weapon($id, $name, WeaponType::Staff),
54            'Sword' => new Weapon($id, $name, WeaponType::Sword),
55            'Wand' => new Weapon($id, $name, WeaponType::Wand),
56            'Whip' => new Weapon($id, $name, WeaponType::Whip),
57            'Floor Item' => new HouseItem($id, $name, HouseItemType::Floor),
58            'Wall Item' => new HouseItem($id, $name, HouseItemType::Wall),
59            'House' => new HouseItem($id, $name, HouseItemType::House),
60            'ServerUse' => new Boost($id, $name),
61            'Enhancement' => new Enhancement($id, $name),
62            'Item', 'Note', 'Quest Item', 'Resource' => new Resource($id, $name),
63            default => throw new MalformedEventException($event, "unknown item type '{$type}'"),
64        };
65    }
66}