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(); } }); } }
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; }
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); }