File "Keno.php"
Full Path: /home/trinadezambia/public_html/gambling/app/Games/Keno.php
File size: 2.64 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Games;
use App\Constants\Status;
class Keno extends Game {
protected $alias = 'keno';
protected $extraValidationRule = [
'choose' => 'required|array|min:1|max:80',
];
protected function gameResult() {
$probableWin = $this->demoPlay
? $this->game->probable_win_demo
: $this->game->probable_win;
$random = mt_rand(0, 100);
if ($random <= $probableWin) {
$winLossData['win_status'] = Status::WIN;
$winLossData['result'] = $this->request->choose;
} else {
$winLossData['win_status'] = Status::LOSS;
$winLossData['result'] = $this->request->choose;
}
$winAmount = 0;
$maxSelectNumber = $this->game?->level?->max_select_number;
if ($winLossData['win_status'] == 1) {
$getRandNumber = rand(4, $maxSelectNumber);
$getNewSlotNumber = array_slice($winLossData['result'], 0, $getRandNumber, true);
$matchNumber = $getNewSlotNumber;
while (count($getNewSlotNumber) < $maxSelectNumber) {
$randomValue = rand(1, 80);
if (!in_array($randomValue, $getNewSlotNumber) && !in_array($randomValue, $winLossData['result'])) {
array_push($getNewSlotNumber, (string) $randomValue);
}
}
$winLossData['result'] = $getNewSlotNumber;
$commission = array_reduce($this->game->level->levels, function ($carry, $element) use ($getRandNumber) {
if ((int) $element->level === $getRandNumber) {
$carry = $element->percent;
}
return $carry;
});
$winAmount = $this->request->invest + ($this->request->invest * $commission / 100);
} else {
$loseSlotNumber = [];
while (count($loseSlotNumber) < $maxSelectNumber) {
$randomValue = rand(1, 80);
if (!in_array($randomValue, $loseSlotNumber) && !in_array($randomValue, $winLossData['result'])) {
array_push($loseSlotNumber, (string) $randomValue);
}
}
$winLossData['result'] = $loseSlotNumber;
$matchNumber = [];
}
$winLossData['win_amount'] = $winAmount;
$this->userSelect = json_encode($this->request->choose);
$this->extraResponseOnStart = array_merge($this->extraResponseOnStart, [
'match_number' => $matchNumber,
'user_select' => $this->request->choose,
]);
return $winLossData;
}
}