#include "UpdateActionMessage.h" UpdateActionMessage::UpdateActionMessage(AMFArrayValue* arguments) { type = ""; valueParameterName = ""; valueParameterString = ""; valueParameterDouble = 0.0; auto* actionAsArray = arguments->FindValue("action"); if (!actionAsArray) return; for (auto& typeValueMap : actionAsArray->GetAssociativeMap()) { if (typeValueMap.first == "Type") { if (typeValueMap.second->GetValueType() != AMFValueType::AMFString) continue; type = static_cast(typeValueMap.second)->GetStringValue(); } else { valueParameterName = typeValueMap.first; // Message is the only known string parameter if (valueParameterName == "Message") { if (typeValueMap.second->GetValueType() != AMFValueType::AMFString) continue; valueParameterString = static_cast(typeValueMap.second)->GetStringValue(); } else { if (typeValueMap.second->GetValueType() != AMFValueType::AMFDouble) continue; valueParameterDouble = static_cast(typeValueMap.second)->GetDoubleValue(); } } } behaviorID = GetBehaviorIDFromArgument(arguments); auto* actionIndexValue = arguments->FindValue("actionIndex"); if (!actionIndexValue) return; actionIndex = static_cast(actionIndexValue->GetDoubleValue()); stripID = GetStripIDFromArgument(arguments); stateID = GetBehaviorStateFromArgument(arguments); Game::logger->LogDebug("UpdateActionMessage", "t %s vpn %s vps %s vpd %f bhId %i acnNdx %i stpId %i sttId %i", type.c_str(), valueParameterName.c_str(), valueParameterString.c_str(), valueParameterDouble, behaviorID, actionIndex, stripID, stateID); }