Beispiel #1
0
 public static Tuple <DateTime?, DateTime?, int?> GetSessionDates(string playerName)
 {
     using (DBHelpers newSession = new DBHelpers(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + playerName, "LastBattle", "WOTSStore.db")))
     {
         string sql;
         if (UserSettings.ViewSessionID == null)
         {
             sql = String.Format("select rsID, rsKey, datetime(rsUEDateFrom, 'unixepoch', 'localtime') as rsDateFrom, datetime(rsUEDateTo, 'unixepoch', 'localtime') as rsDateTo from RecentBattles_Session where datetime(rsUEDateTo, 'unixepoch', 'localtime') >= datetime({0}, 'unixepoch', 'localtime')", WOTHelper.ConvertToUnixTimestamp(WOTHelper.CurrentDateTime));
         }
         else
         {
             sql = String.Format("select rsID, rsKey, datetime(rsUEDateFrom, 'unixepoch', 'localtime') as rsDateFrom, datetime(rsUEDateTo, 'unixepoch', 'localtime') as rsDateTo from RecentBattles_Session where rsKey = '{0}'", UserSettings.ViewSessionID);
         }
         DataTable dt = newSession.GetDataTable(sql);
         if (dt.Rows.Count > 0)
         {
             return(new Tuple <DateTime?, DateTime?, int?>(Convert.ToDateTime(dt.Rows[0]["rsDateFrom"]), Convert.ToDateTime(dt.Rows[0]["rsDateTo"]), Convert.ToInt16(dt.Rows[0]["rsID"])));
         }
         else
         {
             return(new Tuple <DateTime?, DateTime?, int?>(null, null, null));
         }
     }
 }
Beispiel #2
0
        private void Read()
        {
            if (!(File.Exists(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db"))) || _TakeOn)
            {
                if (File.Exists(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "LastBattles.wot")))
                {
                    try
                    {
                        string[] fileData = File.ReadAllLines(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "LastBattles.wot"));

                        foreach (string item in fileData)
                        {
                            if (item.Contains('|'))
                            {
                                string[] rowData     = item.Split('|');
                                int      survived    = 0;
                                double   battleCount = double.Parse(rowData[2]) / 100;

                                if (rowData[10] == "True" || rowData[10] == "1")
                                {
                                    survived = 1;
                                }
                                else
                                {
                                    survived = 0;
                                }
                                if (rowData.Length >= 17)
                                {
                                    Add(int.Parse(rowData[12]), new RecentBattle()
                                    {
                                        CountryID           = int.Parse(rowData[0]),
                                        TankID              = int.Parse(rowData[1]),
                                        Battles             = (double.Parse(rowData[2]) / battleCount) / 100,
                                        Kills               = (double.Parse(rowData[3]) / battleCount) / 100,
                                        DamageReceived      = (double.Parse(rowData[4]) / battleCount) / 100,
                                        DamageDealt         = (double.Parse(rowData[5]) / battleCount) / 100,
                                        XPReceived          = (double.Parse(rowData[6]) / battleCount) / 100,
                                        Spotted             = (double.Parse(rowData[7]) / battleCount) / 100,
                                        CapturePoints       = (double.Parse(rowData[8]) / battleCount) / 100,
                                        DefencePoints       = (double.Parse(rowData[9]) / battleCount) / 100,
                                        Survived            = survived,
                                        Victory             = int.Parse(rowData[11]),
                                        BattleTime          = int.Parse(rowData[12]),
                                        Shot                = (double.Parse(rowData[13]) / battleCount) / 100,
                                        Hits                = (double.Parse(rowData[14]) / battleCount) / 100,
                                        OriginalBattleCount = rowData.Length == 18 ? (double.Parse(rowData[15])) / 100 : (battleCount),
                                        FragList            = rowData.Length == 18 ? rowData[17] : ""
                                    }
                                        );
                                }
                                else
                                {
                                    Add(int.Parse(rowData[12]), new RecentBattle()
                                    {
                                        CountryID           = int.Parse(rowData[0]),
                                        TankID              = int.Parse(rowData[1]),
                                        Battles             = (double.Parse(rowData[2]) / battleCount),
                                        Kills               = (double.Parse(rowData[3]) / battleCount),
                                        DamageReceived      = (double.Parse(rowData[4]) / battleCount),
                                        DamageDealt         = (double.Parse(rowData[5]) / battleCount),
                                        XPReceived          = (double.Parse(rowData[6]) / battleCount),
                                        Spotted             = (double.Parse(rowData[7]) / battleCount),
                                        CapturePoints       = (double.Parse(rowData[8]) / battleCount),
                                        DefencePoints       = (double.Parse(rowData[9]) / battleCount),
                                        Survived            = survived,
                                        Victory             = int.Parse(rowData[11]),
                                        BattleTime          = int.Parse(rowData[12]),
                                        Shot                = (double.Parse(rowData[13]) / battleCount),
                                        Hits                = (double.Parse(rowData[14]) / battleCount),
                                        OriginalBattleCount = rowData.Length == 18 ? (double.Parse(rowData[15])) : (battleCount),
                                        FragList            = rowData.Length == 18 ? rowData[17] : ""
                                    }
                                        );
                                }
                            }
                            else
                            {
                                string[] rowData = item.Split(',');
                                if (rowData.Length > 15)
                                {
                                    //throw away record.
                                }
                                else
                                {
                                    int    survived    = 0;
                                    double battleCount = double.Parse(rowData[2]);

                                    if (rowData[10] == "True" || rowData[10] == "1")
                                    {
                                        survived = 1;
                                    }
                                    else
                                    {
                                        survived = 0;
                                    }

                                    Add(int.Parse(rowData[12]), new RecentBattle()
                                    {
                                        CountryID           = int.Parse(rowData[0]),
                                        TankID              = int.Parse(rowData[1]),
                                        Battles             = double.Parse(rowData[2]) / battleCount,
                                        Kills               = double.Parse(rowData[3]) / battleCount,
                                        DamageReceived      = double.Parse(rowData[4]) / battleCount,
                                        DamageDealt         = double.Parse(rowData[5]) / battleCount,
                                        XPReceived          = double.Parse(rowData[6]) / battleCount,
                                        Spotted             = double.Parse(rowData[7]) / battleCount,
                                        CapturePoints       = double.Parse(rowData[8]) / battleCount,
                                        DefencePoints       = double.Parse(rowData[9]) / battleCount,
                                        Survived            = survived,
                                        Victory             = int.Parse(rowData[11]),
                                        BattleTime          = int.Parse(rowData[12]),
                                        Shot                = double.Parse(rowData[13]) / battleCount,
                                        Hits                = double.Parse(rowData[14]) / battleCount,
                                        OriginalBattleCount = rowData.Length == 18 ? double.Parse(rowData[15]) : battleCount,
                                        FragList            = rowData.Length == 18 ? rowData[17] : ""
                                    }
                                        );
                                }
                            }
                        }
                    }
                    catch
                    {
                        DeleteFile();
                    }

                    //CreateDatabase.Create(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db"));
                    Save();
                }
            }
            else
            {
                //CreateDatabase.AlterDB(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db"));
                //DateTime datefrom = DateTime.Now.AddHours(UserSettings.TimeAdjustment);
                //new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0).AddHours(UserSettings.TimeAdjustment)
                DateTime datefrom        = new DateTime();
                DateTime currentDateTime = DateTime.Now;

                if (currentDateTime.Hour >= Math.Abs(UserSettings.TimeAdjustment))
                {
                    // e.g. Reset At settings is 03:00 AM and current time is 05:00 PM
                    // we need to retrieve today's battles from current day 03:00 AM
                    datefrom = currentDateTime;
                    datefrom = new DateTime(datefrom.Year, datefrom.Month, datefrom.Day, Convert.ToInt32(Math.Abs(UserSettings.TimeAdjustment)), 0, 0);
                }
                else
                {
                    // e.g. Reset At settings is 03:00 AM and current time is 01:00 AM
                    // we need to retrieve today's battles from yesterday at 03:00 AM
                    datefrom = currentDateTime.AddDays(-1);
                    datefrom = new DateTime(datefrom.Year, datefrom.Month, datefrom.Day, Convert.ToInt32(Math.Abs(UserSettings.TimeAdjustment)), 0, 0);
                }
                using (IDBHelpers db = new DBHelpers(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db")))
                {
                    string sql = "";
                    if (UserSettings.RecentBattlesCurrentSession == 0)
                    {
                        if (UserSettings.ViewSessionID == null)
                        {
                            sql = @"select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbMileage,
                                    rbVictory, rbBattleTime, rbShot, rbHits, rbOriginalBattleCount, rbFragList, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints , rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8
                                    from RecentBattles_Session T1 join RecentBattles T2 on rbSessionID = rsKey where datetime(rsUEDateTo,'unixepoch', 'localtime') > datetime('now', 'localtime')";
                        }
                        else
                        {
                            sql = @"select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbMileage,
                                    rbVictory, rbBattleTime, rbShot, rbHits, rbOriginalBattleCount, rbFragList, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints, rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8 
                                    from RecentBattles_Session T1 join RecentBattles T2 on rbSessionID = rsKey where rsKey = '" + UserSettings.ViewSessionID + "'";
                        }
                    }
                    else
                    if (UserSettings.RecentBattlesCurrentSession == 1)     // Today's battles
                    {
                        sql = String.Format(@"select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbMileage,
                                                    rbVictory, rbBattleTime, rbShot, rbHits, rbOriginalBattleCount, rbFragList, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints, rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8
                                                    from RecentBattles T2 
                                                    where datetime(rbBattleTime, 'unixepoch') >= datetime({0}, 'unixepoch')", WOTHelper.ConvertToUnixTimestamp(datefrom));
                    }
                    else
                    if (UserSettings.RecentBattlesCurrentSession == 2)         // Last 3 days
                    {
                        datefrom = datefrom.AddDays(-2);

                        sql = String.Format(@"select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbVictory, rbBattleTime, rbMileage,
                                                        rbShot, rbHits, rbOriginalBattleCount, rbFragList, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints, rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8 from RecentBattles T2 
                                                        where datetime(rbBattleTime, 'unixepoch') >= datetime({0}, 'unixepoch')", WOTHelper.ConvertToUnixTimestamp(datefrom));
                    }
                    else
                    if (UserSettings.RecentBattlesCurrentSession == 3)             // Last week
                    {
                        datefrom = datefrom.AddDays(-6);

                        sql = String.Format(@"select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbVictory, rbBattleTime, rbShot, rbHits, rbMileage,
                                                            rbOriginalBattleCount, rbFragList, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints, rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8  from RecentBattles T2 
                                                            where datetime(rbBattleTime, 'unixepoch') >= datetime({0}, 'unixepoch')", WOTHelper.ConvertToUnixTimestamp(datefrom));
                    }
                    else
                    if (UserSettings.RecentBattlesCurrentSession == 4)
                    {
                        sql = "select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbVictory, rbBattleTime, rbShot, rbHits, rbOriginalBattleCount, rbFragList, rbMileage, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints, rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8 from RecentBattles where 1=1 ";
                    }


                    if (UserSettings.BattleMode == "15")
                    {
                        sql += " and rbBattleMode = 15 ";
                    }
                    else if (UserSettings.BattleMode == "7")
                    {
                        sql += " and rbBattleMode = 7";
                    }

                    // if (UserSettings.RecentBattlesCurrentSession == 4)
                    sql += @" order by rbID desc ";

                    if (UserSettings.RecentBattlesCurrentSession == 4)
                    {
                        sql += @" LIMIT " + UserSettings.LastPlayedCompareQuota;
                    }
                    else
                    {
                        sql += @" LIMIT " + ApplicationSettings.MaxNoGamesAllowedRB;
                    }

                    using (DataTable dt = db.GetDataTable(sql))
                    {
                        foreach (DataRow item in dt.Rows)
                        {
                            int    survived    = 0;
                            double battleCount = double.Parse(item["rbBattles"].ToString()) / 100;
                            if (item["rbSurvived"].ToString() == "True" || item["rbSurvived"].ToString() == "1")
                            {
                                survived = 1;
                            }
                            else
                            {
                                survived = 0;
                            }
                            Add(int.Parse(item["rbBattleTime"].ToString()), new RecentBattle()
                            {
                                CountryID            = int.Parse(item["rbCountryID"].ToString()),
                                TankID               = int.Parse(item["rbTankID"].ToString()),
                                Battles              = (double.Parse(item["rbBattles"].ToString()) / battleCount) / 100,
                                Kills                = (double.Parse(item["rbKills"].ToString()) / battleCount) / 100,
                                DamageReceived       = (double.Parse(item["rbDamageReceived"].ToString()) / battleCount) / 100,
                                DamageDealt          = (double.Parse(item["rbDamageDealt"].ToString()) / battleCount) / 100,
                                DamageAssistedRadio  = (double.Parse(item["rbDamageAssistedRadio"].ToString()) / battleCount) / 100,
                                DamageAssistedTracks = (double.Parse(item["rbDamageAssistedTracks"].ToString()) / battleCount) / 100,
                                XPReceived           = (double.Parse(item["rbXPReceived"].ToString()) / battleCount) / 100,
                                Spotted              = (double.Parse(item["rbSpotted"].ToString()) / battleCount) / 100,
                                CapturePoints        = (double.Parse(item["rbCapturePoints"].ToString()) / battleCount) / 100,
                                DefencePoints        = (double.Parse(item["rbDefencePoints"].ToString()) / battleCount) / 100,
                                Survived             = survived,
                                Victory              = int.Parse(item["rbVictory"].ToString()),
                                BattleTime           = int.Parse(item["rbBattleTime"].ToString()),
                                Mileage              = (double.Parse(item["rbMileage"].ToString()) / battleCount) / 100,
                                Shot = (double.Parse(item["rbShot"].ToString()) / battleCount) / 100,
                                Hits = (double.Parse(item["rbHits"].ToString()) / battleCount) / 100,
                                OriginalBattleCount    = (double.Parse(item["rbOriginalBattleCount"].ToString())) / 100,
                                FragList               = item["rbFragList"].ToString(),
                                GlobalAvgTier          = (double.Parse(item["rbGlobalAvgTier"].ToString())) / 100,
                                GlobalWinPercentage    = (double.Parse(item["rbGlobalWinPercentage"].ToString())) / 100,
                                GlobalAvgDefencePoints = (double.Parse(item["rbGlobalAvgDefPoints"].ToString())) / 100,
                                RatingBR               = (double.Parse(item["rbRatingBR"].ToString()) / battleCount) / 100,
                                RatingEff              = (double.Parse(item["rbRatingEff"].ToString()) / battleCount) / 100,
                                RatingWN7              = (double.Parse(item["rbRatingWN7"].ToString()) / battleCount) / 100,
                                RatingWN8              = (double.Parse(item["rbRatingWN8"].ToString()) / battleCount) / 100,
                                DBEntry = true
                            });
                        }
                    }
                }
            }
        }