Ejemplo n.º 1
0
        public async Task JoinParty(string partyName, string playerObj)
        {
            var player = CompressionHelper.Decompress <PlayerModel>(playerObj);

            var ladder = await _ladderService.GetLadderForPlayer(player.Character.League, player.Character.Name);

            if (ladder == null)
            {
                ladder = await _ladderService.GetLadderForLeague(player.Character.League);
            }
            player.LadderInfo = ladder;

            // set initial id of player
            player.ConnectionID = Context.ConnectionId;

            //update ConnectionId:Partyname index
            await AddToIndex(partyName);

            // look for party
            var party = await _cache.GetAsync <PartyModel>($"party:{partyName}");

            if (party == null)
            {
                party = new PartyModel()
                {
                    Name = partyName, Players = new List <PlayerModel> {
                        player
                    }
                };
                await _cache.SetAsync <PartyModel>($"party:{partyName}", party);

                await Clients.Caller.SendAsync("EnteredParty", CompressionHelper.Compress(party), CompressionHelper.Compress(player));
            }
            else
            {
                var oldPlayer = party.Players.FirstOrDefault(x => x.Character.Name == player.Character.Name || x.ConnectionID == player.ConnectionID);

                if (oldPlayer == null)
                {
                    party.Players.Insert(0, player);
                }
                else
                {
                    var index = party.Players.IndexOf(oldPlayer);
                    party.Players[index] = player;
                }

                await _cache.SetAsync <PartyModel>($"party:{partyName}", party);

                await Clients.Caller.SendAsync("EnteredParty", CompressionHelper.Compress(party), CompressionHelper.Compress(player));
            }

            await Groups.AddToGroupAsync(Context.ConnectionId, partyName);

            await Clients.OthersInGroup(partyName).SendAsync("PlayerJoined", CompressionHelper.Compress(player));

            await Clients.Group(partyName).SendAsync("PlayerUpdated", CompressionHelper.Compress(player));
        }
Ejemplo n.º 2
0
        public IActionResult Index(string league, string character)
        {
            var list = _ladderService.GetLadderForPlayer(league, character);

            return(Ok(new { Ladder = list }));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Index(string league, string character)
        {
            var list = await _ladderService.GetLadderForPlayer(league, character);

            return(Ok(new { Ladder = list }));
        }