コード例 #1
0
        public async Task Handle(WorldClient client, GuildUserStatePacket packet)
        {
            if (!_guildManager.HasGuild || _guildManager.GuildRank > 3)
            {
                return;
            }

            var rank = await _guildManager.TryChangeRank(packet.CharacterId, packet.Demote);

            if (rank == 0)
            {
                return;
            }

            if (_gameWorld.Players.ContainsKey(packet.CharacterId))
            {
                _gameWorld.Players[packet.CharacterId].GuildManager.GuildRank = rank;
            }

            foreach (var member in _guildManager.GuildMembers.ToList())
            {
                if (!_gameWorld.Players.ContainsKey(member.Id))
                {
                    continue;
                }

                var guildPlayer = _gameWorld.Players[member.Id];
                _packetFactory.SendGuildUserChangeRank(guildPlayer.GameSession.Client, packet.CharacterId, rank);
            }
        }