Lines 100.00% 3 / 3
Functions and Methods 100.00% 1 / 1
Classes and Traits 100.00% 1 / 1
Name Lines Functions and Methods CRAP Classes and Traits
MapArrivalEvent 100.00% 3 / 3 100.00% 1 / 1 3 100.00% 1 / 1
 read n/a 0 / 0 n/a 0 / 0 0
 from 100.00% 3 / 3 100.00% 1 / 1 3
1<?php
2
3declare(strict_types=1);
4
5namespace Lorekeeper\Server\Event\Map;
6
7use Lorekeeper\Server\Event\Event;
8use Lorekeeper\Server\Event\NamedAfterClass;
9use Lorekeeper\Server\Exception\MalformedEventException;
10use Lorekeeper\Server\Message\JsonMessage;
11use Lorekeeper\Server\Message\Message;
12use Override;
13use Psl\Option;
14
15abstract readonly class MapArrivalEvent implements Event
16{
17    use NamedAfterClass;
18
19    /**
20     * @param array<array-key, mixed> $data
21     *
22     * @throws MalformedEventException
23     */
24    abstract protected static function read(array $data): static;
25
26    /** @return Option\Option<static> */
27    #[Override]
28    final public static function from(Message $message): Option\Option
29    {
30        if (!$message instanceof JsonMessage || ($message->data['cmd'] ?? null) !== 'moveToArea') {
31            return Option\none();
32        }
33
34        return Option\some(static::read($message->data));
35    }
36}