Exemple #1
0
        public async Task <Player> GetPlayer(long id, bool onlineOnly = false)
        {
            if (ContainsKey(id))
            {
                TryGetValue(id, out var value);
                return(value);
            }

            if (onlineOnly)
            {
                return(null);
            }

            if (!Redis.IsConnected)
            {
                return(await PlayerDb.Get(id));
            }

            var player = await Redis.GetCachedPlayer(id);

            if (player != null)
            {
                return(player);
            }

            player = await PlayerDb.Get(id);

            await Redis.CachePlayer(player);

            return(player);
        }
Exemple #2
0
        public override async Task Process()
        {
            var player = await PlayerDb.Get(FacebookId);

            if (player == null)
            {
                Device.Player.FacebookId = FacebookId;
                await Resources.Gateway.Send(new FacebookAccountBoundMessage(Device));
            }
            else
            {
                if (Device.Player.AccountId != player.AccountId)
                {
                    await Resources.Gateway.Send(new FacebookAccountAlreadyBoundMessage(Device) { Player = player });
                }
                else
                {
                    Device.Player.FacebookId = FacebookId;
                    await Resources.Gateway.Send(new FacebookAccountBoundMessage(Device));
                }
            }
        }