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

namespace AppHttpControllers;

use 
IlluminateHttpRequest;
use 
AppModelsUserModel;
use 
AppModelsCardModel;
use 
AppModelsCardUserModel;
use 
AppModelsBattleLogModel;
use 
Auth;
use 
AppModelsTutorialTempModel;
use 
Services;
use 
Mail;
use 
AppMailEmailConfirmation;
use 
Cache;

class 
TutorialController extends Controller
{
    public function 
tutorial1()
    {
        return 
view('tutorial.1');
    }

    public function 
tutorial1Confirm($sex)
    {
        if(!
in_array($sex, ['m','w'])) return redirect('/tutorial/1');
        
$user UserModel::find(Auth::user()->id);
        
$user->tutorial_stage 2;
        
$user->sex $sex;
        
$user->save();
        return 
redirect('/tutorial/2');
    }

    public function 
tutorial2()
    {
        return 
view('tutorial.2');
    }

    public function 
tutorial2Confirm($action)
    {
        if(
$action == 'yes')
        {
            
Services::setTutorialStage(3);
            return 
redirect('/tutorial/3');
        }
        else
        {
            
UserModel::destroy(Auth::user()->id);
            
Auth::logout();
            return 
redirect('/');
        }
    }

    public function 
tutorial3()
    {
        return 
view('tutorial.3');
    }

    public function 
tutorial3Confirm(Request $request)
    {
        
$messages = [
            
'login.required' => 'Введите ник!',
            
'login.between' => 'Длина ника должна быть в пределах :min-:max символов!',
            
'login.alpha_num' => 'Ник должен содержать только латинские символы, кириллицу и цифры!',
            
'login.unique' => 'Игрок с таким ником уже существует!'
        
];
        
$this->validate($request, [
            
'login' => 'string|required|between:5,32|alpha_num|unique:users'
        
], $messages);
        
$user UserModel::find(Auth::user()->id);
        
$user->login $request->input('login');
        
$user->tutorial_stage 4;
        
$user->save();
        return 
redirect('/tutorial/4');
    }

    public function 
tutorial4()
    {
        
$cards CardModel::where('type''=''tutorial-common')->get();
        return 
view('tutorial.4')->with('cards'$cards);
    }

    public function 
tutorial4Confirm($card)
    {
        if(
CardUserModel::where('user''='Auth::user()->id)->where('card''='$card)->count() == 0)
        {
            
$userCard = new CardUserModel;
            
$userCard->user Auth::user()->id;
            
$userCard->card $card;
            
$userCard->status 'redeemed';
            
$userCard->learn_time 0;
            
$userCard->save();
        }
        else 
$userCard CardUserModel::where('user''='Auth::user()->id)->where('card''='$card)->first();
        
Services::addTutorialMob($userCard->card180);
        
Services::setTutorialStage(5);
        return 
redirect('/tutorial/5');
    }

    public function 
tutorial5()
    {
        
$userCard CardUserModel::with('getCardInfo')->where('user''='Auth::user()->id)->first();
        if(
$userCard == null)
        {
            
Services::setTutorialStage(4);
            return 
redirect('/tutorial/4');
        }
        
$tutorialInfo TutorialTempModel::where('user''='Auth::user()->id)->first();
        if(
$tutorialInfo->cardCooldown <= time() && $tutorialInfo->cardAttackCount == 0)
        {
             
$tutorialInfo->cardCooldown 0;
             
$tutorialInfo->cardAttackCount $userCard->getCardInfo->attack_count;
             
$tutorialInfo->save();
        }
        
$expProgressBars = (object) [
            
'my' => round($tutorialInfo->cardHealth*100/$userCard->getCardInfo->health),
            
'mob' => round($tutorialInfo->mobCardHealth*100/180)
        ];
        
$cardCooldown $tutorialInfo->cardCooldown time() ? $tutorialInfo->cardCooldown-time() : -2;
        
$battleLog BattleLogModel::where('battle''='$tutorialInfo->id)->where('type''=''tutorial')->orderBy('created_at''DESC')->take(10);
        return 
view('tutorial.5', ["info" => $tutorialInfo"userCard" => $userCard->getCardInfo"log" => $battleLog"cardCD" => $cardCooldown"exp" => $expProgressBars]);
    }

    public function 
tutorial5Attack()
    {
        
$userCard CardUserModel::with('getCardInfo')->where('user''='Auth::user()->id)->first();
        if(
$userCard == null)
        {
            
Services::setTutorialStage(4);
            return 
redirect('/tutorial/4');
        }
        
$tutorialInfo TutorialTempModel::where('user''='Auth::user()->id)->first();
        
$mobDamage Services::getCardDamage(510$userCard->getCardInfo->armor);
        
$myDamage 60;
        if(
$tutorialInfo->cardCooldown time()) return redirect('/tutorial/5')->with('error''До отката удара '.($tutorialInfo->cardCooldown-time().' секунд!'));
        if(
$tutorialInfo->cardAttackCount == 0) return redirect('/tutorial/5');
        if(
$tutorialInfo->tiredness == 0) return redirect('/tutorial/5')->with('error''Вы устали! Используйте усиление!');
        if(
$myDamage >= $tutorialInfo->mobCardHealth)
        {
            
TutorialTempModel::destroy($tutorialInfo->id);
            
$user UserModel::find(Auth::user()->id);
            
$user->wins++;
            
$user->save();
            
Services::setTutorialStage(6);
            return 
redirect('/tutorial/6');
        }
        else
        {
            
$tutorialInfo->cardHealth -= $myDamage;
            if(
$tutorialInfo->cardAttackCount-== 0$tutorialInfo->cardCooldown time()+$userCard->getCardInfo->cooldown;
            
$tutorialInfo->cardAttackCount -= 1;
            if(
$tutorialInfo->tiredness >= 20$tutorialInfo->tiredness -= 20;
            
$tutorialInfo->mobCardHealth -= $myDamage;
            
$tutorialInfo->save();
            
BattleLogModel::create([
                
'battle' => $tutorialInfo->id,
                
'type' => 'tutorial',
                
'message' => 'Вы нанесли '.$myDamage.' урона, получив '.$mobDamage.' урона'
            
]);
        }
        return 
redirect('/tutorial/5')->with('my'$myDamage)->with('mob'$mobDamage);
    }

    public function 
tutorial5Up()
    {
        
$tutorialInfo TutorialTempModel::where('user''='Auth::user()->id)->first();
        if(
$tutorialInfo->tiredness == 0)
        {
            
$tutorialInfo->tiredness = -1;
            
$tutorialInfo->save();
            return 
redirect('/tutorial/5');
        }
        else return 
redirect('/tutorial/5')->with('error''Вы ещё не устали!');
    }

    public function 
tutorial6()
    {
        
$cards CardModel::where('type''=''tutorial-premium')->get();
        return 
view('tutorial.6')->with('cards'$cards);
    }

    public function 
tutorial6Confirm($card)
    {
        if(
CardUserModel::where('user''='Auth::user()->id)->where('card''='$card)->count() == 0)
        {
            
$userCard = new CardUserModel;
            
$userCard->user Auth::user()->id;
            
$userCard->card $card;
            
$userCard->status 'redeemed';
            
$userCard->learn_time 0;
            
$userCard->save();
        }
        else 
$userCard CardUserModel::where('user''='Auth::user()->id)->where('card''='$card)->first();
        
Services::addMoney(1000150);
        
Services::setTutorialStage(7);
        return 
redirect('/tutorial/5')->with('ok''Поздравляем вас с победой! Получено: 150 вальмер, 1000 монет и премиум-карта!');
    }

    public function 
tutorial7()
    {
        return 
view('tutorial.7');
    }

    public function 
tutorial7Confirm(Request $request)
    {
        
$messages = [
            
'password.between' => 'Длина пароля должна быть в пределах :min-:max символов!',
            
'password.required' => 'Введите пароль!',
            
'password.alpha_num' => 'Пароль содержит недопустимые символы!'
        
];
        
$this->validate($request, [
            
'password' => 'string|between:6,64|required|alpha_num'
        
], $messages);
        
$user UserModel::find(Auth::user()->id);
        
$user->password bcrypt($request->input('password'));
        
$user->save();
        
Services::setTutorialStage(8);
        return 
redirect('/tutorial/8');
    }

    public function 
tutorial8()
    {
        return 
view('tutorial.8');
    }

    public function 
tutorial8Confirm(Request $request)
    {
        
$messages = [
            
'email.required' => 'Введите электронную почту!',
            
'email.email' => 'Недопустимый формат электронной почты!',
            
'email.unique' => 'Игрок с данной электронной почтой уже существует!'
        
];
        
$this->validate($request, [
            
'email' => 'email|required|unique:users,email'
        
], $messages);
        
$user UserModel::find(Auth::user()->id);
        
$user->email $request->input('email');
        
$user->save();
        
Services::addMoney(0200);
        
Services::setTutorialStage(11);
        return 
redirect('/tutorial/11')->with('ok''Получено: 200 вальмер!');
    }

    public function 
tutorial11()
    {
        return 
view('tutorial.11');
    }

    public function 
tutorial11Confirm()
    {
        
Services::setTutorialStage(12);
        return 
redirect('/tutorial/12');
    }

    public function 
tutorial12()
    {
        return 
view('tutorial.12');
    }

    public function 
tutorial12Confirm()
    {
        
Services::setTutorialStage(13);
        return 
redirect('/tutorial/13');
    }

    public function 
tutorial13()
    {
        
$userCards CardUserModel::with('getCardInfo')->where('user''='Auth::user()->id)->get();
        return 
view('tutorial.13')->with('userCards'$userCards);
    }

    public function 
tutorial13Confirm($card)
    {
        
$userCard CardUserModel::where('user''='Auth::user()->id)->where('id''='$card)->first();
        if(
$userCard == null) return redirect('/tutorial/13');
        
Services::addTutorialMob($userCard->card250);
        
Services::setTutorialStage(14);
        return 
redirect('/tutorial/14');
    }

    public function 
tutorial14()
    {
        if(
Auth::user()->tutorial_stage == 15) return redirect('/');
        
$tutorialInfo TutorialTempModel::where('user''='Auth::user()->id)->first();
        
$userCard CardUserModel::with('getCardInfo')->where('user''='Auth::user()->id)->where('card''='$tutorialInfo->card)->first();
        if(
$userCard == null)
        {
            
Services::setTutorialStage(13);
            return 
redirect('/tutorial/13');
        }
        if(
$tutorialInfo->cardCooldown <= time() && $tutorialInfo->cardAttackCount == 0)
        {
             
$tutorialInfo->cardCooldown 0;
             
$tutorialInfo->cardAttackCount $userCard->getCardInfo->attack_count;
             
$tutorialInfo->save();
        }
        
$expProgressBars = (object) [
            
'my' => round($tutorialInfo->cardHealth*100/$userCard->getCardInfo->health),
            
'mob' => round($tutorialInfo->mobCardHealth*100/250)
        ];
        
$cardCooldown $tutorialInfo->cardCooldown time() ? $tutorialInfo->cardCooldown-time() : -2;
        
$battleLog BattleLogModel::where('battle''='$tutorialInfo->id)->where('type''=''tutorial')->orderBy('created_at''DESC')->take(10);
        return 
view('tutorial.14', ["info" => $tutorialInfo"userCard" => $userCard->getCardInfo"log" => $battleLog"cardCD" => $cardCooldown"exp" => $expProgressBars]);
    }

    public function 
tutorial14Attack()
    {
        if(
Auth::user()->tutorial_stage == 15) return redirect('/');
        
$tutorialInfo TutorialTempModel::where('user''='Auth::user()->id)->first();
        
$userCard CardUserModel::with('getCardInfo')->where('user''='Auth::user()->id)->where('card''='$tutorialInfo->card)->first();
        if(
$userCard == null)
        {
            
Services::setTutorialStage(13);
            return 
redirect('/tutorial/13');
        }
        
$myDamage 50;
        
$mobDamage Services::getCardDamage(1025$userCard->getCardInfo->armor);
        if(
$tutorialInfo->cardCooldown time()) return redirect('/tutorial/5')->with('error''До отката удара '.($tutorialInfo->cardCooldown-time().' секунд!'));
        if(
$tutorialInfo->cardAttackCount == 0) return redirect('/tutorial/5');
        if(
$myDamage >= $tutorialInfo->mobCardHealth)
        {
            
TutorialTempModel::destroy($tutorialInfo->id);
            
$user UserModel::find(Auth::user()->id);
            
$user->wins++;
            
$user->save();
            
Services::setTutorialStage(15);
            
Services::addMoney(1000100);
            return 
redirect('/game')->with('ok''Противник повержен! Получено: 1000 монет и 100 вальмер!');
        }
        else
        {
            
$tutorialInfo->cardHealth -= $mobDamage;
            if(
$tutorialInfo->cardAttackCount-== 0$tutorialInfo->cardCooldown time()+$userCard->getCardInfo->cooldown;
            
$tutorialInfo->cardAttackCount -= 1;
            
$tutorialInfo->mobCardHealth -= $myDamage;
            
$tutorialInfo->save();
            
BattleLogModel::create([
                
'battle' => $tutorialInfo->id,
                
'type' => 'tutorial',
                
'message' => 'Вы нанесли '.$myDamage.' урона, получив '.$mobDamage.' урона'
            
]);
        }
        return 
redirect('/tutorial/14');
    }
}
Онлайн: 3
Реклама