Completed
Push — master ( cac559...b1b643 )
by De Cramer
12s
created

PlayerDataProvider::onPlayerDisconnect()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 5
cts 5
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 2
crap 1
1
<?php
2
3
namespace eXpansion\Core\DataProviders;
4
5
use eXpansion\Core\Storage\PlayerStorage;
6
use Maniaplanet\DedicatedServer\Connection;
7
use Maniaplanet\DedicatedServer\Structures\PlayerInfo;
8
9
/**
10
 * Class PlayerDataProvider provides information to plugins about what is going on with players.
11
 *
12
 * @package eXpansion\Core\DataProviders
13
 */
14
class PlayerDataProvider extends AbstractDataProvider
15
{
16
    /**
17
     * @var PlayerStorage
18
     */
19
    protected $playerStorage;
20
21
    /**
22
     * @var Connection
23
     */
24
    protected $connection;
25
26
    /**
27
     * PlayerDataProvider constructor.
28
     * @param $playerStorage
29
     */
30 7
    public function __construct(PlayerStorage $playerStorage, Connection $connection)
31
    {
32 7
        $this->playerStorage = $playerStorage;
33 7
        $this->connection = $connection;
34 7
    }
35
36
    /**
37
     * Called when eXpansion is started.
38
     */
39 1
    public function onRun()
40
    {
41 1
        $infos = $this->connection->getPlayerList(-1, 0);
42 1
        foreach ($infos as $info) {
43 1
            $this->onPlayerConnect($info->login);
44 1
        }
45 1
    }
46
47
    /**
48
     * Called when a player connects
49
     *
50
     * @param string $login
51
     * @param bool $isSpectator
52
     */
53 3
    public function onPlayerConnect($login, $isSpectator = false)
0 ignored issues
show
Unused Code introduced by
The parameter $isSpectator is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
54
    {
55
        try {
56 3
            $playerData = $this->playerStorage->getPlayerInfo($login);
57 3
        } catch (\Exception $e) {
58
            // TODO log that player disconnected very fast.
59 1
            return;
60
        }
61
62 2
        $this->playerStorage->onPlayerConnect($playerData);
63 2
        $this->dispatch(__FUNCTION__, [$playerData]);
64 2
    }
65
66
    /**
67
     * Called when a player disconnects
68
     *
69
     * @param $login
70
     * @param $disconnectionReason
71
     */
72 1
    public function onPlayerDisconnect($login, $disconnectionReason)
73
    {
74 1
        $playerData = $this->playerStorage->getPlayerInfo($login);
75 1
        $this->playerStorage->onPlayerDisconnect($playerData, $disconnectionReason);
76
77 1
        $this->dispatch(__FUNCTION__, [$playerData, $disconnectionReason]);
78 1
    }
79
80
    /**
81
     * When user information changes (changes from spec to player...)
82
     *
83
     * @param PlayerInfo $playerInfo
84
     */
85 1
    public function onPlayerInfoChanged($playerInfo)
86
    {
87 1
        $playerData = $this->playerStorage->getPlayerInfo($playerInfo['Login']);
88
89 1
        $newPlayerData = clone $playerData;
90 1
        $newPlayerData->merge($playerInfo);
91
92 1
        $this->playerStorage->onPlayerInfoChanged($playerData, $newPlayerData);
93 1
        $this->dispatch(__FUNCTION__, [$playerData, $newPlayerData]);
94 1
    }
95
96
    /**
97
     * When player changes allies.
98
     *
99
     */
100 1
    public function onPlayerAlliesChanged($login)
101
    {
102 1
        $newPlayerData = $this->playerStorage->getPlayerInfo($login, true);
103 1
        $playerData = $this->playerStorage->getPlayerInfo($login);
104
105 1
        $this->playerStorage->onPlayerAlliesChanged($playerData, $newPlayerData);
106 1
        $this->dispatch(__FUNCTION__, [$playerData, $newPlayerData]);
107
    }
108
}