private void PlotCities(PlotModel m) { if (Empires == null) { return; } AddXDatesAxis(m); //miasta LinearAxis citiesY = new LinearAxis(); citiesY.Title = Labels.Cities; citiesY.Key = "cities"; citiesY.Position = AxisPosition.Right; citiesY.MajorGridlineStyle = LineStyle.None; citiesY.MinorGridlineStyle = LineStyle.None; m.Axes.Add(citiesY); foreach (var empire in Empires.OrderBy(x => x.Key.CitiesNo)) { OxyPlot.Series.StairStepSeries citiesSerie = new OxyPlot.Series.StairStepSeries(); citiesSerie.XAxisKey = "x"; citiesSerie.YAxisKey = "cities"; citiesSerie.VerticalStrokeThickness = 0.2; citiesSerie.MarkerType = MarkerType.None; citiesSerie.Title = string.Format("{0} ({1})", empire.Key.PlayerName, empire.Key.AlianceName); foreach (var hr in empire.Value.OrderBy(x => x.CreateDT.Value)) { citiesSerie.Points.Add(DateTimeAxis.CreateDataPoint(hr.CreateDT.Value, hr.CitiesNo)); } m.Series.Add(citiesSerie); } }
private void PlotScore(PlotModel m) { if (Empires == null) { return; } AddXDatesAxis(m); //punktacja LinearAxis scoreY = new LinearAxis(); if (DiffScore) { scoreY.Title = Labels.ScoreSpeed; } else { scoreY.Title = Labels.Score; } scoreY.Key = "score"; scoreY.Position = AxisPosition.Left; scoreY.MajorGridlineStyle = LineStyle.Solid; scoreY.MinorGridlineStyle = LineStyle.Dot; m.Axes.Add(scoreY); foreach (var empire in Empires.OrderBy(x => x.Key.Rank)) { long lastScore = -1; double scoreValue = 0; DateTime lastTime = DateTime.Now; double deltaTime = 0; OxyPlot.Series.LineSeries ls = new OxyPlot.Series.LineSeries(); ls.XAxisKey = "x"; ls.YAxisKey = "score"; ls.MarkerType = MarkerType.Diamond; ls.Title = string.Format("{0} ({1})", empire.Key.PlayerName, empire.Key.AlianceName); foreach (var hr in empire.Value.OrderBy(x => x.CreateDT.Value)) { if (DiffScore) { if (lastScore < 0) { //pierwszy wynik, zaczynam od zera lastScore = hr.Score; lastTime = hr.CreateDT.Value; scoreValue = 0; } else { deltaTime = (hr.CreateDT.Value - lastTime).TotalMinutes; //liczę przyrosty na minutę, jeżeli czas między pomiaram > 3h, inaczej nie ma to sensu - za wolno punkty przyrastają i będąg głupoty if (deltaTime > 180) { scoreValue = (hr.Score - lastScore) / deltaTime; lastScore = hr.Score; lastTime = hr.CreateDT.Value; } } } else { scoreValue = hr.Score; } if (((DiffScore && (deltaTime > 60)) || !DiffScore) && ShowScore) { ls.Points.Add(DateTimeAxis.CreateDataPoint(hr.CreateDT.Value, scoreValue)); } } m.Series.Add(ls); } }