#include "scripts/common.txt"
#include "scripts/BP_common.txt"
#include "scripts/BP_MapCommon.txt"

//Tag IDs
//1000: Start Warp
//1001: Adon
//1002: 

kActor@ adon;
//------------------------------------------------------------------------------------------------------------------------
// Start Map
//------------------------------------------------------------------------------------------------------------------------
$script 0
{
	StartMap();
	@adon = World.GetActorByTID(1001);
	if (GetPlayerCharacter() == PLAYER_CHAR_ADON)
	{
		adon.Remove();
	}
	Game.CallDelayedMapScript(1, instigator, 0); //Update Map
	Game.CallDelayedMapScript(2, instigator, 0); //Start Credits Cinema
}
//------------------------------------------------------------------------------------------------------------------------
// Update Map
//------------------------------------------------------------------------------------------------------------------------
$script 1
{
	TickMap();
	$restart;
}
//------------------------------------------------------------------------------------------------------------------------
// Start Credits Cinema
//------------------------------------------------------------------------------------------------------------------------
$script 2
{
	Player.Actor().PlayerFlags() |= (1 << 30); //hide weapon

	Camera.StartCinematic(CMF_LOCK_PLAYER|CMF_UNLOCK_PLAYER_ON_FINISH|CMF_SHOW_CREDITS|CMF_NO_INITIAL_FADEOUT);
	Camera.SetLookAtActor(Player.Actor().CastToActor());
	Camera.fov = 74.0f;
	Player.Actor().ModelVariation() = TV_KNIFE;
	Player.Actor().AnimState().Set(anim_aiStanding, 8.0f, ANF_LOOP);
	Player.Actor().Flags() &= ~AF_NODRAW;
	Player.Actor().Pitch() = 0.0f;
	Player.Actor().Roll() = 0.0f;
	Player.Actor().Yaw() = Math::Deg2Rad(180.0f);
	Player.Actor().Origin().z = Player.Actor().FloorHeight();
	
	Camera.SetFinalView(0);
	Camera.SetRotationTrack(0,
							Math::Deg2Rad(45.0f),  // start angle
							Math::Deg2Rad(0.0f),   // dest angle
							12*GAME_SCALE,           // start distance
							12*GAME_SCALE,           // dest distance
							5*GAME_SCALE,           // start height
							5*GAME_SCALE,           // dest height
							4*GAME_SCALE,           // start look at height
							4*GAME_SCALE);          // dest look at height
	Camera.AutoPlayRotationTrack(0, 6.0f, CMLT_COSINE);
	delay(0.5f);
	CheckNotStarted();
	delay(2.5f);
	if (GetPlayerCharacter() == PLAYER_CHAR_ADON)
	{
		Game.PlaySound("sounds/shaders/adon_i_am.ksnd"); //I am Adon!
	}
	else
	{
		Game.PlaySound("sounds/shaders/turok_i_am.ksnd"); //I am Turok!
	}
	delay(3.0f);
	Game.CallDelayedMapScript(3, instigator, 0); //Update Credits Cinema
	delay(3.0f);
	for (int i = 0; i < 5; i++)
	{
		Camera.SetRotationTrack(0,
								Math::Deg2Rad(0.0f),  // start angle
								Math::Deg2Rad(360.0f),   // dest angle
								12*GAME_SCALE,           // start distance
								12*GAME_SCALE,           // dest distance
								5*GAME_SCALE,           // start height
								5*GAME_SCALE,           // dest height
								4*GAME_SCALE,           // start look at height
								4*GAME_SCALE);          // dest look at height
		Camera.AutoPlayRotationTrack(0, 60.0f, CMLT_COSINE);
		delay(60.0f);
	}
	EndCreditsCinema();
}
//------------------------------------------------------------------------------------------------------------------------
// Update Credits Cinema
//------------------------------------------------------------------------------------------------------------------------
$script 3
{
    if (Camera.UserInterrupted())
    {
		EndCreditsCinema();
        return;
    }
    
    $restart;
}
//------------------------------------------------------------------------------------------------------------------------
void EndCreditsCinema()
{
	Player.Actor().PlayerFlags() &= ~(1 << 30); //unhide weapon
    Player.Actor().Flags() |= AF_NODRAW;
	Camera.StopCinematic();
	Game.Restart();
	Game.HaltMapScript(2); //Start Credits Cinematic
	Game.HaltMapScript(3); //Update Credits Cinematic
	// SetCheat(CHEAT_DISMEMBERMENT, true);
	// Game.ChangeMap("levels/level05.map");
}
//------------------------------------------------------------------------------------------------------------------------
