[редактировать]

Score

  • class Score (action\Score)
use action\Score;

Утилитный класс только со статичными методами, для более удобного управления счетом в играх и не только. Очень часто возникает необходимость сделать подсчет бонусов и жизней в играх, это могут быть монетки, которые добавляют очки, одновременно необходимо считать и жизни персонажа в игре. Все это позволяет сделать данный класс.

У класса приватный конструктор, невозможно создать объект данного класса.


Статичные методы


set()

set(string $name, int $value)

Устанавливает новое значение счету, под названием $name. У каждого счета всегда должно быть название в виде символьного кода.

// установили money (деньги) в размере 2000.
Score::set('money', 2000);

get()

get(string $name): int

Метод возвращает значение счета $name, оно всегда возвращается в виде целого числа.

$this->moneyLabel->text = Score::get('money');

inc()

inc(string $name, int $value = 1)

Метод увеличивает счет $name на 1 или переданное значение $value. Для того, чтобы уменьшить значение, вы можете использовать этот же метод, достаточно передать $value в виде отрицательного числа, например -1.

Score::inc('money'); // добавить 1
Score::inc('money', 100); // добавить 100
Score::inc('money', -1); // уменьшить на 1
Score::inc('money', -100); // уменьшить на 100

on()

Score::on(string $eventType, callable $handler, $group = 'general')

Метод доступен начиная с DevelNext 16.6.0.

Метод позволяет подписаться на события изменения счета с помощью хендлера $handler. Доступно 2 вида событий $eventType:

  • beforeChange - перед изменением счета, когда еще сохраняется старое значение счета.
  • afterChange - после изменения счета, когда значение счета поменялось на новое.
Scoree::on('beforeChange', function ($name, $oldValue, $newValue) {
     // $name - название счета
     // $oldValue - старое значение счета
     // $newValue - новое значение счета
});

Возможно прервать изменение счета если вернуть из функции beforeChange значение false (строго boolean типа).

// Максимальное значение всех счетов ограничили до 30 ...
Scoree::on('beforeChange', function ($name, $oldValue, $newValue) {
     if ($newValue > 30) {
        Score::set($name, 30);
        return false;
     }
});