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; }*/ }
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; * * }*/ }