public void SavePuzzleData(int tower, int floor, double elapsedTime, ServerWriter.JobCompleteDelegate jobCompleteCB) { bool updateExistingFloor = false; foreach (TowerFloorRecord tfr in TheGameInfo.TowerData[tower].Floors) { if (tfr.Floor == floor) { if (tfr.BestTime > elapsedTime) { tfr.BestTime = (int)elapsedTime; } updateExistingFloor = true; break; } } if (!updateExistingFloor) { // Floor isnt in the local list, add it now List <TowerFloorRecord> records = new List <TowerFloorRecord>(TheGameInfo.TowerData[tower].Floors); TowerFloorRecord tfr = new TowerFloorRecord(); tfr.Floor = floor; tfr.BestTime = (int)elapsedTime; records.Add(tfr); TheGameInfo.TowerData[tower].Floors = records.ToArray(); } m_ServerWriter.SavePuzzleData(TheGameInfo, tower, floor, elapsedTime, ExpSlowdown, jobCompleteCB); }
void ValidateGameInfo_FloorInfoProcess_Handler(Task t) { Dictionary <int, List <TowerFloorRecord> > towerData = new Dictionary <int, List <TowerFloorRecord> >(); foreach (object[] row in t.Query.Rows) { // 0: record_id // 1: account_id // 2: tower // 3: floor // 4: best_time // 5: friend_rank // 6: global_rank TowerFloorRecord record = new TowerFloorRecord(); int tower = (int)row[2]; if (!towerData.ContainsKey(tower)) { towerData[tower] = new List <TowerFloorRecord>(); } record.Floor = (int)row[3]; record.BestTime = (int)row[4]; record.RankFriends = (int)row[5]; record.RankGlobal = (int)row[6]; towerData[tower].Add(record); } TowerData[] td = new TowerData[6]; for (int i = 0; i < td.Length; i++) { td[i] = new TowerData(); td[i].Tower = i; td[i].Floors = towerData.ContainsKey(i) ? towerData[i].ToArray() : null; } HTask task = (HTask)t; object[] args = (object[])t.Args; ValidateGameInfoArgs gia = (ValidateGameInfoArgs)args[0]; gia.GameInfo.TowerData = td; if (gia.RequestFinished) { ProcessValidateGameInfo(gia, task.Client); } }
TowerFloorRecord[] ReadTowerFloors(Task t) { List <TowerFloorRecord> floors = new List <TowerFloorRecord>(); foreach (object[] row in t.Query.Rows) { // 0: account_id // 1: tower // 2: floor // 3: best_time // 4: friend_rank // 5: global_rank TowerFloorRecord record = new TowerFloorRecord(); record.Floor = (int)row[2]; record.BestTime = (int)row[3]; record.RankFriends = (int)row[4]; record.RankGlobal = (int)row[5]; floors.Add(record); } return(floors.ToArray()); }