Пример #1
0
        public async Task<PlayerInfo> RequestPlayerInfo(ulong pid)
        {
            if (!await CheckValid(pid))
            {
                return null;
            }

            using (var accesser = await Program.CacheService.GetPlayerInfoAccesser(pid))
            {
                var info = await accesser.LoadPlayerInfoAsync();

                if (info != null)
                {
                    Console.WriteLine("LogicServiceImpl.RequestPlayerInfo load PlayerInfo complete pid={0}", pid);

                    return info;
                }

                Console.WriteLine("LogicServiceImpl.RequestPlayerInfo cache miss pid={0}", pid);

                using (var dbAccesser = await Program.DbService.GetPlayerInfoReader(pid))
                {
                    info = await dbAccesser.LoadPlayerInfoAsync();

                    if (info == null)
                    {
                        Console.WriteLine("LogicServiceImpl.RequestPlayerInfo db not exist create new pid={0}", pid);

                        info = new PlayerInfo()
                        {
                            Pid = pid,
                            Name = "default",
                            Level = 1,
                            Item = new PlayerInfoItem() { ItemList = new List<uint>() { 10001 }, Money = 100 },
                            Skill = new PlayerInfoSkill() { SkillList = new List<uint>() { 1001 }, },
                        };
                    }

                    accesser.UpdatePlayerInfo(info);

                    await accesser.SubmitChanges();

                    return info;
                }
            }
        }