public LineChart(int width, int height, string key) { chart = new Texture2D(width, height); for (var x = 0; x < chart.width; ++x) for (var y = 0; y < chart.height; ++y) chart.SetPixel(x, y, x % 10 == 0 || y % 5 == 0 ? Color.gray : Color.black); var values = Data.Battle["history"][key]; var maxVal = values.list.Max(valueList => valueList.list.Max(value => value.n)); var deltaX = (float)width / Data.Replay.FrameCount * 0.98f; var deltaY = height / maxVal * 0.95f; var p0 = new Vector2(0, values[0][0].n * deltaY); var p1 = new Vector2(0, values[0][1].n * deltaY); for (var i = 1; i < Data.Replay.FrameCount; ++i) if (values[i][0].i == values[i][1].i && values[i - 1][0].i == values[i - 1][1].i) { var p = new Vector2(i * deltaX, values[i][0].n * deltaY); var c = (Data.TeamColor.Target[0] + Data.TeamColor.Target[1]) / 2; chart.Line(p0, p, c, Data.GUI.LineThickness); chart.Line(p1, p, c, Data.GUI.LineThickness); p1 = p0 = p; } else { var p = new Vector2(i * deltaX, values[i][0].n * deltaY); chart.Line(p0, p, Data.TeamColor.Target[0], Data.GUI.LineThickness); p0 = p; p = new Vector2(i * deltaX, values[i][1].n * deltaY); chart.Line(p1, p, Data.TeamColor.Target[1], Data.GUI.LineThickness); p1 = p; } chart.Apply(); }