Lines 100.00% 9 / 9
Methods 100.00% 1 / 1
Classes 100.00% 1 / 1
Name Lines Methods CRAP
 recognize 100.00% 9 / 9 100.00% 1 / 1 4
45final readonly class Events
46{
47    /** @var non-empty-list<class-string<Event>> */
48    public const array ALL = [
49        ActionTooSoonEvent::class,
50        AttackRejectedEvent::class,
51        ClassChangedEvent::class,
52        MonsterRespawnedEvent::class,
53        MonsterRewardedEvent::class,
54        MonstersDiedEvent::class,
55        MonstersHealthChangedEvent::class,
56        LeveledUpEvent::class,
57        PlayersHealthChangedEvent::class,
58        PlayersManaChangedEvent::class,
59        PlayersStateChangedEvent::class,
60        PlayerDiedEvent::class,
61        ResurrectedEvent::class,
62        SkillsLoadedEvent::class,
63        ConnectionEstablishedEvent::class,
64        PlayerInventoryLoadedEvent::class,
65        ItemEquippedEvent::class,
66        ItemUnequippedEvent::class,
67        ItemUnwornEvent::class,
68        ItemWornEvent::class,
69        LoginFailedEvent::class,
70        LoginSucceededEvent::class,
71        AlreadyInMapEvent::class,
72        MapLockedEvent::class,
73        MapMemberOnlyEvent::class,
74        MapNotAvailableEvent::class,
75        MapRequiresQuestEvent::class,
76        MovedToMapEvent::class,
77        RoomJoinedEvent::class,
78        PlayerEnteredEvent::class,
79        PlayerLeftEvent::class,
80        PlayerUpdatedEvent::class,
81        PlayerAwayUpdatedEvent::class,
82        PlayerVitalsUpdatedEvent::class,
83        QuestLoadedEvent::class,
84        ShopLoadedEvent::class,
85    ];
86
87    /** @return list<Event|MalformedEventException> */
88    public static function recognize(Message $message): array
89    {
90        $recognized = [];
91
92        foreach (self::ALL as $event) {
93            try {
94                /** @mago-expect analysis:possibly-static-access-on-interface */
95                $heard = $event::from($message);
96            } catch (MalformedEventException $malformed) {
97                $recognized[] = $malformed;
98
99                continue;
100            }
101
102            if ($heard->isSome()) {
103                $recognized[] = $heard->unwrap();
104            }
105        }
106
107        return $recognized;
108    }
109}