Optimising Stat()::class.

This commit is contained in:
2024-01-16 09:13:15 +02:00
parent 68ef35d14a
commit 7dc27047b6
9 changed files with 43 additions and 65 deletions
+7 -8
View File
@@ -18,6 +18,7 @@ class InfoBox
public function __construct(private readonly User $user, private readonly Stat $statname = new Stat())
{
$this->info = $user->info;
$this->statname->getBonus();
}
public function getInfoPers($uid, $i1, $sn = 0, $ivv = 0): array
@@ -384,17 +385,16 @@ class InfoBox
//Действие эффекта
$tr = '';
$t = array_keys($this->statname->getBonusNames());
$x = 0;
$ed = Conversion::dataStringToArray($e['data']);
while ($x < count($t)) {
$n = $t[$x];
while ($x < count($this->statname->sysBonusNames)) {
$n = $this->statname->sysBonusNames[$x];
if (isset($ed['add_' . $n])) {
$z = '';
if ($ed['add_' . $n] > 0) {
$z = '+';
}
$tr .= '<br>' . $this->statname->getBonusNames()[$n] . ': ' . $z . $ed['add_' . $n];
$tr .= '<br>' . $this->statname->bonusNames[$n] . ': ' . $z . $ed['add_' . $n];
}
$x++;
}
@@ -708,16 +708,15 @@ class InfoBox
$lvar .= '<br>Урон: ' . $po['sv_yron_min'] . '-' . $po['sv_yron_max'];
}
$t = array_keys($this->statname->getBonusNames());
$x = 0;
while ($x < count($t)) {
$n = $t[$x];
while ($x < count($this->statname->sysBonusNames)) {
$n = $this->statname->sysBonusNames[$x];
if (isset($po['add_' . $n])) {
$z = '+';
if ($po['add_' . $n] < 0) {
$z = '';
}
$lvar .= '<br>' . $this->statname->getBonusNames()[$n] . ': ' . $z . $po['add_' . $n];
$lvar .= '<br>' . $this->statname->bonusNames[$n] . ': ' . $z . $po['add_' . $n];
}
$x++;
}
+2 -1
View File
@@ -31,8 +31,9 @@ class Item
] = $item;
$this->durability = $iMax - $iNow;
$stat = new Stat();
$stat->getBonus();
$dataArr = Conversion::dataStringToArray(strtolower($this->data));
foreach (array_keys($stat->getBonusNames()) as $bonusName) {
foreach ($stat->sysBonusNames as $bonusName) {
if (!isset($dataArr["add_$bonusName"])) {
continue;
}
+10 -15
View File
@@ -14,16 +14,17 @@ class Stats
private User $u;
/** Список разрешённых для бонусов системных названий статов
* @var array
* @var Stat
*/
private array $sysNames;
private Stat $sysNames;
private array $statsKeys = [];
public function __construct(User $user)
{
$this->u = $user;
$this->sysNames = (new Stat())->getBonusNames();
$this->sysNames = new Stat();
$this->sysNames->getBonus();
}
@@ -137,7 +138,8 @@ class Stats
}
// Как? Нахуя 4 переменные разные для одного и того же?
$st = array_fill_keys(array_keys($this->sysNames), 0);
$st = array_fill_keys($this->sysNames->sysBonusNames, 0);
$sti = $st;
$s_v = $st;
$s_vi = $st;
@@ -310,7 +312,7 @@ class Stats
}
$sti = Conversion::dataStringToArray($com);
foreach ($this->sysNames as $stat) {
foreach ($this->sysNames->sysBonusNames as $stat) {
if (!isset($sti[$stat])) {
continue;
}
@@ -596,7 +598,7 @@ class Stats
//Добавляем статы от данного предмета
if (!isset($data['restart_stats'])) {
foreach ($this->sysNames as $stat) {
foreach ($this->sysNames->sysBonusNames as $stat) {
if (!isset($data['add_' . $stat])) {
continue;
}
@@ -605,13 +607,6 @@ class Stats
} else {
$reitm[] = $data;
}
foreach ($this->sysNames as $stat) {
if (!isset($data['sv_' . $stat])) {
continue;
}
$s_v[$stat] += (int)$data['sv_' . $stat];
}
}
//Сохраненные хар-ки и умения
@@ -662,7 +657,7 @@ class Stats
foreach ($efs as $data) {
$sts = Conversion::dataStringToArray($data);
foreach ($sts as $paramName => $value) {
if (!in_array($paramName, $this->sysNames, true)) { // есть ли параметр в разрешенных?
if (!in_array($paramName, $this->sysNames->sysBonusNames, true)) { // есть ли параметр в разрешенных?
continue;
}
$st[$paramName] += $value;
@@ -672,7 +667,7 @@ class Stats
private function addValuesToAllArrays(array $sts, array &$st, array &$sti, array &$s_v, array &$s_vi): void
{
foreach ($this->sysNames as $stat) {
foreach ($this->sysNames->sysBonusNames as $stat) {
if (!isset($sts['add_' . $stat])) {
continue;
}