Beispiel #1
0
        public void UpdateTable()
        {
            Room4Server.LoadAllPVPReplays();

            var replayKeys = Room4Server.AllReplayTitles;

            if (replayKeys == null || replayKeys.Length == 0)
            {
                return;
            }

            for (int i = 0; i < replayKeys.Length; i++)
            {
                var r = Room4Server.GetReplay(replayKeys[i]);

                var da = new DataAnalysis();

                DeserializeReplay(da, r);

                dac.Retrieve(da.ID, (data) =>
                {
                    var isNew = data == null;

                    if (isNew)
                    {
                        dac.AddNew(da);
                        dac.Close();
                    }
                });
            }
        }
Beispiel #2
0
        public void DeserializeReplay(DataAnalysis da, BattleReplay r)
        {
            da.ID = r.ID;

            var info = new DataAnalysisInfo();

            info.User1     = r.Usr1;
            info.User2     = r.Usr2;
            info.UserName1 = r.UsrName1;
            info.UserName2 = r.UsrName2;

            info.Date = r.Date;

            var secs = r.Length * 100 / 1000;
            var min  = secs / 60;

            secs = secs - min * 60;
            var time = (min.ToString().PadLeft(2, '0')) + ":" + (secs.ToString().PadLeft(2, '0'));

            info.Length = time;

            foreach (var para in r.Msgs)
            {
                if (para.Value.Available <= 0)
                {
                    continue;
                }

                if (para.Key == "BattleEnd")
                {
                    info.Winner = para.Value.ReadString();
                }
                else if (para.Key == "DropSoldierFromCarrier")
                {
                    var player = para.Value.ReadInt();
                    if (player == 1)
                    {
                        info.SoldierCarrierCount1++;
                    }
                    else if (player == 2)
                    {
                        info.SoldierCarrierCount2++;
                    }
                }
                else if (para.Key == "AddBattleUnitAt")
                {
                    DeserializeReplayMag(info, para.Value);
                }
            }

            da.Info = info;
        }
Beispiel #3
0
        public void CreateTable()
        {
            dac = new DataAnalysisContainer(new MySqlDbPersistence <DataAnalysis, string>(
                                                DbName, "127.0.0.1", "root", "123456",
                                                @"Replays", "CREATE TABLE Replays(ID VARCHAR(100) BINARY, Data MediumBlob,"
                                                + "Date DATETIME, Length VARCHAR(20),"
                                                + "User1 VARCHAR(100), User2 VARCHAR(100),"
                                                + "UserName1 VARCHAR(100), UserName2 VARCHAR(100),"
                                                + "Winner VARCHAR(100),"
                                                + "DogCount1 INT, DogCount2 INT,"
                                                + "SoldierCount1 INT, SoldierCount2 INT,"
                                                + "FirebatCount1 INT, FirebatCount2 INT,"
                                                + "MagSpiderCount1 INT, MagSpiderCount2 INT,"
                                                + "GhostCount1 INT, GhostCount2 INT,"
                                                + "RobotCount1 INT, RobotCount2 INT,"
                                                + "TankCount1 INT, TankCount2 INT,"
                                                + "ThorCount1 INT, ThorCount2 INT,"
                                                + "HammerCount1 INT, HammerCount2 INT,"
                                                + "SoldierCarrierCount1 INT, SoldierCarrierCount2 INT,"
                                                + "WarplaneCount1 INT, WarplaneCount2 INT,"
                                                + "MotherShipCount1 INT, MotherShipCount2 INT,"
                                                + "PRIMARY KEY(ID ASC));",
                                                new string[]
            {
                "Date", "Length",
                "User1", "User2",
                "UserName1", "UserName2",
                "Winner",
                "DogCount1", "DogCount2",
                "SoldierCount1", "SoldierCount2",
                "FirebatCount1", "FirebatCount2",
                "MagSpiderCount1", "MagSpiderCount2",
                "GhostCount1", "GhostCount2",
                "RobotCount1", "RobotCount2",
                "TankCount1", "TankCount2",
                "ThorCount1", "ThorCount2",
                "HammerCount1", "HammerCount2",
                "SoldierCarrierCount1", "SoldierCarrierCount2",
                "WarplaneCount1", "WarplaneCount2",
                "MotherShipCount1", "MotherShipCount2",
            }, (da) =>
            {
                var buff = new WriteBuffer();
                da.Serialize(buff);
                return(buff.Data);
            }, (data) =>
            {
                var rb = new RingBuffer(data);
                var da = new DataAnalysis();
                da.Deserialize(rb);
                return(da);
            }, (DataAnalysis da, string col) =>
            {
                switch (col)
                {
                case "Date":
                    return(da.Info.Date);

                case "Length":
                    return(da.Info.Length);

                case "User1":
                    return(da.Info.User1);

                case "User2":
                    return(da.Info.User2);

                case "UserName1":
                    return(da.Info.UserName1);

                case "UserName2":
                    return(da.Info.UserName2);

                case "Winner":
                    return(da.Info.Winner);

                case "DogCount1":
                    return(da.Info.DogCount1);

                case "DogCount2":
                    return(da.Info.DogCount2);

                case "SoldierCount1":
                    return(da.Info.SoldierCount1);

                case "SoldierCount2":
                    return(da.Info.SoldierCount2);

                case "FirebatCount1":
                    return(da.Info.FirebatCount1);

                case "FirebatCount2":
                    return(da.Info.FirebatCount2);

                case "MagSpiderCount1":
                    return(da.Info.MagSpiderCount1);

                case "MagSpiderCount2":
                    return(da.Info.MagSpiderCount2);

                case "GhostCount1":
                    return(da.Info.GhostCount1);

                case "GhostCount2":
                    return(da.Info.GhostCount2);

                case "RobotCount1":
                    return(da.Info.RobotCount1);

                case "RobotCount2":
                    return(da.Info.RobotCount2);

                case "TankCount1":
                    return(da.Info.TankCount1);

                case "TankCount2":
                    return(da.Info.TankCount2);

                case "ThorCount1":
                    return(da.Info.ThorCount1);

                case "ThorCount2":
                    return(da.Info.ThorCount2);

                case "HammerCount1":
                    return(da.Info.HammerCount1);

                case "HammerCount2":
                    return(da.Info.HammerCount2);

                case "SoldierCarrierCount1":
                    return(da.Info.SoldierCarrierCount1);

                case "SoldierCarrierCount2":
                    return(da.Info.SoldierCarrierCount2);

                case "WarplaneCount1":
                    return(da.Info.WarplaneCount1);

                case "WarplaneCount2":
                    return(da.Info.WarplaneCount2);

                case "MotherShipCount1":
                    return(da.Info.MotherShipCount1);

                case "MotherShipCount2":
                    return(da.Info.MotherShipCount2);
                }
                return(null);
            }));
            cida.Srv.Add("DataAnalysisContainer", dac);
        }