/*
    CAR ACCESSORIES
*/

#include <YSI_Coding\y_hooks>

enum E_CAR_ACCS
{
    acc_name[32],
    acc_model,
    acc_price,
    acc_type,
}

new CarAccessories[][E_CAR_ACCS] = {
    {"Red siren", 18646, 75, 1},
    {"Chainsaw dildo", 19086, 80, 1},
    {"Taxi checker 1", 19308, 90, 1},
    {"Taxi checker 2", 19309, 90, 1},
    {"Taxi checker 3", 19310, 90, 1},
    {"Taxi checker 4", 19311, 90, 1},
    {"Blue flag", 19307, 100, 2},
    {"Red flag", 19306, 100, 2},
    {"Green flag", 2914, 100, 2},
    {"Minigun", 362, 125, 2},
    {"Minigun base", 2985, 125, 2},
    {"Bull horns", 19314, 125, 1},
    {"Red neon", 18647, 150, 3},
    {"Blue neon", 18648, 150, 3},
    {"Green neon", 18649, 150, 3},
    {"Yellow neon", 18650, 150, 3},
    {"Pink neon", 18651, 150, 3},
    {"White neon", 18652, 150, 3},
    {"NOS tube", 1009, 150, 1},
    {"Dollar wheels", 1083, 175, 4},
    {"Offroad wheels", 1025, 175, 4},
    {"Switch wheels", 1080, 175, 4}
};

new Iterator:in_car_accs_shop<MAX_PLAYERS>;
new ViewingCarAcc[MAX_PLAYERS];
new CarAccObject[MAX_PLAYERS];

new Text:CarAccsShop[7], PlayerText:CarAccsPTD[MAX_PLAYERS];

hook OnGameModeInit()
{
    CarAccsShop[0] = TextDrawCreate(320.000000, 319.000000, "_");
    TextDrawFont(CarAccsShop[0], 1);
    TextDrawLetterSize(CarAccsShop[0], 0.600000, 10.300003);
    TextDrawTextSize(CarAccsShop[0], 298.500000, 145.500000);
    TextDrawSetOutline(CarAccsShop[0], 1);
    TextDrawSetShadow(CarAccsShop[0], 0);
    TextDrawAlignment(CarAccsShop[0], 2);
    TextDrawColor(CarAccsShop[0], -1);
    TextDrawBackgroundColor(CarAccsShop[0], 255);
    TextDrawBoxColor(CarAccsShop[0], 135);
    TextDrawUseBox(CarAccsShop[0], 1);
    TextDrawSetProportional(CarAccsShop[0], 1);
    TextDrawSetSelectable(CarAccsShop[0], 0);

    CarAccsShop[1] = TextDrawCreate(320.000000, 319.000000, "_");
    TextDrawFont(CarAccsShop[1], 1);
    TextDrawLetterSize(CarAccsShop[1], 0.600000, 0.150003);
    TextDrawTextSize(CarAccsShop[1], 298.500000, 145.500000);
    TextDrawSetOutline(CarAccsShop[1], 1);
    TextDrawSetShadow(CarAccsShop[1], 0);
    TextDrawAlignment(CarAccsShop[1], 2);
    TextDrawColor(CarAccsShop[1], -1);
    TextDrawBackgroundColor(CarAccsShop[1], 255);
    TextDrawBoxColor(CarAccsShop[1], -1962934017);
    TextDrawUseBox(CarAccsShop[1], 1);
    TextDrawSetProportional(CarAccsShop[1], 1);
    TextDrawSetSelectable(CarAccsShop[1], 0);

    CarAccsShop[2] = TextDrawCreate(320.000000, 414.000000, "_");
    TextDrawFont(CarAccsShop[2], 1);
    TextDrawLetterSize(CarAccsShop[2], 0.600000, 0.150003);
    TextDrawTextSize(CarAccsShop[2], 298.500000, 145.500000);
    TextDrawSetOutline(CarAccsShop[2], 1);
    TextDrawSetShadow(CarAccsShop[2], 0);
    TextDrawAlignment(CarAccsShop[2], 2);
    TextDrawColor(CarAccsShop[2], -1);
    TextDrawBackgroundColor(CarAccsShop[2], 255);
    TextDrawBoxColor(CarAccsShop[2], -1962934017);
    TextDrawUseBox(CarAccsShop[2], 1);
    TextDrawSetProportional(CarAccsShop[2], 1);
    TextDrawSetSelectable(CarAccsShop[2], 0);

    CarAccsShop[3] = TextDrawCreate(320.000000, 304.000000, "Vehicle Accessories");
    TextDrawFont(CarAccsShop[3], 0);
    TextDrawLetterSize(CarAccsShop[3], 0.379166, 1.700000);
    TextDrawTextSize(CarAccsShop[3], 400.000000, 133.000000);
    TextDrawSetOutline(CarAccsShop[3], 1);
    TextDrawSetShadow(CarAccsShop[3], 0);
    TextDrawAlignment(CarAccsShop[3], 2);
    TextDrawColor(CarAccsShop[3], -1);
    TextDrawBackgroundColor(CarAccsShop[3], 255);
    TextDrawBoxColor(CarAccsShop[3], 50);
    TextDrawUseBox(CarAccsShop[3], 0);
    TextDrawSetProportional(CarAccsShop[3], 1);
    TextDrawSetSelectable(CarAccsShop[3], 0);

    CarAccsShop[4] = TextDrawCreate(320.000000, 379.000000, "purchase");
    TextDrawFont(CarAccsShop[4], 2);
    TextDrawLetterSize(CarAccsShop[4], 0.170833, 1.400000);
    TextDrawTextSize(CarAccsShop[4], 400.000000, 59.000000);
    TextDrawSetOutline(CarAccsShop[4], 1);
    TextDrawSetShadow(CarAccsShop[4], 0);
    TextDrawAlignment(CarAccsShop[4], 2);
    TextDrawColor(CarAccsShop[4], -1);
    TextDrawBackgroundColor(CarAccsShop[4], 255);
    TextDrawBoxColor(CarAccsShop[4], -1962934017);
    TextDrawUseBox(CarAccsShop[4], 1);
    TextDrawSetProportional(CarAccsShop[4], 1);
    TextDrawSetSelectable(CarAccsShop[4], 1);

    CarAccsShop[5] = TextDrawCreate(260.000000, 371.000000, "ld_beat:left");
    TextDrawFont(CarAccsShop[5], 4);
    TextDrawLetterSize(CarAccsShop[5], 0.600000, 2.000000);
    TextDrawTextSize(CarAccsShop[5], 21.000000, 30.000000);
    TextDrawSetOutline(CarAccsShop[5], 1);
    TextDrawSetShadow(CarAccsShop[5], 0);
    TextDrawAlignment(CarAccsShop[5], 1);
    TextDrawColor(CarAccsShop[5], -1);
    TextDrawBackgroundColor(CarAccsShop[5], 255);
    TextDrawBoxColor(CarAccsShop[5], 50);
    TextDrawUseBox(CarAccsShop[5], 1);
    TextDrawSetProportional(CarAccsShop[5], 1);
    TextDrawSetSelectable(CarAccsShop[5], 1);

    CarAccsShop[6] = TextDrawCreate(360.000000, 371.000000, "ld_beat:right");
    TextDrawFont(CarAccsShop[6], 4);
    TextDrawLetterSize(CarAccsShop[6], 0.600000, 2.000000);
    TextDrawTextSize(CarAccsShop[6], 21.000000, 30.000000);
    TextDrawSetOutline(CarAccsShop[6], 1);
    TextDrawSetShadow(CarAccsShop[6], 0);
    TextDrawAlignment(CarAccsShop[6], 1);
    TextDrawColor(CarAccsShop[6], -1);
    TextDrawBackgroundColor(CarAccsShop[6], 255);
    TextDrawBoxColor(CarAccsShop[6], 50);
    TextDrawUseBox(CarAccsShop[6], 1);
    TextDrawSetProportional(CarAccsShop[6], 1);
    TextDrawSetSelectable(CarAccsShop[6], 1);
}

hook OnPlayerConnect(playerid)
{
    ViewingCarAcc[playerid] = -1;

    CarAccObject[playerid] = -1;

    CarAccsPTD[playerid] = CreatePlayerTextDraw(playerid, 320.000000, 330.000000, "Blue neon~n~Price: ~r~~h~150 premium points");
    PlayerTextDrawFont(playerid, CarAccsPTD[playerid], 2);
    PlayerTextDrawLetterSize(playerid, CarAccsPTD[playerid], 0.170833, 1.300000);
    PlayerTextDrawTextSize(playerid, CarAccsPTD[playerid], 400.000000, 164.000000);
    PlayerTextDrawSetOutline(playerid, CarAccsPTD[playerid], 1);
    PlayerTextDrawSetShadow(playerid, CarAccsPTD[playerid], 0);
    PlayerTextDrawAlignment(playerid, CarAccsPTD[playerid], 2);
    PlayerTextDrawColor(playerid, CarAccsPTD[playerid], -1);
    PlayerTextDrawBackgroundColor(playerid, CarAccsPTD[playerid], 255);
    PlayerTextDrawBoxColor(playerid, CarAccsPTD[playerid], 50);
    PlayerTextDrawUseBox(playerid, CarAccsPTD[playerid], 0);
    PlayerTextDrawSetProportional(playerid, CarAccsPTD[playerid], 1);
    PlayerTextDrawSetSelectable(playerid, CarAccsPTD[playerid], 0);
}

hook OnPlayerDisconnect(playerid, reason)
{
    Iter_Remove(in_car_accs_shop, playerid);

    ViewingCarAcc[playerid] = -1;

    if(IsValidDynamicPickup(CarAccObject[playerid]))
    {
        DestroyDynamicPickup(CarAccObject[playerid]);
    }

    CarAccObject[playerid] = -1;
}

hook OnPlayerClickTextDraw(playerid, Text:clickedid)
{
    if(clickedid == Text:INVALID_TEXT_DRAW)
    {
        if(GetPVarInt(playerid, "in_car_accs_shop"))
        {
            OnPlayerExitAccsShop(playerid);
        }
    }

    if(GetPVarInt(playerid, "in_car_accs_shop"))
    {
        // left
        if(clickedid == CarAccsShop[5])
        {
            if(ViewingCarAcc[playerid] == 0) ViewingCarAcc[playerid] = sizeof(CarAccessories) - 1;
            else ViewingCarAcc[playerid]--;

            UpdateAccsShop(playerid);
        }

        // right
        else if(clickedid == CarAccsShop[6])
        {
            if(ViewingCarAcc[playerid] == sizeof(CarAccessories) - 1) ViewingCarAcc[playerid] = 0;
            else ViewingCarAcc[playerid]++;
            
            UpdateAccsShop(playerid);
        }
    }
}

stock OnPlayerExitAccsShop(playerid)
{
    CancelSelectTextDraw(playerid);
    SetPlayerVirtualWorld(playerid, 0);

    SpawnPlayer(playerid);

    for(new x; x < 7; x++) TextDrawHideForPlayer(playerid, CarAccsShop[x]);
    PlayerTextDrawHide(playerid, CarAccsPTD[playerid]);

    Iter_Remove(in_car_accs_shop, playerid);

    ViewingCarAcc[playerid] = -1;

    if(IsValidDynamicPickup(CarAccObject[playerid]))
    {
        DestroyDynamicPickup(CarAccObject[playerid]);
    }

    CarAccObject[playerid] = -1;

    DeletePVar(playerid, "in_car_accs_shop");
    return 1;
}

stock UpdateAccsShop(playerid)
{
    new id = ViewingCarAcc[playerid];

    if(IsValidDynamicPickup(CarAccObject[playerid]))
    {
        DestroyDynamicPickup(CarAccObject[playerid]);
    }

    CarAccObject[playerid] = CreateDynamicPickup(CarAccessories[id][acc_model], 23, 1544.3821,-1352.9430,329.0428, GetPlayerVirtualWorld(playerid), 0, playerid);

    gString[0] = EOS;
    format(gString, sizeof(gString), "%s~n~Price: ~r~~h~%d premium points", CarAccessories[id][acc_name], CarAccessories[id][acc_price]);
    PlayerTextDrawSetString(playerid, CarAccsPTD[playerid], gString);
    return 1;
}

CB:OP_EnterCarAccsShop(playerid)
{
    if(GetPlayerWantedLevel(playerid) || Iter_Contains(in_car_accs_shop, playerid))
    {
        return SCM(playerid, COLOR_GREY, "Error: "EMBED_WHITE"You can't enter the shop right now.");
    }

    SCM(playerid, COLOR_GREY, "Sistem dezactivat temporar.");
    return 1;

    if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, COLOR_GREY, "Error: "EMBED_WHITE"You need to be in a vehicle (owned).");

    new veh = GetPlayerVehicleID(playerid);
	if(Vehicles[veh][vType] != 2) return SCM(playerid, COLOR_GREY, "Error: "EMBED_WHITE"This vehicle is not personal.");

	new vid = Vehicles[veh][vPersonal];
	if(personalVehicles[vid][pvOwner] != playerVariables[playerid][pSQLID]) return SCM(playerid, COLOR_GREY, "Error: "EMBED_WHITE"This vehicle is not owned by you.");
	if(Vehicles[veh][vEngine] == true) return SCM(playerid, COLOR_GREY, "Error: "EMBED_WHITE"You need to stop the engine.");
	if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SCM(playerid, COLOR_GREY, "Error: "EMBED_WHITE"You need to be the driver of this vehicle.");

    ViewingCarAcc[playerid] = 0;

    BeforeSpectate[playerid][pState] = GetPlayerState(playerid);
    BeforeSpectate[playerid][pWorld] = GetPlayerVirtualWorld(playerid);
    BeforeSpectate[playerid][pInt] = GetPlayerInterior(playerid);
    BeforeSpectate[playerid][pSpectating] = true;	

    GetPlayerPos(playerid, BeforeSpectate[playerid][pOldPos][0], BeforeSpectate[playerid][pOldPos][1], BeforeSpectate[playerid][pOldPos][2]);	
    GetPlayerPos(playerid, playerVariables[playerid][pLastPosX], playerVariables[playerid][pLastPosY], playerVariables[playerid][pLastPosZ]);	

    SetPlayerPosEx(playerid, 1548.8260,-1363.9695,326.2183);
    SetPlayerVirtualWorld(playerid, playerid + 2000);

    Iter_Add(in_car_accs_shop, playerid);
    
    InterpolateCameraPos(playerid, 1544.570068, -1324.938476, 335.261627, 1544.056640, -1345.920898, 333.428375, 2000);
    InterpolateCameraLookAt(playerid, 1544.405883, -1329.770507, 333.987152, 1544.218139, -1350.269897, 330.966674, 2000);

    UpdateAccsShop(playerid);
    SelectTextDraw(playerid, COLOR_WHITE);

    for(new x; x < 7; x++)
    {
        TextDrawShowForPlayer(playerid, CarAccsShop[x]);
    }

    PlayerTextDrawShow(playerid, CarAccsPTD[playerid]);

    SetPVarInt(playerid, "in_car_accs_shop", 1);
    SetPVarInt(playerid, "in_car_accs_time", gettime());
    return 1;
}