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;
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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;
        }