Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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());
        }