// Gravity Stomp Copyright Kevin Poretti

#include "Player/GSPlayerController.h"

// GS includes
#include "GSPlayerState.h"

void AGSPlayerController::Client_GameStarted_Implementation()
{
    SetIgnoreMoveInput(false);

    // enable all actions on pawn
    OnGameStarted();
}


void AGSPlayerController::Client_OnKill_Implementation(AGSPlayerState* KillerPlayerState,
    AGSPlayerState* VictimPlayerState)
{
    OnKill(KillerPlayerState, VictimPlayerState);
}


void AGSPlayerController::Client_OnDeath_Implementation(AGSPlayerState* KillerPlayerState,
    AGSPlayerState* VictimPlayerState)
{
    OnDeath(KillerPlayerState, VictimPlayerState);
}


void AGSPlayerController::Client_WarmupStarted_Implementation()
{
	// wait for server to tell us we can move 
    SetIgnoreMoveInput(true);

    OnWarmupStarted();
}

void AGSPlayerController::Client_GameRestarted_Implementation()
{
    OnGameRestarted();
}

void AGSPlayerController::GameHasEnded(AActor* EndGameFocus, bool bIsWinner)
{
    // don't set a view target
    ClientGameEnded(EndGameFocus, bIsWinner);
}

void AGSPlayerController::ClientGameEnded_Implementation(AActor* EndGameFocus, bool bIsWinner)
{
    SetIgnoreMoveInput(true);

    APawn* MyPawn = GetPawn();
    if(MyPawn) // pawn may be null if we died and then the round ended
    {
        // disable all actions on character
        MyPawn->TurnOff();
    }

    OnGameEnded(bIsWinner);
}


void AGSPlayerController::UnFreeze()
{
    Super::UnFreeze();

    ServerRestartPlayer();
}


void AGSPlayerController::AcknowledgePossession(APawn* P)
{
    GetPlayerState<AGSPlayerState>()->UpdateTeamColor();

    OnAcknowledgePossession();

    Super::AcknowledgePossession(P);
}