Пример #1
0
    float metricToValue(KSProject proj, KSMetric metric, string type)
    {
        string label = metric.Name;
        GeoBounds gb = GeoBounds.List[GA.Geographic];

        if(label == "Latitude")
            return (proj.GetMetric("Lat") - gb.Bottom) * 10 / gb.Scale;
        if(label == "Longitude")
            return (proj.GetMetric("Lon") - gb.Left) * 10 / gb.Scale;

        float zoom = GA.zoom;

        float s, logValue;

        if(type == "linear")
            return proj.GetMetric(label) / metric.Zoom / zoom;
        else
        {
            //s ^ 10 = modifier * zoom * 10
            //s ^ x = value
            s = Mathf.Log(metric.Zoom * zoom, 10);
            logValue = proj.GetMetric(label) > 0 ? Mathf.Log(proj.GetMetric(label), s) : 0;

            //Debug.Log(s + " ^ " + logValue + " = " + proj.GetMetric(label));
            return logValue;
        }

        return 0;
        /*
        switch(label.ToLower())
        //switch(label)
        {
        case "raised":
            if(type == "linear")
                return proj.raised / Modifiers["Raised"] / zoom;
            else
            {
        //				s ^ 10 = modifier * zoom * 10
        //				s ^ x = value
                s = Mathf.Log(Modifiers["Raised"] * zoom, 10);
                logValue = proj.raised > 0 ? Mathf.Log(proj.raised, s) : 0;

                //Debug.Log(s + " ^ " + logValue + " = " + proj.raised);
                return logValue;
            }
            break;

        case "goal":
            //return proj.goal / Modifiers["Goal"] / zoom;
            val = proj.goal / Modifiers["Goal"] / zoom;
            if(type == "linear")
                return val;
            else
            {
                s = Mathf.Log(Modifiers["Goal"] * zoom, 10);
                logValue = proj.goal > 0 ? Mathf.Log(proj.goal, s) : 0;

                //Debug.Log(proj.raised + " ^ " + s + " = " + logValue);
                return logValue;
            }
            break;

        case "backers":
            //return proj.backers / Modifiers["Backers"] / zoom;
            if(type == "linear")
                return proj.backers / Modifiers["Backers"] / zoom;
            else
            {
                s = Mathf.Log(Modifiers["Backers"] * zoom, 10);
                logValue = proj.backers > 0 ? Mathf.Log(proj.backers, s) : 0;
                return logValue;
            }
            break;
        case "comments":
            //return proj.comments / Modifiers["Comments"] / zoom;
            if(type == "linear")
                return proj.comments / Modifiers["Comments"] / zoom;
            else
            {
                s = Mathf.Log(Modifiers["Comments"] * zoom, 10);
                logValue = proj.comments > 0 ? Mathf.Log(proj.comments, s) : 0;
                return logValue;
            }
            break;
        case "dpb":
            //return proj.backers == 0 ? 0 : proj.raised / proj.backers / Modifiers["DpB"] / zoom;
            if(type == "linear")
                return Mathf.Min(proj.backers, proj.raised) == 0 ? 0 : proj.raised / proj.backers / Modifiers["DpB"] / zoom;
            else
            {
                s = Mathf.Log(Modifiers["DpB"] * zoom, 10);
                logValue = proj.backers > 0 ? Mathf.Log(proj.raised / proj.backers, s) : 0;
                return logValue;
            }
            break;
        case "% raised":
            //return proj.raised / proj.goal / Modifiers["% Raised"] / zoom;
            if(type == "linear")
                return proj.raised / proj.goal / Modifiers["% Raised"] / zoom;
            else
            {
                s = Mathf.Log(Modifiers["DpB"] * zoom, 10);
                logValue = proj.raised > 0 ? Mathf.Log((proj.raised / proj.goal) + 1, s) : 0;
                return logValue;
            }
            break;
        case "latitude":
            return (proj.lat - gb.Bottom) * 10 / gb.Scale;
            break;
        case "longitude":
            return (proj.lon - gb.Left) * 10 / gb.Scale;
            break;
        case "zero":
        default:
            return 0;
            break;

        }*/
    }
Пример #2
0
    float metricToValue(KSProject proj, KSMetric metric, string type)
    {
        string label = metric.Name;
        GeoBounds gb = GeoBounds.List[GA.Geographic];

        if (label == "Latitude")
        {
            return((proj.GetMetric("Lat") - gb.Bottom) * 10 / gb.Scale);
        }
        if (label == "Longitude")
        {
            return((proj.GetMetric("Lon") - gb.Left) * 10 / gb.Scale);
        }

        float zoom = GA.zoom;

        float s, logValue;

        if (type == "linear")
        {
            return(proj.GetMetric(label) / metric.Zoom / zoom);
        }
        else
        {
            //s ^ 10 = modifier * zoom * 10
            //s ^ x = value
            s        = Mathf.Log(metric.Zoom * zoom, 10);
            logValue = proj.GetMetric(label) > 0 ? Mathf.Log(proj.GetMetric(label), s) : 0;

            //Debug.Log(s + " ^ " + logValue + " = " + proj.GetMetric(label));
            return(logValue);
        }

        return(0);

        /*
         * switch(label.ToLower())
         * //switch(label)
         * {
         * case "raised":
         *      if(type == "linear")
         *              return proj.raised / Modifiers["Raised"] / zoom;
         *      else
         *      {
         * //				s ^ 10 = modifier * zoom * 10
         * //				s ^ x = value
         *              s = Mathf.Log(Modifiers["Raised"] * zoom, 10);
         *              logValue = proj.raised > 0 ? Mathf.Log(proj.raised, s) : 0;
         *
         *              //Debug.Log(s + " ^ " + logValue + " = " + proj.raised);
         *              return logValue;
         *      }
         *      break;
         *
         * case "goal":
         *      //return proj.goal / Modifiers["Goal"] / zoom;
         *      val = proj.goal / Modifiers["Goal"] / zoom;
         *      if(type == "linear")
         *              return val;
         *      else
         *      {
         *              s = Mathf.Log(Modifiers["Goal"] * zoom, 10);
         *              logValue = proj.goal > 0 ? Mathf.Log(proj.goal, s) : 0;
         *
         *              //Debug.Log(proj.raised + " ^ " + s + " = " + logValue);
         *              return logValue;
         *      }
         *      break;
         *
         * case "backers":
         *      //return proj.backers / Modifiers["Backers"] / zoom;
         *      if(type == "linear")
         *              return proj.backers / Modifiers["Backers"] / zoom;
         *      else
         *      {
         *              s = Mathf.Log(Modifiers["Backers"] * zoom, 10);
         *              logValue = proj.backers > 0 ? Mathf.Log(proj.backers, s) : 0;
         *              return logValue;
         *      }
         *      break;
         * case "comments":
         *      //return proj.comments / Modifiers["Comments"] / zoom;
         *      if(type == "linear")
         *              return proj.comments / Modifiers["Comments"] / zoom;
         *      else
         *      {
         *              s = Mathf.Log(Modifiers["Comments"] * zoom, 10);
         *              logValue = proj.comments > 0 ? Mathf.Log(proj.comments, s) : 0;
         *              return logValue;
         *      }
         *      break;
         * case "dpb":
         *      //return proj.backers == 0 ? 0 : proj.raised / proj.backers / Modifiers["DpB"] / zoom;
         *      if(type == "linear")
         *              return Mathf.Min(proj.backers, proj.raised) == 0 ? 0 : proj.raised / proj.backers / Modifiers["DpB"] / zoom;
         *      else
         *      {
         *              s = Mathf.Log(Modifiers["DpB"] * zoom, 10);
         *              logValue = proj.backers > 0 ? Mathf.Log(proj.raised / proj.backers, s) : 0;
         *              return logValue;
         *      }
         *      break;
         * case "% raised":
         *      //return proj.raised / proj.goal / Modifiers["% Raised"] / zoom;
         *      if(type == "linear")
         *              return proj.raised / proj.goal / Modifiers["% Raised"] / zoom;
         *      else
         *      {
         *              s = Mathf.Log(Modifiers["DpB"] * zoom, 10);
         *              logValue = proj.raised > 0 ? Mathf.Log((proj.raised / proj.goal) + 1, s) : 0;
         *              return logValue;
         *      }
         *      break;
         * case "latitude":
         *      return (proj.lat - gb.Bottom) * 10 / gb.Scale;
         *      break;
         * case "longitude":
         *      return (proj.lon - gb.Left) * 10 / gb.Scale;
         *      break;
         * case "zero":
         * default:
         *      return 0;
         *      break;
         *
         * }*/
    }