#include "AddActionMessage.h" AddActionMessage::AddActionMessage(AMFArrayValue* arguments) { auto* actionIndexAmf = arguments->FindValue("actionIndex"); if (!actionIndexAmf) return; actionIndex = static_cast(actionIndexAmf->GetDoubleValue()); stripId = GetStripIDFromArgument(arguments); stateId = GetBehaviorStateFromArgument(arguments); type = ""; valueParameterName = ""; valueParameterString = ""; valueParameterDouble = 0.0; auto* action = arguments->FindValue("action"); if (!action) return; for (auto& typeValueMap : action->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); Game::logger->LogDebug("AddActionMessage", "acnNdx %i stpId %i sttId %i t %s vpn %s vps %s vpd %f bhId %i", actionIndex, stripId, stateId, type.c_str(), valueParameterName.c_str(), valueParameterString.c_str(), valueParameterDouble, behaviorId); }