Вход Регистрация
Файл: app/Http/Controllers/Api/ArenaController.php
Строк: 320
<?php

namespace AppHttpControllersApi;

use 
IlluminateHttpRequest;
use 
AppModelsUserModel;
use 
AppModelsArenaBattleModel;
use 
AppModelsArenaCardsModel;
use 
Auth;
use 
AppServicesServices;
use 
AppHttpControllersController;

class 
ArenaController extends Controller
{
    public function 
getIndexPage()
    {
        
$issetBattle ArenaBattleModel::where('user1'Auth::user()->id)->orWhere('user2'Auth::user()->id)->count();
        if(
$issetBattle == 0)
        {
            
$result 'Начать подбор противника!<br>
            <a href="/arena/find"  class="btn btn-games2 btn-block">Искать</a>'
;
            
$redirect 0;
        }
        else
        {
            
$battle ArenaBattleModel::where('user1'Auth::user()->id)->orWhere('user2'Auth::user()->id)->first();
            if(
$battle->user1 == Auth::user()->id$opponent $battle->user2;
            else 
$opponent $battle->user1;
            if(
$opponent == 0)
            {
                
$result 'Идёт поиск противника!<br>
                <a href="/arena/cancel" class="btn btn-games2 btn-block">Отменить поиск</a>'
;
                
$redirect 0;
            }
            else
            {
                if(
$battle->start_time time())
                {
                    
$battle->status 'card1_pick';
                    
$battle->save();
                    
$redirect '/arena/pick/1';
                }
                else 
$redirect 0;
                
$result 'Противник найден!<br>
                '
.($battle->start_time-time() > 'До начала боя: '.Services::timer($battle->start_time-time()).'<br>' 'Бой начался!<br>').'
                <a href="/arena/cancel" class="btn btn-games2 btn-block">Отменить поиск</a>'
;
            }
        }
        return 
response()->json(["result" => $result"redirect" => $redirect]);
    }

    public function 
getPickStatus($pick$battle$user)
    {
        
$status Services::getPickStatus($pick$battle$user);
        return 
response()->json(['status' => $status]);
    }

    public function 
redirectIfPicked($pick$battle$user1$user2)
    {
        
$user1Pick Services::getPickStatus($pick$battle$user1);
        
$user2Pick Services::getPickStatus($pick$battle$user2);
        return 
response()->json(['status' => (integer) $user1Pick && $user2Pick]);
    }

    public function 
attack($battle_id$card1$card2)
    {
        
$battle ArenaBattleModel::findOrFail($battle_id);
        if(
$battle->user1 != Auth::user()->id && $battle->user2 != Auth::user()->id) return response()->json(['status' => 'error''message' => 'Ошибка!']);
        
$myCard ArenaCardsModel::with('getCardUserInfo.getCardInfo')->findOrFail($card1);
        
$opponentCard ArenaCardsModel::with('getCardUserInfo.getCardInfo')->findOrFail($card2);
        if(
$myCard->user != Auth::user()->id) return response()->json(['status' => 'error''message' => 'Ошибка!']);
        if(
$battle->move != Auth::user()->id) return response()->json(['status' => 'error''message' => 'Ходит оппонент!']);
        if(
$battle->move == Auth::user()->id && $battle->move_time time()) return response()->json(['status' => 'error''message' => 'Ход завершён!']);
        if(
$opponentCard->health 0) return response()->json(['status' => 'error''message' => 'Карта уничтожена!']);
        if(
$myCard->health 0) return response()->json(['status' => 'error''message' => 'Карта уничтожена!']);
        if(
$myCard->moved == 1) return response()->json(['status' => 'error''message' => 'Ход этой картой уже сделан!']);
        
$damage 0;
        for(
$i=1;$i<=$myCard->getCardUserInfo->getCardInfo->attack_count;$i++)
        {
            
$damage += Services::getCardDamage(
                
$myCard->getCardUserInfo->getCardInfo->min_attack+Services::getUpgradeBonus($myCard->getCardUserInfo->getCardInfo->min_attack$myCard->getCardUserInfo->upgrade_level),
                
$myCard->getCardUserInfo->getCardInfo->max_attack+Services::getUpgradeBonus($myCard->getCardUserInfo->getCardInfo->max_attack$myCard->getCardUserInfo->upgrade_level),
                
$opponentCard->getCardUserInfo->getCardInfo->armor+Services::getUpgradeBonus($opponentCard->getCardUserInfo->getCardInfo->armor$opponentCard->getCardUserInfo->upgrade_level)
            );
        }
        
$opponentCard->health -= $damage;
        
$opponentCard->save();
        
$myCard->moved 1;
        
$myCard->save();
        return 
response()->json(['status' => 'ok''damage' => $damage'opponentCard' => $opponentCard->pick'myCard' => $myCard->pick]);
    }

    public function 
getMoveStatus($battle_id)
    {
        
$battle ArenaBattleModel::find($battle_id);
        if(
$battle == null) return response()->json(['status' => 5]);
        if(
$battle->user1 == Auth::user()->id)
        {
            
$opponent $battle->user2;
            
$myColumn 'user1_win';
            
$opponentColumn 'user2_win';
        }
        else
        {
            
$opponent $battle->user1;
            
$myColumn 'user2_win';
            
$opponentColumn 'user1_win';
        }
        
$myPick1 ArenaCardsModel::with('getCardUserInfo.getCardInfo')->where('battle'$battle_id)->where('user'Auth::user()->id)->where('pick'1)->first();
        
$myPick2 ArenaCardsModel::with('getCardUserInfo.getCardInfo')->where('battle'$battle_id)->where('user'Auth::user()->id)->where('pick'2)->first();
        
$opponentPick1 ArenaCardsModel::with('getCardUserInfo.getCardInfo')->where('battle'$battle_id)->where('user'$opponent)->where('pick'1)->first();
        
$opponentPick2 ArenaCardsModel::with('getCardUserInfo.getCardInfo')->where('battle'$battle_id)->where('user'$opponent)->where('pick'2)->first();
        if(
$battle->move == Auth::user()->id)
        {
            if(((
$myPick1->moved == || $myPick1->health <= 0) && ($myPick2->moved == || $myPick2->health <= 0)) || $battle->move_time time())
            {
                
$battle->move $opponent;
                
$battle->move_time time()+30;
                
$battle->save();
                
$myPick1->moved 0;
                
$myPick1->save();
                
$myPick2->moved 0;
                
$myPick2->save();
            }
        }
        else
        {
            if(((
$opponentPick1->moved == || $opponentPick1->health <= 0) && ($opponentPick2->moved == || $opponentPick2->health <= 0)) || $battle->move_time time())
            {
                
$battle->move Auth::user()->id;
                
$battle->move_time time()+30;
                
$battle->save();
                
$opponentPick1->moved 0;
                
$opponentPick1->save();
                
$opponentPick2->moved 0;
                
$opponentPick2->save();
            }
        }
        
$myAliveCards ArenaCardsModel::where('battle'$battle->id)->where('user'Auth::user()->id)->where('health''>''0')->count();
        
$opponentAliveCards ArenaCardsModel::where('battle'$battle->id)->where('user'$opponent)->where('health''>''0')->count();
        if(
$battle->status == 'battle') {
            if (
$myAliveCards == && $opponentAliveCards 0)
            {
                if(
$battle->winner_count == 0)
                {
                    
$battle->$opponentColumn++;
                    
$battle->winner_count 1;
                }
                
$battle->round++;
                
$battle->save();
                
Services::setArenaHealth($myPick1$myPick2$opponentPick1$opponentPick2$battle);
                return 
response()->json(['status' => 2'winner' => Services::userInfo($opponent)->login'roundNum' => $battle->round]);
            }
            elseif (
$myAliveCards && $opponentAliveCards == 0)
            {
                if(
$battle->winner_count == 0)
                {
                    
$battle->$myColumn++;
                    
$battle->winner_count 1;
                }
                
$battle->round++;
                
$battle->save();
                
Services::setArenaHealth($myPick1$myPick2$opponentPick1$opponentPick2$battle);
                return 
response()->json(['status' => 2'winner' => Services::userInfo(Auth::user()->id)->login'roundNum' => $battle->round]);
            }
            elseif (
$myAliveCards == && $opponentAliveCards == 0)
            {
                
$battle->round++;
                
$battle->save();
                
Services::setArenaHealth($myPick1$myPick2$opponentPick1$opponentPick2$battle);
                return 
response()->json(['status' => 3'roundNum' => $battle->round]);
            }
            else
            {
                if(
$battle->winner_count == 1)
                {
                    
$battle->winner_count 0;
                    
$battle->save();
                }
            }
            if (
$battle->user1_win >= || $battle->user2_win >= 3)
            {
                
$battle->status 'result';
                
$battle->save();
                
$winner $battle->user1_win >= $battle->user1 $battle->user2;
                return 
response()->json(['status' => 4'winner' => Services::userInfo($winner)->login'roundNum' => $battle->round]);
            }
        }
        if(
$battle->move != Auth::user()->id) return response()->json([
            
'status' => 0,
            
'health' => [
                 
'my1' => $myPick1->health $myPick1->health 0,
                 
'my2' => $myPick2->health $myPick2->health 0,
                 
'opp1' => $opponentPick1->health $opponentPick1->health 0,
                 
'opp2' => $opponentPick2->health $opponentPick2->health 0,
            ],
            
'moveTime' => (string) Services::timer($battle->move_time-time()),
            
'move' => Services::userInfo($battle->move)->login,
            
'roundNum' => $battle->round
        
]);
        return 
response()->json([
            
'status' => 1,
            
'pick1' => ($myPick1->health $myPick1->moved 1),
            
'pick2' => ($myPick2->health $myPick2->moved 1),
            
'health' => [
                 
'my1' => $myPick1->health $myPick1->health 0,
                 
'my2' => $myPick2->health $myPick2->health 0,
                 
'opp1' => $opponentPick1->health $opponentPick1->health 0,
                 
'opp2' => $opponentPick2->health $opponentPick2->health 0,
            ],
            
'moveTime' => (string) Services::timer($battle->move_time-time()),
            
'move' => Services::userInfo($battle->move)->login,
            
'roundNum' => $battle->round
        
]);
    }
}
Онлайн: 2
Реклама