using System.Globalization;
using GTANetworkAPI;
using ReallifeGamemode.Server.Classes;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Server.Wanted;

/**
* @overview Life of German Reallife - Main Class (Main.cs)
* @author VegaZ, hydrant
* @copyright (c) 2008 - 2018 Life of German
*/

namespace ReallifeGamemode.Server
{
    public class Main : Script
    {
        public static readonly Vector3 DEFAULT_SPAWN_POSITION = new Vector3(-427.5189, 1116.453, 326.7829);
        public static readonly float DEFAULT_SPAWN_HEADING = 340.8f;

        public static readonly CultureInfo SERVER_CULTURE = new CultureInfo("de-DE");

        [ServerEvent(Event.ResourceStart)]
        public void OnResourceStart()
        {
            NAPI.Server.SetGlobalServerChat(false);

            NAPI.Server.SetCommandErrorMessage("~r~[FEHLER]~s~ Dieser Command existiert nicht.");
            NAPI.Server.SetDefaultSpawnLocation(DEFAULT_SPAWN_POSITION, DEFAULT_SPAWN_HEADING);
            NAPI.Server.SetAutoSpawnOnConnect(false);
            NAPI.Server.SetAutoRespawnAfterDeath(false);
            NAPI.Data.SetWorldData("playerCreatorDimension", 0);



            InventoryManager.LoadItems();

            TuningManager.LoadTuningGarages();

            TimeManager.StartTimeManager();
            VehicleManager.StartTimer();

            DatabaseHelper.InitDatabaseFirstTime();

            FactionHelper.CheckFactionBankAccounts();
            BusinessManager.LoadBusinesses();
            InteriorManager.LoadInteriors();
            DoorManager.LoadDoors();
            ATMManager.InitATMs();
            CityHallManager.LoadCityHall();
            JobManager.LoadJobs();
            HouseManager.LoadHouses();


            TempBlip tempBlip = new TempBlip()
            {
                Color = 1,
                Name = "",
                Transparency = 0,
                ShortRange = true,
                Sprite = 1,
                Scale = 1,
            };

            NAPI.Data.SetWorldData("blipTemplate", tempBlip);

            WantedEscapeTimer.WantedTimer();
            Jail.JailTimer();

        }
    }
}