Score
- class
Score
(action\Score
)
use action\Score;
Утилитный класс только со статичными методами, для более удобного управления счетом в играх и не только. Очень часто возникает необходимость сделать подсчет бонусов и жизней в играх, это могут быть монетки, которые добавляют очки, одновременно необходимо считать и жизни персонажа в игре. Все это позволяет сделать данный класс.
У класса приватный конструктор, невозможно создать объект данного класса.
Статичные методы
Score ::
set()
Score ::
get()
Score ::
inc()
Score ::
on()
Score ::
off()
Score ::
bind()
Score ::
trigger()
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;
}
});