|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
/** |
|
4
|
|
|
* Created by Gorlum 08.01.2018 13:23 |
|
5
|
|
|
*/ |
|
6
|
|
|
|
|
7
|
|
|
namespace Unit; |
|
8
|
|
|
|
|
9
|
|
|
use DBAL\db_mysql; |
|
10
|
|
|
use \SN; |
|
|
|
|
|
|
11
|
|
|
use Planet\Planet; |
|
12
|
|
|
|
|
13
|
|
|
class Governor extends Unit { |
|
14
|
|
|
// protected $type = UNIT_GOVERNOR_PRIMARY; |
|
15
|
|
|
// protected $typeIdField = 'PLANET_GOVERNOR_ID'; |
|
16
|
|
|
// protected $typeLevelField = 'PLANET_GOVERNOR_LEVEL'; |
|
17
|
|
|
|
|
18
|
|
|
protected $snId = 0; |
|
19
|
|
|
protected $level = 0; |
|
20
|
|
|
|
|
21
|
|
|
/** |
|
22
|
|
|
* @var RecordUnit $unit |
|
23
|
|
|
*/ |
|
24
|
|
|
protected $unit; |
|
25
|
|
|
|
|
26
|
|
|
/** |
|
27
|
|
|
* @var Planet $planet |
|
28
|
|
|
*/ |
|
29
|
|
|
protected $planet; |
|
30
|
|
|
|
|
31
|
|
|
/** |
|
32
|
|
|
* Governor constructor. |
|
33
|
|
|
*/ |
|
34
|
|
|
public function __construct() { |
|
35
|
|
|
$this->reset(); |
|
36
|
|
|
} |
|
37
|
|
|
|
|
38
|
|
|
/** |
|
39
|
|
|
* @param Planet $planet |
|
40
|
|
|
*/ |
|
41
|
|
|
public function setPlanet($planet) { |
|
42
|
|
|
$this->reset(); |
|
43
|
|
|
|
|
44
|
|
|
$this->planet = $planet; |
|
45
|
|
|
$this->getExternalData(); |
|
46
|
|
|
} |
|
47
|
|
|
|
|
48
|
|
|
/** |
|
49
|
|
|
* @param int $hireId - Hire unit SN ID |
|
50
|
|
|
*/ |
|
51
|
|
|
public function hire($hireId) { |
|
52
|
|
|
if (!in_array($hireId, sn_get_groups('governors'))) { |
|
53
|
|
|
return; |
|
54
|
|
|
} |
|
55
|
|
|
|
|
56
|
|
|
if ($hireId == $this->getSnId() && $this->getMaxLevel() && $this->getMaxLevel() >= $this->getLevel()) { |
|
57
|
|
|
return; |
|
58
|
|
|
} |
|
59
|
|
|
|
|
60
|
|
|
db_mysql::db_transaction_start(); |
|
61
|
|
|
$user = db_user_by_id($this->planet->id_owner, true); |
|
|
|
|
|
|
62
|
|
|
// $this->planetRow = Planet\DBStaticPlanet::db_planet_by_id($this->planet->id, true); |
|
63
|
|
|
// $build_data = eco_get_build_data($user, $this->planetRow, $hireId, $this->getId() == $hireId ? $this->getLevel() : 0); |
|
64
|
|
|
$this->planet->dbLoadRecord($this->planet->id); |
|
65
|
|
|
|
|
66
|
|
|
$build_data = eco_get_build_data($user, $this->planet->asArray(), $hireId, $this->getSnId() == $hireId ? $this->getLevel() : 0); |
|
67
|
|
|
if ( |
|
68
|
|
|
$build_data['CAN'][BUILD_CREATE] |
|
69
|
|
|
&& |
|
70
|
|
|
mrc_get_level($user, [], RES_DARK_MATTER) >= $build_data[BUILD_CREATE][RES_DARK_MATTER] |
|
71
|
|
|
&& |
|
72
|
|
|
rpg_points_change( |
|
73
|
|
|
$user['id'], |
|
74
|
|
|
RPG_GOVERNOR, |
|
75
|
|
|
-$build_data[BUILD_CREATE][RES_DARK_MATTER], |
|
76
|
|
|
sprintf(SN::$lang['ov_governor_purchase'], |
|
77
|
|
|
SN::$lang['tech'][$hireId], |
|
78
|
|
|
$hireId, |
|
79
|
|
|
$this->level, |
|
80
|
|
|
uni_render_planet_object_full($this->planet, false, true) |
|
81
|
|
|
) |
|
82
|
|
|
) |
|
83
|
|
|
) { |
|
84
|
|
|
$this->addLevel($hireId); |
|
85
|
|
|
$this->planet->update(); |
|
86
|
|
|
} |
|
87
|
|
|
db_mysql::db_transaction_commit(); |
|
88
|
|
|
} |
|
89
|
|
|
|
|
90
|
|
|
|
|
91
|
|
|
/** |
|
92
|
|
|
* @return int |
|
93
|
|
|
*/ |
|
94
|
|
|
public function getSnId() { |
|
95
|
|
|
return $this->snId; |
|
96
|
|
|
} |
|
97
|
|
|
|
|
98
|
|
|
/** |
|
99
|
|
|
* @return int |
|
100
|
|
|
*/ |
|
101
|
|
|
public function getLevel() { |
|
102
|
|
|
return $this->level; |
|
103
|
|
|
} |
|
104
|
|
|
|
|
105
|
|
|
/** |
|
106
|
|
|
* @return int |
|
107
|
|
|
*/ |
|
108
|
|
|
public function getMaxLevel() { |
|
109
|
|
|
$snId = $this->getSnId(); |
|
110
|
|
|
return !empty($snId) ? get_unit_param($snId, P_MAX_STACK) : 0; |
|
111
|
|
|
} |
|
112
|
|
|
|
|
113
|
|
|
/** |
|
114
|
|
|
* @param $hireId |
|
115
|
|
|
*/ |
|
116
|
|
|
protected function addLevel($hireId) { |
|
117
|
|
|
if ($this->getSnId() == $hireId) { |
|
118
|
|
|
$this->level++; |
|
119
|
|
|
} else { |
|
120
|
|
|
$this->level = 1; |
|
121
|
|
|
} |
|
122
|
|
|
|
|
123
|
|
|
$this->snId = $hireId; |
|
124
|
|
|
|
|
125
|
|
|
$this->setExternalData(); |
|
126
|
|
|
} |
|
127
|
|
|
|
|
128
|
|
|
|
|
129
|
|
|
protected function reset() { |
|
130
|
|
|
unset($this->unit); |
|
131
|
|
|
$this->planet = null; |
|
132
|
|
|
|
|
133
|
|
|
$this->snId = 0; |
|
134
|
|
|
$this->level = 0; |
|
135
|
|
|
} |
|
136
|
|
|
|
|
137
|
|
|
/** |
|
138
|
|
|
* Sets data on external sources from internal properties |
|
139
|
|
|
*/ |
|
140
|
|
|
protected function setExternalData() { |
|
141
|
|
|
$this->planet->PLANET_GOVERNOR_ID = $this->getSnId(); |
|
142
|
|
|
$this->planet->PLANET_GOVERNOR_LEVEL = $this->level; |
|
143
|
|
|
} |
|
144
|
|
|
|
|
145
|
|
|
/** |
|
146
|
|
|
* Loads some data from external sources |
|
147
|
|
|
*/ |
|
148
|
|
|
protected function getExternalData() { |
|
149
|
|
|
$this->snId = !empty($this->planet->PLANET_GOVERNOR_ID) ? intval($this->planet->PLANET_GOVERNOR_ID) : 0; |
|
150
|
|
|
$this->level = !empty($this->planet->PLANET_GOVERNOR_LEVEL) ? intval($this->planet->PLANET_GOVERNOR_LEVEL) : 0; |
|
151
|
|
|
} |
|
152
|
|
|
|
|
153
|
|
|
} |
|
154
|
|
|
|
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths