Exemple #1
0
        public void OnMessage(MessageArgs messageArgs)
        {
            if (QuestMachine.debug)
            {
                Debug.Log("Quest Machine: QuestCounter[" + name + "].OnMessage(" + messageArgs.message + ", " + messageArgs.parameter + ")", m_quest);
            }
            switch (messageArgs.message)
            {
            case DataSynchronizer.DataSourceValueChangedMessage:
                m_currentValue = messageArgs.intValue;
                break;

            case QuestMachineMessages.SetQuestCounterMessage:
                m_currentValue = messageArgs.intValue;
                break;

            case QuestMachineMessages.IncrementQuestCounterMessage:
                m_currentValue += messageArgs.intValue;
                break;

            default:
                if (messageEventList == null)
                {
                    break;
                }
                for (int i = 0; i < messageEventList.Count; i++)
                {
                    var messageEvent = messageEventList[i];
                    if (messageEvent != null && messageArgs.Matches(messageEvent.message, messageEvent.parameter) &&
                        QuestMachineMessages.IsRequiredID(messageArgs.sender, QuestMachineTags.ReplaceTags(messageEvent.senderID, m_quest)) &&
                        QuestMachineMessages.IsRequiredID(messageArgs.target, QuestMachineTags.ReplaceTags(messageEvent.targetID, m_quest)))
                    {
                        switch (messageEvent.operation)
                        {
                        case QuestCounterMessageEvent.Operation.ModifyByLiteralValue:
                            m_currentValue += messageEvent.literalValue;
                            break;

                        case QuestCounterMessageEvent.Operation.ModifyByParameter:
                            m_currentValue += messageArgs.intValue;
                            break;

                        case QuestCounterMessageEvent.Operation.SetToLiteralValue:
                            m_currentValue = messageEvent.literalValue;
                            break;

                        case QuestCounterMessageEvent.Operation.SetToParameter:
                            m_currentValue = messageArgs.intValue;
                            break;
                        }
                    }
                }
                break;
            }
            SetValue(m_currentValue, QuestCounterSetValueMode.DontInformDataSync);
        }
Exemple #2
0
        public void SetListeners(bool enable)
        {
            if (!Application.isPlaying || (enable && m_isListening) || (!enable && !m_isListening))
            {
                return;
            }
            m_isListening = enable;
            if (enable)
            {
                switch (updateMode)
                {
                case QuestCounterUpdateMode.DataSync:
                    MessageSystem.AddListener(this, DataSynchronizer.DataSourceValueChangedMessage, name);
                    break;

                case QuestCounterUpdateMode.Messages:
                    MessageSystem.AddListener(this, QuestMachineMessages.SetQuestCounterMessage, name);
                    MessageSystem.AddListener(this, QuestMachineMessages.IncrementQuestCounterMessage, name);
                    break;

                default:
                    if (Debug.isDebugBuild)
                    {
                        Debug.LogWarning("Quest Machine: Internal error. Unrecognized counter update mode '" + updateMode + "'. Please contact the developer.", m_quest);
                    }
                    break;
                }
                if (messageEventList != null)
                {
                    for (int i = 0; i < messageEventList.Count; i++)
                    {
                        var messageEvent = messageEventList[i];
                        if (messageEvent != null)
                        {
                            MessageSystem.AddListener(this, QuestMachineTags.ReplaceTags(messageEvent.message, m_quest), QuestMachineTags.ReplaceTags(messageEvent.parameter, m_quest));
                        }
                    }
                }
            }
            else
            {
                MessageSystem.RemoveListener(this);
            }
        }