Example #1
0
        private void StatusChangedCommand(IDictionary <string, object> command)
        {
            var target        = command.Get(Constants.Arguments.Character);
            var status        = command.Get(Constants.Arguments.Status).ToEnum <StatusType>();
            var statusMessage = command.Get(Constants.Arguments.StatusMessage);

            var character            = CharacterManager.Find(target);
            var statusChanged        = false;
            var statusMessageChanged = false;
            var oldStatus            = character.Status;

            if (character.Status != status)
            {
                statusChanged    = true;
                character.Status = status;
            }

            if (character.StatusMessage != statusMessage)
            {
                statusMessageChanged    = true;
                character.StatusMessage = statusMessage;
            }

            if (!statusChanged && !statusMessageChanged)
            {
                return;
            }

            if (status == StatusType.Idle)
            {
                return;
            }

            if (oldStatus == StatusType.Idle && status == StatusType.Online)
            {
                return;
            }

            var updateArgs = new CharacterUpdateModel.StatusChangedEventArgs
            {
                NewStatusType = statusChanged
                    ? status
                    : StatusType.Offline,
                NewStatusMessage = statusMessageChanged
                    ? statusMessage
                    : null
            };

            Events.NewCharacterUpdate(character, updateArgs);
        }
Example #2
0
        private void StatusChangedCommand(IDictionary<string, object> command)
        {
            var character = command.Get(Constants.Arguments.Character);
            var status = command.Get(Constants.Arguments.Status).ToEnum<StatusType>();
            var statusMessage = command.Get(Constants.Arguments.StatusMessage);

            var temp = CharacterManager.Find(character);
            var statusChanged = false;
            var statusMessageChanged = false;

            if (temp.Status != status)
            {
                statusChanged = true;
                temp.Status = status;
            }

            if (temp.StatusMessage != statusMessage)
            {
                statusMessageChanged = true;
                temp.StatusMessage = statusMessage;
            }

            // fixes a bug wherein webclients could send a do-nothing update
            if (!statusChanged && !statusMessageChanged)
                return;

            var args = new CharacterUpdateModel.StatusChangedEventArgs
                {
                    NewStatusType =
                        statusChanged
                            ? status
                            : StatusType.Offline,
                    NewStatusMessage =
                        statusMessageChanged
                            ? statusMessage
                            : null
                };

            Events.GetEvent<NewUpdateEvent>().Publish(new CharacterUpdateModel(temp, args));
        }
Example #3
0
        private void StatusChangedCommand(IDictionary<string, object> command)
        {
            var target = command.Get(Constants.Arguments.Character);
            var status = command.Get(Constants.Arguments.Status).ToEnum<StatusType>();
            var statusMessage = command.Get(Constants.Arguments.StatusMessage);

            var character = CharacterManager.Find(target);
            var statusChanged = false;
            var statusMessageChanged = false;
            var oldStatus = character.Status;

            if (character.Status != status)
            {
                statusChanged = true;
                character.Status = status;
            }

            if (character.StatusMessage != statusMessage)
            {
                statusMessageChanged = true;
                character.StatusMessage = statusMessage;
            }

            if (!statusChanged && !statusMessageChanged)
                return;

            if (status == StatusType.Idle)
                return;

            if (oldStatus == StatusType.Idle && status == StatusType.Online)
                return;

            var updateArgs = new CharacterUpdateModel.StatusChangedEventArgs
            {
                NewStatusType = statusChanged
                    ? status
                    : StatusType.Offline,
                NewStatusMessage = statusMessageChanged
                    ? statusMessage
                    : null
            };

            Events.NewCharacterUpdate(character, updateArgs);
        }