<?php

include 'common.php';


/*
arm shouldn't be 0  
*/
function GetDefaultParts($class_id)
{
	switch($class_id)
	{
		case 1: //knight
			return array(20,600,620,100,200,0,610); //head=1,body=6,leg=8,weapon=2,shield=4,quiver=5,arm=7
		break;
		case 2: //knight female
			return array(0,700,900,0,0,0,800);
		break;
		case 3: // not exist
			return array(0,0,0,0,0,0,0);
		break;
		case 4: // priest female
			return array(460,1000,14500,420,411,0,1100);
		break;
		case 5: // archer
			return array(530,15300,15500,15100,0,15200,15400);
		break;
	}
	return array(0,0,0,0,0,0,0);
}

function GetDefaultPartsAtt($class_id)
{
	// switch($class_id)
	// {
		// case 1: //knight
			// return array(0,0,0,1,0,0,0); //head=1,body=6,leg=8,weapon=2,shield=4,quiver=5,arm=7
		// break;
		// case 2: //knight female
			// return array(0,0,0,1,0,0,0);
		// break;
		// case 3: // not exist
			// return array(0,0,0,1,0,0,0);
		// break;
		// case 4: // priest female
			// return array(0,0,0,1,0,0,0);
		// break;
		// case 5: // archer
			// return array(0,0,0,1,0,0,0);
		// break;
	// }
	return array(0,0,0,0,0,0,0);
}

function GetDefaultPartsDef($class_id)
{
	// switch($class_id)
	// {
		// case 1: //knight
			// return array(0,1,1,0,1,0,1); //head=1,body=6,leg=8,weapon=2,shield=4,quiver=5,arm=7
		// break;
		// case 2: //knight female
			// return array(0,1,1,0,1,0,1);
		// break;
		// case 3: // not exist
			// return array(0,1,1,0,1,0,1);
		// break;
		// case 4: // priest female
			// return array(0,1,1,0,1,0,1);
		// break;
		// case 5: // archer
			// return array(0,1,1,0,1,0,1);
		// break;
	// }
	return array(0,0,0,0,0,0,0);
}

function GetDefaultStat($class_id)
{
	switch($class_id)
	{
		case 1: //knight
			return array(8,1,3,2,6); //strength, intellect, agility, wisdom, health
		break;
		case 2: //knight female
			return array(8,1,3,2,6);
		break;
		case 3: // priest male (not used)
			return array(1,8,2,6,3);
		break;
		case 4: // priest female
			return array(1,8,2,6,3);
		break;
		case 5: // archer male
			return array(5,1,8,1,5);
		break;
	}
	return array(1,1,1,1,1,1,1);
}

function AlreadyExistsCharacterName($dbhandle,$character_name)
{
	$strQuery = "select count(*) from character_list where character_name='".$character_name."'";
	if($query_result = mysqli_query($dbhandle, $strQuery)){
		$data = mysqli_fetch_row($query_result);
		if( $data[0] > 0 )
		{
			return true;
		}
	}
	
	return false;
}

function CreateDefaultInvenItems($dbhandle, $user_id, $class_id, $character_name, $head, $body, $arm, $leg)
{
	
	
	//@todo: costom part 
	$returnParts = GetDefaultParts($class_id);
	$returnPartsAtt = GetDefaultPartsAtt($class_id);
	$returnPartsDef = GetDefaultPartsDef($class_id);
	
	if($returnParts[0] == 0 && $returnParts[1] ==0 && $returnParts[2] == 0 && $returnParts[3] ==0 && $returnParts[4] == 0 && $returnParts[5] ==0 && $returnParts[6] == 0)
		return false;
	
	$strQuery = "select character_uid from character_list where user_id='".$user_id."' and character_name='".$character_name."' and deleted=false";

	
	//Query Result
	if($query_result = mysqli_query($dbhandle, $strQuery))
	{
		$data = mysqli_fetch_row($query_result);
		$insert_query = "INSERT INTO owned_item (character_uid, item_uid, count, is_equiped, parts_type,is_viewed) VALUES ";
		if($returnParts[0] != 0) $insert_query .="(".$data[0].",".$returnParts[0].",1,1,1,1)";   // head
		if($returnParts[1] != 0) $insert_query .=",(".$data[0].",".$returnParts[1].",1,1,6,1)";   // body
		if($returnParts[2] != 0) $insert_query .=",(".$data[0].",".$returnParts[2].",1,1,8,1)";    // leg
		if($returnParts[3] != 0) $insert_query .=",(".$data[0].",".$returnParts[3].",1,1,2,1)"; //weapon
		if($returnParts[4] != 0) $insert_query .=",(".$data[0].",".$returnParts[4].",1,1,4,1)"; //shield
		if($returnParts[5] != 0) $insert_query .=",(".$data[0].",".$returnParts[5].",1,1,5,1)"; //quiver
		if($returnParts[6] != 0) $insert_query .=",(".$data[0].",".$returnParts[6].",1,1,7,1)"; /******** arm shouldn't be 0  *******/


		$result = @mysqli_query($dbhandle,$insert_query);
		if($result == 1)
		{
			
			if (CreateDefaultMail($dbhandle, $data[0]))
			{
				return true;
			}
			else
			{
				$strQuery = "delete from owned_item where character_uid=".$data[0];
				@mysqli_query($dbhandle,$strQuery);
				$strQuery = "delete from character_list where character_uid=".$data[0];
				@mysqli_query($dbhandle,$strQuery);
			}
		}
		else
		{
			$strQuery = "delete from character_list where character_uid=".$data[0];
			@mysqli_query($dbhandle,$strQuery);
		}

	}
	
	return false;			
}

function CreateDefaultMail($dbhandle, $char_id )
{

	$now = new DateTime();
	//$now->setTimezone(new DateTimeZone('Asia/Seoul'));
	$strTime =  date_format($now, "Y-m-d H:i:s");

	global $TEXT_CREATE_CHARACTER_GIFT_TITLE;
	global $TEXT_CREATE_CHARACTER_GIFT_CONTENT;

	$strQuery = "INSERT INTO mail_box_character (character_id, title, content, item_id, item_count, time_limit, time_send) VALUES (".$char_id.", '".$TEXT_CREATE_CHARACTER_GIFT_TITLE."', '".$TEXT_CREATE_CHARACTER_GIFT_CONTENT."', 50001, 1, 720, '".$strTime."')";
	//$strQuery .=",(".$char_id.", '".$TEXT_CREATE_CHARACTER_GIFT_TITLE."', '".$TEXT_CREATE_CHARACTER_GIFT_CONTENT."', 30050, 50, 168, '".$strTime."')";

	//Query Result
	if($result = @mysqli_query($dbhandle, $strQuery))
	{
		return true;
	}
	else
	{
		return false;
	}
	
	return false;			
}

function CreateCharacter($dbhandle, $user_id, $class_id, $character_name, $hair, $face, $head, $body, $arm, $leg, $stat_str, $stat_dex, $stat_int, $stat_wis, $stat_con)
{
	
	mysqli_query($dbhandle,"set session character_set_connection=utf8;");
	mysqli_query($dbhandle,"set session character_set_results=utf8;");
	mysqli_query($dbhandle,"set session character_set_client=utf8;");
	
	
	
	
	$strQuery = "select count(*) from character_list where user_id='".$user_id."' and deleted=false";

	//Query Result
	if($query_result = mysqli_query($dbhandle, $strQuery)){
		
		$data = mysqli_fetch_row($query_result);
		if( $data[0] >= 3 )
		{
			//echo "MAX_CHARACTER_ERROR";
			$return = "CREATE_FAILED";
			$responseMsg = "MAX_CHARACTER_ERROR";
			//return;
		}
		else
		{
			$returnParts = GetDefaultParts($class_id);
			
			$head = $returnParts[0];
			if($head <0)
				$head = 0;
			
			$body = $returnParts[1];
			if($body <0)
				$body =0;
			
			$leg = $returnParts[2];
			if($leg < 0)
				$leg =0;
			
			$weapon = $returnParts[3];
			if($weapon <0)
				$weapon = 0;
			
			$shield = $returnParts[4];
			if($shield <0)
				$shield = 0;
			
			$quiver = $returnParts[5];
			if($quiver <0)
				$quiver=0;
			
			$arm = $returnParts[6];
			if($arm <0)
				$arm = 0;
			
			
			//****** when game design is finished you should use  returnStats ***
			$DEV_MODE = true;
			if($DEV_MODE)
			{
				
				$insert_query = "insert into character_list ( user_id,level,class_id,character_name,custom_hair_uid, custom_face_uid, parts_head_uid,parts_body_uid,parts_leg_uid,parts_weapon_uid,parts_shield_uid,parts_quiver_uid,parts_arm_uid, stat_strength, stat_intellect, stat_agility, stat_wisdom, stat_health) 
		          values('".$user_id."',1,".$class_id.",'".$character_name."',".$hair.",".$face.",".$head.",".$body.",".$leg.",".$weapon.",".$shield.",".$quiver.",".$arm.",".$stat_str.",".$stat_int.",".$stat_dex.",".$stat_wis.",".$stat_con.")";

			}
			else
			{
				$returnStats = GetDefaultStat($class_id);
				$insert_query = "insert into character_list ( user_id,level,class_id,character_name,custom_hair_uid, custom_face_uid, parts_head_uid,parts_body_uid,parts_leg_uid,parts_weapon_uid,parts_shield_uid,parts_quiver_uid,parts_arm_uid, stat_strength, stat_intellect, stat_agility, stat_wisdom, stat_health) 
		          values('".$user_id."',1,".$class_id.",'".$character_name."',".$hair.",".$face.",".$head.",".$body.",".$leg.",".$weapon.",".$shield.",".$quiver.",".$arm.",".$returnStats[0].",".$returnStats[1].",".$returnStats[2].",".$returnStats[3].",".$returnStats[4].")";
			}

			//Query Result
			$result = @mysqli_query($dbhandle,$insert_query);
			if($result == 1)
			{
				$return = "CREATE_OK" ;
				$responseMsg = "CREATE_OK";
			}
			else
			{
			   $return = "CREATE_FAILED";
			   $responseMsg = "CREATE_FAILED 11";
			   //$responseMsg = $head;//mysqli_error($dbhandle);
			}
			
			if(CreateDefaultInvenItems($dbhandle, $user_id, $class_id, $character_name, $head, $body, $arm, $leg) != true)
			{				
				 $return = "CREATE_FAILED";			
				 $responseMsg = "&CREATE_INVEN_FAILED";
			}
			
			// don't use for upate/insert query, because these query result is true/false, not mysqli_result object
			//mysqli_free_result($result); 
			
			
		}
	}	
	
	EchoRespone($return,$responseMsg);
}

function EchoRespone($return, $responseMsg)
{
	$response = array('result'=>$return,'responseMsg'=>$responseMsg);
    
 
    $isXmlHttpRequest = (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) ?
    (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ? true : false: false;
    ($isXmlHttpRequest) ? header('Content-type: application/json') : header('Content-type: text/plain');
 
    echo json_encode($response);
}

function CreateCharacterQuery($user_id,$class_id,$character_name,$hair,$face, $head, $body, $arm, $leg, $stat_str, $stat_dex, $stat_int, $stat_wis, $stat_con )
{
	$dbhandle = DB_Connect();
	//Select DB
	$db_selected = mysqli_select_db($dbhandle, DB_NAME)
	or die("Could not select db");
	
	
	
	if(AlreadyExistsCharacterName($dbhandle,$character_name) == true)
	{
		global $TEXT_ALREDY_EXSITS_NAME;
		
		$return = "CREATE_FAILED";
		$responseMsg = $TEXT_ALREDY_EXSITS_NAME;
		EchoRespone($return,$responseMsg);
	}
	else
	{
		CreateCharacter($dbhandle,$user_id,$class_id,$character_name,$hair, $face, $head, $body, $arm, $leg, $stat_str, $stat_dex, $stat_int, $stat_wis, $stat_con );
		
	}
	
	
	
	mysqli_close($dbhandle);



	/*$response = array('result'=>$return,'responseMsg'=>$responseMsg);
    mysqli_close($dbhandle);
 
    $isXmlHttpRequest = (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) ?
    (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ? true : false: false;
    ($isXmlHttpRequest) ? header('Content-type: application/json') : header('Content-type: text/plain');
 
    echo json_encode($response);
	*/
}

$json = json_decode(file_get_contents('php://input'));
$user_id = $json->user_id;
$class_id = $json->class_id;
$character_name = $json->character_name;
$head = $json->head;
$hair = $json->hair;
$face = $json->face;
$body = $json->body;
$arm = $json->arm;
$leg = $json->leg;
$stat_str = $json->stat_str;
$stat_dex = $json->stat_dex;
$stat_int = $json->stat_int;
$stat_wis = $json->stat_wis;
$stat_con = $json->stat_con;
$platform = $json->platform;
$ticket = $json->ticket;

if($_GET['lang'] == 'kr')
{
	include 'localization_kr.php';
}
else
{
	include 'localization_eng.php';
}

if (CheckTicket($platform, $user_id, $ticket) || $platform === 'unknown')
{	
	CreateCharacterQuery($user_id,$class_id, $character_name, $hair, $face, $head, $body, $arm, $leg, $stat_str, $stat_dex, $stat_int, $stat_wis, $stat_con );
}
else 
{
	EchoRespone("CREATE_FAILED", "Authentication Failed");
}




?>