public void OnUpdateParty(UpdatePartyMessage message)
        {
            BasePlayerCharacterEntity playerCharacterEntity;
            PartyData party;

            if (ServerPartyHandlers.TryGetParty(message.id, out party))
            {
                switch (message.type)
                {
                case UpdatePartyMessage.UpdateType.ChangeLeader:
                    party.SetLeader(message.characterId);
                    ServerPartyHandlers.SetParty(message.id, party);
                    ServerGameMessageHandlers.SendSetPartyLeaderToMembers(party);
                    break;

                case UpdatePartyMessage.UpdateType.Setting:
                    party.Setting(message.shareExp, message.shareItem);
                    ServerPartyHandlers.SetParty(message.id, party);
                    ServerGameMessageHandlers.SendSetPartySettingToMembers(party);
                    break;

                case UpdatePartyMessage.UpdateType.Terminate:
                    foreach (string memberId in party.GetMemberIds())
                    {
                        if (ServerUserHandlers.TryGetPlayerCharacterById(memberId, out playerCharacterEntity))
                        {
                            playerCharacterEntity.ClearParty();
                            ServerGameMessageHandlers.SendClearPartyData(playerCharacterEntity.ConnectionId, message.id);
                        }
                    }
                    ServerPartyHandlers.RemoveParty(message.id);
                    break;
                }
            }
        }
        public void OnUpdateParty(UpdatePartyMessage message)
        {
            BasePlayerCharacterEntity playerCharacterEntity;
            PartyData party;

            if (parties.TryGetValue(message.id, out party))
            {
                switch (message.type)
                {
                case UpdatePartyMessage.UpdateType.ChangeLeader:
                    party.SetLeader(message.characterId);
                    parties[message.id] = party;
                    SendChangePartyLeaderToClients(party);
                    break;

                case UpdatePartyMessage.UpdateType.Setting:
                    party.Setting(message.shareExp, message.shareItem);
                    parties[message.id] = party;
                    SendPartySettingToClients(party);
                    break;

                case UpdatePartyMessage.UpdateType.Terminate:
                    foreach (var memberId in party.GetMemberIds())
                    {
                        if (playerCharactersById.TryGetValue(memberId, out playerCharacterEntity))
                        {
                            playerCharacterEntity.ClearParty();
                            SendPartyTerminateToClient(playerCharacterEntity.ConnectionId, message.id);
                        }
                    }
                    parties.Remove(message.id);
                    break;
                }
            }
        }
        private void HandleUpdatePartyAtClient(LiteNetLibMessageHandler messageHandler)
        {
            UpdatePartyMessage message = messageHandler.ReadMessage <UpdatePartyMessage>();

            if (mapNetworkManager != null)
            {
                mapNetworkManager.OnUpdateParty(message);
            }
        }
        private void HandleUpdatePartyAtServer(LiteNetLibMessageHandler messageHandler)
        {
            long connectionId          = messageHandler.connectionId;
            UpdatePartyMessage message = messageHandler.ReadMessage <UpdatePartyMessage>();

            if (mapServerConnectionIds.Contains(connectionId))
            {
                foreach (long mapServerConnectionId in mapServerConnectionIds)
                {
                    if (mapServerConnectionId != connectionId)
                    {
                        ServerSendPacket(mapServerConnectionId, DeliveryMethod.ReliableOrdered, MMOMessageTypes.UpdateParty, message);
                    }
                }
            }
        }
Пример #5
0
        private void HandleUpdateParty(MessageHandlerData messageHandler)
        {
            long connectionId          = messageHandler.ConnectionId;
            UpdatePartyMessage message = messageHandler.ReadMessage <UpdatePartyMessage>();

            if (MapServerPeers.ContainsKey(connectionId))
            {
                foreach (long mapServerConnectionId in MapServerPeers.Keys)
                {
                    if (mapServerConnectionId != connectionId)
                    {
                        SendPacket(mapServerConnectionId, 0, DeliveryMethod.ReliableOrdered, MMOMessageTypes.UpdateParty, (writer) => writer.PutValue(message));
                    }
                }
            }
        }