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

namespace AppHttpControllers;

use 
IlluminateHttpRequest;
use 
AppModelsUserModel;
use 
Auth;
use 
AppModelsTournamentBattleModel;
use 
AppModelsTournamentPlayerModel;
use 
AppServicesServices;

class 
TournamentController extends Controller
{
    public function 
index()
    {
        
$result Auth::user()->tournament_result;
        if(
$result != '')
        {
            
$user UserModel::find(Auth::user()->id);
            
$user->tournament_result '';
            
$user->save();
        }
        if(
Auth::user()->tournament_battle != 0)
        {
            
$battle TournamentBattleModel::findOrFail(Auth::user()->tournament_battle);
            if(
$battle->status == 'start' && $battle->time <= time())
            {
                
$players TournamentPlayerModel::where('battle'$battle->id)->get();
                
$team1 0;
                
$team2 0;
                foreach(
$players as $pl)
                {
                    
$pl->team $team1 == 1;
                    if(
$team1 == 3$team2++;
                    else 
$team1++;
                    
$pl->save();
                }
                
$battle->status 'battle';
                
$battle->time time()+120;
                
$battle->save();
                return 
redirect('/tournament/battle')->with('ok''Турнир начался!');
            }
            if(
$battle->status == 'battle') return redirect('/tournament/battle');
            
$players TournamentPlayerModel::where('battle'$battle->id)->count();
            return 
view('game.battles.tournament.index', ['battle' => $battle'players' => $players'result' => $result]);
        }
        else return 
view('game.battles.tournament.index', ['result' => $result]);
    }

    public function 
enterBattle()
    {
        if(
Auth::user()->tournament_battle != 0) return back();
        if(
Auth::user()->tournament_cooldown time()) return back();
        if(
Services::getAllParameters('health'Auth::user()->id) == 0) return back()->with('error''Выберите карты в колоду!');
        
$battle TournamentBattleModel::find(Auth::user()->tournament_battle);
        if(
$battle != null && $battle->status == 'battle') return redirect('/tournament/battle');
        
$issetBattle TournamentBattleModel::where('players''<'6)->first();
        if(
$issetBattle == null)
        {
            
$btl TournamentBattleModel::create([
                
'status' => 'prepare',
                
'players' => 1
            
]);
        }
        else
        {
            
$btl $issetBattle;
            
$btl->players++;
            if(
$btl->players == 6)
            {
                
$btl->time time()+30;
                
$btl->status 'start';
            }
            
$btl->save();
        }
        
TournamentPlayerModel::create([
            
'battle' => $btl->id,
            
'user' => Auth::user()->id,
            
'health' => Services::getAllParameters('health'Auth::user()->id)
        ]);
        
$user UserModel::find(Auth::user()->id);
        
$user->tournament_battle $btl->id;
        
$user->save();
        return 
back()->with('ok''Вы в очереди!');
    }

    public function 
leaveBattle()
    {
        if(
Auth::user()->tournament_battle == 0) return back();
        
$battle TournamentBattleModel::find(Auth::user()->tournament_battle);
        if(
$battle->status == 'battle') return redirect('/tournament/battle');
        
TournamentPlayerModel::where('user'Auth::user()->id)->where('battle'$battle->id)->delete();
        
$user UserModel::find(Auth::user()->id);
        
$user->tournament_battle 0;
        
$user->save();
        if(
$battle->players == 1$battle->delete();
        else
        {
            
$battle->players--;
            if(
$battle->players 6)
            {
                
$battle->time 0;
                
$battle->status 'prepare';
            }
            
$battle->save();
        }
        return 
back()->with('ok''Вы вышли из очереди!');
    }

    public function 
battle()
    {
        if(
Auth::user()->tournament_battle == 0) return redirect('/tournament');;
        
$battle TournamentBattleModel::where('id'Auth::user()->tournament_battle)->first();
        if(
$battle->status == 'prepare' && $battle->status == 'start') return redirect('/tournament');
        
$my TournamentPlayerModel::where('user'Auth::user()->id)->where('battle'$battle->id)->first();
        
$players TournamentPlayerModel::where('battle'$battle->id)->where('health''<'1)->get();
        foreach(
$players as $pl)
        {
            if(
$pl->respawn_time <= time())
            {
                
$pl->health Services::getAllParameters('health'$pl->user);
        
$pl->respawn_time 0;
                
$pl->save();
            }
        }
        if(
$battle->time <= time()) return self::result();
        
$team1Alive TournamentPlayerModel::where('battle'$battle->id)->where('team'$my->team)->where('health''>'0)->count();
        
$team2Alive TournamentPlayerModel::where('battle'$battle->id)->where('team''<>'$my->team)->where('health''>'0)->count();
        if(
$my->opponent == 0)
        {
            
$opponent TournamentPlayerModel::with('getUserInfo')->where('user''<>'Auth::user()->id)->where('battle'$battle->id)->where('health''>'0)->where('team''<>'$my->team)->inRandomOrder()->first();
            if(
$opponent != null)
            {
                
$my->opponent $opponent->id;
                
$my->save();
                return 
redirect('/tournament/battle');
            }
            else return 
view('game.battles.tournament.battle', ['battle' => $battle'my' => $my't1a' => $team1Alive't2a' => $team2Alive]);
        }
        else
        {
            
$opponent TournamentPlayerModel::with('getUserInfo')->find($my->opponent);
            if(
$opponent->health <= 0)
            {
                
$my->opponent 0;
                
$my->save();
                return 
redirect('/tournament/battle');
            }
        }
        return 
view('game.battles.tournament.battle', ['battle' => $battle'my' => $my'opponent' => $opponent't1a' => $team1Alive't2a' => $team2Alive]);
    }

    public function 
attack()
    {
        if(
Auth::user()->tournament_battle == 0) return redirect('/tournament');;
        
$battle TournamentBattleModel::where('id'Auth::user()->tournament_battle)->first();
        if(
$battle->status == 'prepare' && $battle->status == 'start') return redirect('/tournament');
        
$my TournamentPlayerModel::where('user'Auth::user()->id)->where('battle'$battle->id)->first();
        if(
$my->opponent == 0) return redirect('/tournament/battle');
        if(
$my->attack_cooldown time()) return back()->with('error''Откат удара!');
        
$opponent TournamentPlayerModel::with('getUserInfo')->find($my->opponent);
        
$attack Services::getAllParameters('attack'Auth::user()->id);
        
$armor 0;//Services::getAllParameters('armor', $opponent->user)
        
$damage Services::getCardDamage($attack$attack$armor);
        if(
$damage >= $opponent->health)
        {
            
$damage $opponent->health;
            
$opponent->health 0;
            
$opponent->respawn_time time()+5;
            
$opponent->save();
            if(
$my->team == 1$battle->team1_points++;
            else 
$battle->team2_points++;
            
$battle->save();
            
$my->points++;
        }
        else
        {
            
$opponent->health -= $damage;
            
$opponent->save();
        }
        
$my->attack_cooldown time()+rand(3,5);
        
$my->damage += $damage;
        
$my->save();
        return 
redirect('/tournament/battle');
    }

    public function 
change()
    {
        if(
Auth::user()->tournament_battle == 0) return redirect('/tournament');;
        
$battle TournamentBattleModel::where('id'Auth::user()->tournament_battle)->first();
        if(
$battle->status == 'prepare' && $battle->status == 'start') return redirect('/tournament');
        
$my TournamentPlayerModel::where('user'Auth::user()->id)->where('battle'$battle->id)->first();
        
$opponent TournamentPlayerModel::with('getUserInfo')->where('user''<>'Auth::user()->id)->where('battle'$battle->id)->where('health''>'0)->where('team''<>'$my->team)->where('id''<>'$my->opponent)->inRandomOrder()->first();
        
$my->opponent $opponent->id;
        
$my->save();
        return 
redirect('/tournament/battle');
    }

    public function 
result()
    {
        
$battle TournamentBattleModel::where('id'Auth::user()->tournament_battle)->first();
        if(
$battle == null) return redirect('/tournament');
        if(
Auth::user()->tournament_battle == 0) return redirect('/tournament');
        if(
$battle->team1_points $battle->team2_points$winner 1;
        elseif(
$battle->team1_points $battle->team2_points$winner 2;
        else 
$winner 0;
        
$players TournamentPlayerModel::where('battle'$battle->id)->get();
        foreach(
$players as $pl)
        {
            
$winner_coeff $pl->team == $winner 1;
            
$exp round(($pl->damage/100)*$pl->points*$winner_coeff);
            
$result $winner_coeff == 'Ваша команда победила!<br>' 'Ваша команда проиграла!<br>';
            
$result .= 'Награда: '.$exp.' монет и '.$pl->points.' вальмер!<br>';
            
$user UserModel::find($pl->user);
            
$user->valmers += $pl->points;
            
$user->exp += $exp;
            
$user->tournament_battle 0;
            
$user->tournament_result $result;
            
$user->tournament_cooldown time()+1800;
            
$user->save();
            
$pl->delete();
        }
        
$battle->delete();
        return 
redirect('/tournament');
    }
}
Онлайн: 0
Реклама