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); }
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); } }