﻿using UnityEngine;

public class UIScalerCF : MonoBehaviour
{
    const float equator = 40075000;

    public float coof = 1;

    private int[] displayValues = { 10000000, 5000000, 2000000, 1000000, 500000, 200000, 100000, 50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1 };

    private OnlineMaps map;
    private Vector2 berlin;
    private Vector2 munich;

    private void Start()
    {
        map = OnlineMaps.instance;
        map.OnChangeZoom += UpdateScaler;
        UpdateScaler();

        //Berlin in long,lat
        berlin = new Vector2(13.404954f, 52.520008f);
        munich = new Vector2(11.576124f, 48.137154f);

        OnlineMapsMarkerManager.CreateItem(berlin, "Berlin");
        OnlineMapsMarkerManager.CreateItem(munich, "Munich");
    }

    private void UpdateScaler()
    {
        int s;
        if (map.zoom < 5) s = Mathf.RoundToInt(equator / (1 << map.zoom) * coof * map.zoomCoof * map.width / OnlineMapsUtils.tileSize);
        else s = Mathf.RoundToInt(OnlineMapsUtils.DistanceBetweenPoints(map.topLeftPosition, map.bottomRightPosition).x * 1000 * coof);

        // Distance between Berlin and Munich
        var realDistanceMeters = OnlineMapsUtils.DistanceBetweenPoints(berlin, munich) * 1000;
        var c = realDistanceMeters.magnitude / s;

        Debug.Log("Multiplier ::" + c + "  scale distance; " + s + "  real distance: " + realDistanceMeters.magnitude);

    }
}