public void Initialize(IGameDatabaseAPI PlayniteApiDatabase, StatisticsSettings settings) { this.PlayniteApiDatabase = PlayniteApiDatabase; foreach (var item in PlayniteApiDatabase.Emulators) { ListEmulators.Add(item.Id); } Statistics = new StatisticsClass { Name = "All", GameGenres = new List <Counter>(), GameGenresTime = new List <CounterTime>(), GameSource = new List <Counter>(), GameFavorite = new List <Counter>(), GameIsInstalled = new List <Counter>(), GameIsNotLaunching = new List <Counter>(), GameHidden = new List <Counter>(), GameCompletionStatus = new List <Counter>(), Playtime = 0, Total = 0 }; StatisticsSourceDatabase = new ConcurrentDictionary <Guid, StatisticsClass>(); foreach (var Game in PlayniteApiDatabase.Games) { if (!Game.Hidden) { Add(Game); if (Game.PlayAction != null && Game.PlayAction.EmulatorId != null && ListEmulators.Contains(Game.PlayAction.EmulatorId)) { Add(Game, Game.PlayAction.EmulatorId); } else { Add(Game, Game.SourceId); } } else { if (settings.IncludeHiddenGames) { if (Game.PlayAction != null && Game.PlayAction.EmulatorId != null && ListEmulators.Contains(Game.PlayAction.EmulatorId)) { Add(Game, Game.PlayAction.EmulatorId); } else { Add(Game, Game.SourceId); } } } } }
private void Add(Game Game, Guid?SourceId = null) { List <Counter> GameGenres = new List <Counter>(); List <Counter> GameSource = new List <Counter>(); List <Counter> GameFavorite = new List <Counter>(); List <Counter> GameIsInstalled = new List <Counter>(); List <Counter> GameIsNotLaunching = new List <Counter>(); List <Counter> GameHidden = new List <Counter>(); List <Counter> GameCompletionStatus = new List <Counter>(); long Playtime = 0; bool IsFind = false; // Initialization variables if (SourceId == null) { GameGenres = Statistics.GameGenres; GameSource = Statistics.GameSource; GameFavorite = Statistics.GameFavorite; GameIsInstalled = Statistics.GameIsInstalled; GameIsNotLaunching = Statistics.GameIsNotLaunching; GameHidden = Statistics.GameHidden; GameCompletionStatus = Statistics.GameCompletionStatus; Playtime = Statistics.Playtime;; } else { if (StatisticsSourceDatabase.TryGetValue((Guid)SourceId, out var item)) { GameGenres = item.GameGenres; GameSource = item.GameSource; GameFavorite = item.GameFavorite; GameIsInstalled = item.GameIsInstalled; GameIsNotLaunching = item.GameIsNotLaunching; GameHidden = item.GameHidden; GameCompletionStatus = item.GameCompletionStatus; Playtime = item.Playtime; } else { string SourceName = ""; if (ListEmulators.Contains((Guid)SourceId)) { SourceName = PlayniteApiDatabase.Emulators.Get((Guid)SourceId).Name; } else { if (SourceId == Guid.Parse("00000000-0000-0000-0000-000000000000")) { SourceName = "Playnite"; } else { SourceName = Game.Source.Name; } } StatisticsClass StatisticsSource = new StatisticsClass { Name = SourceName, GameGenres = new List <Counter>(), GameSource = new List <Counter>(), GameFavorite = new List <Counter>(), GameIsInstalled = new List <Counter>(), GameIsNotLaunching = new List <Counter>(), GameHidden = new List <Counter>(), GameCompletionStatus = new List <Counter>(), Playtime = 0, Total = 0 }; StatisticsSourceDatabase.TryAdd((Guid)SourceId, StatisticsSource); GameGenres = new List <Counter>(); GameSource = new List <Counter>(); GameFavorite = new List <Counter>(); GameIsInstalled = new List <Counter>(); GameIsNotLaunching = new List <Counter>(); GameHidden = new List <Counter>(); GameCompletionStatus = new List <Counter>(); Playtime = 0; } } if (Game.IsInstalled) { GameIsInstalled.Add(new Counter { Id = Game.Id, Name = Game.Name }); } if (Game.LastActivity == null) { GameIsNotLaunching.Add(new Counter { Id = Game.Id, Name = Game.Name }); } if (Game.Genres != null) { foreach (var item in Game.Genres) { IsFind = false; for (int i = 0; i < GameGenres.Count; i++) { if (item.Name == GameGenres[i].Name) { GameGenres[i].Count += 1; IsFind = true; } } if (IsFind == false) { GameGenres.Add(new Counter { Id = item.Id, Name = item.Name, Count = 1 }); } } } if (SourceId == null) { IsFind = false; string SourceName = ""; if (Game.SourceId == Guid.Parse("00000000-0000-0000-0000-000000000000")) { SourceName = "Playnite"; } else { SourceName = Game.Source.Name; } for (int i = 0; i < GameSource.Count; i++) { if (SourceName == GameSource[i].Name) { GameSource[i].Count += 1; IsFind = true; } } if (IsFind == false) { GameSource.Add(new Counter { Id = Game.SourceId, Name = SourceName, Count = 1 }); } } else { string GameName = Game.Name; GameSource.Add(new Counter { Id = Game.Id, Name = GameName, Count = Game.Playtime }); } if (Game.Favorite) { GameFavorite.Add(new Counter { Id = Game.Id, Name = Game.Name }); } if (Game.Hidden) { GameHidden.Add(new Counter { Id = Game.Id, Name = Game.Name }); } IsFind = false; for (int i = 0; i < GameCompletionStatus.Count; i++) { if ("" + Game.CompletionStatus == GameCompletionStatus[i].Name) { GameCompletionStatus[i].Count += 1; IsFind = true; } } if (IsFind == false) { GameCompletionStatus.Add(new Counter { Name = "" + Game.CompletionStatus, Count = 1 }); } Playtime += Game.Playtime; if (SourceId == null) { Statistics.GameGenres = GameGenres; Statistics.GameSource = GameSource; Statistics.GameFavorite = GameFavorite; Statistics.GameIsInstalled = GameIsInstalled; Statistics.GameIsNotLaunching = GameIsNotLaunching; Statistics.GameHidden = GameHidden; Statistics.GameCompletionStatus = GameCompletionStatus; Statistics.Playtime = Playtime; Statistics.Total += 1; } else { StatisticsSourceDatabase[(Guid)SourceId].GameGenres = GameGenres; StatisticsSourceDatabase[(Guid)SourceId].GameSource = GameSource; StatisticsSourceDatabase[(Guid)SourceId].GameFavorite = GameFavorite; StatisticsSourceDatabase[(Guid)SourceId].GameIsInstalled = GameIsInstalled; StatisticsSourceDatabase[(Guid)SourceId].GameIsNotLaunching = GameIsNotLaunching; StatisticsSourceDatabase[(Guid)SourceId].GameHidden = GameHidden; StatisticsSourceDatabase[(Guid)SourceId].GameCompletionStatus = GameCompletionStatus; StatisticsSourceDatabase[(Guid)SourceId].Playtime = Playtime; StatisticsSourceDatabase[(Guid)SourceId].Total += 1; } }
public GameBoard(string pGameBoardFile, Player[] pPlayers) { System.Xml.XmlDocument xmlfile = new System.Xml.XmlDocument(); eActionType contextAction; Version fileVersion = new Version("0.0"); FreeParkingOwner = BANK; FreeJailOwner = BANK; xmlfile.Load(System.Environment.ExpandEnvironmentVariables(pGameBoardFile)); if (!Version.TryParse(xmlfile.SelectSingleNode("monopoly").Attributes["version"]?.InnerText, out fileVersion)) { fileVersion = new Version("0.0"); } if (fileVersion.Minor < 6) { throw new NotSupportedException("Gameboard Version to low"); } Settings = new Settings(xmlfile.SelectSingleNode("monopoly")); foreach (System.Xml.XmlNode xmlfield in xmlfile.SelectNodes("monopoly/fields/*")) { ushort contextCash; string contextName; contextName = xmlfield.Attributes.GetNamedItem("name")?.InnerText; ushort.TryParse(xmlfield.Attributes.GetNamedItem("cash")?.InnerText, out contextCash); switch (xmlfield.Name.ToLower()) { case "start": { FieldCol.Add(contextName, new Fields.Startfield(contextCash, contextName)); break; } case "house": { FieldCol.Add(contextName, new Fields.HouseField(xmlfield, Settings)); break; } case "chance": { var actionText = xmlfield.Attributes.GetNamedItem("action")?.InnerText.Split(','); eActionType[] actions = new eActionType[actionText.Length - 1 + 1]; for (int i = 0; i < actionText.Length; i++) { if (!(Enum.TryParse(actionText[i], out actions[i]))) { System.Diagnostics.Debug.WriteLine($"field {contextName} has unknown action {xmlfield.Attributes.GetNamedItem("action")?.InnerText}"); } } FieldCol.Add(contextName, new Fields.ChanceField(contextName, actions[0], contextCash)); break; } case "station": { FieldCol.Add(contextName, new Fields.StationField(contextName, contextCash)); break; } case "jail": { if (!Enum.TryParse(xmlfield.Attributes.GetNamedItem("action")?.InnerText, out contextAction)) { System.Diagnostics.Debug.WriteLine($"field {contextName} has unknown action {xmlfield.Attributes.GetNamedItem("action")?.InnerText}"); } FieldCol.Add(contextName, new Fields.JailField(contextName, contextAction)); break; } default: { FieldCol.Add(contextName, new Fields.ChanceField(contextName, eActionType.None, 0)); throw new NotSupportedException($"Fieldtype {nameof(xmlfield.Name)}={xmlfield.Name} not supported"); } } } if (Settings.UseWundertuete) { Wundertuete = new Entity("Wundertuete", System.Drawing.Color.White); } PlayerRank = pPlayers; Statistics = new StatisticsClass(this); }
protected void CreateTableButton_Click(object sender, EventArgs e) { int datefieldId = 0; Int32.TryParse(DateForFilter.SelectedValue, out datefieldId); int fieldId = 0; Int32.TryParse(FiedsDropDownList.SelectedValue, out fieldId); int fieldToSerachIn = 0; Int32.TryParse(FilterFiedsDropDownList.SelectedValue, out fieldToSerachIn); DateTime startDate = DateTime.MinValue; DateTime.TryParse(StartDateTextBox.Text, out startDate); DateTime endDate = DateTime.MaxValue; DateTime.TryParse(EndDateTextBox.Text, out endDate); if (endDate.Year < 10) { endDate = DateTime.MaxValue; } DateTime LastChangeStartDate = DateTime.MinValue; DateTime.TryParse(LastChangedDateStartTextBox.Text, out LastChangeStartDate); DateTime LastChangeEndDate = DateTime.MaxValue; DateTime.TryParse(LastChangedDateEndTextBox.Text, out LastChangeEndDate); if (LastChangeEndDate.Year < 10) { LastChangeEndDate = DateTime.MaxValue; } string valueToSearch = ""; valueToSearch = SearchInFieldTextBox.Text; int registerId = 0; Int32.TryParse(RegistersDropoDownList.SelectedValue, out registerId); //Получили все параметры со страницы StatisticsClass stClass = new StatisticsClass(); List <CollectedFieldsValues> resultList = stClass.GetAllCollectedForFieldInDateRange(registerId, fieldId, datefieldId, startDate, endDate, fieldToSerachIn, valueToSearch); resultList = (from a in resultList where a.CreateDateTime >= LastChangeStartDate && a.CreateDateTime <= LastChangeEndDate select a).Distinct().ToList(); List <int> cardIds = (from a in resultList select a.FkCollectedCard).Distinct().ToList(); Session["cardsIds"] = cardIds; List <string> uniqueValues = (from a in resultList orderby a.ValueText.Trim() select a.ValueText.Trim()).Distinct().ToList(); Table resultTable = new Table() { CssClass = "resultTable" }; resultTable.Rows.Add(new TableRow() { Cells = { new TableCell() { Text = "Название" }, new TableCell() { Text = "Кол-во" }, new TableCell() { Text = "Список номеров" } } }); int sum = 0; foreach (string current in uniqueValues) { List <CollectedFieldsValues> res = (from a in resultList where a.ValueText.Trim() == current select a).ToList(); //List<string> = res.Select(mc=>mc.) List <CollectedCards> cards = new List <CollectedCards>(); foreach (CollectedFieldsValues tmp in res) { cards.Add(main.GetCardById(tmp.FkCollectedCard)); } string cardIdsText = String.Join(", ", cards.Select(mc => mc.MaInFieldID).ToList()); int count = res.Count(); sum += count; resultTable.Rows.Add(new TableRow() { Cells = { new TableCell() { Text = current }, new TableCell() { Text = count.ToString() }, new TableCell() { Text = cardIdsText } } }); } resultTable.Rows.Add(new TableRow() { Cells = { new TableCell() { Text = "Итого" }, new TableCell() { Text = sum.ToString() } } }); resultDiv.Controls.Add(resultTable); }
protected void SumByButton_Click(object sender, EventArgs e) { int datefieldId = 0; Int32.TryParse(DateForFilter.SelectedValue, out datefieldId); int fieldId = 0; Int32.TryParse(FiedsDropDownList.SelectedValue, out fieldId); int fieldToSerachIn = 0; Int32.TryParse(FilterFiedsDropDownList.SelectedValue, out fieldToSerachIn); DateTime startDate = DateTime.MinValue; DateTime.TryParse(StartDateTextBox.Text, out startDate); DateTime endDate = DateTime.MaxValue; DateTime.TryParse(EndDateTextBox.Text, out endDate); if (endDate.Year < 10) { endDate = DateTime.MaxValue; } DateTime LastChangeStartDate = DateTime.MinValue; DateTime.TryParse(LastChangedDateStartTextBox.Text, out LastChangeStartDate); DateTime LastChangeEndDate = DateTime.MaxValue; DateTime.TryParse(LastChangedDateEndTextBox.Text, out LastChangeEndDate); if (LastChangeEndDate.Year < 10) { LastChangeEndDate = DateTime.MaxValue; } string valueToSearch = ""; valueToSearch = SearchInFieldTextBox.Text; int registerId = 0; Int32.TryParse(RegistersDropoDownList.SelectedValue, out registerId); StatisticsClass stClass = new StatisticsClass(); List <CollectedFieldsValues> resultList = stClass.GetAllCollectedForFieldInDateRange(registerId, fieldId, datefieldId, startDate, endDate, fieldToSerachIn, valueToSearch); resultList = (from a in resultList where a.CreateDateTime >= LastChangeStartDate && a.CreateDateTime <= LastChangeEndDate select a).Distinct().ToList(); decimal sum = 0; foreach (CollectedFieldsValues current in resultList) { decimal tmp = 0; decimal.TryParse(current.ValueText, out tmp); sum += tmp; } SumByResultLabel.Text = "Сумма: " + sum; }