mirror of
https://github.com/DarkflameUniverse/DarkflameServer
synced 2024-08-30 18:43:58 +00:00
40 lines
1.6 KiB
C++
40 lines
1.6 KiB
C++
|
#include "AddActionMessage.h"
|
||
|
|
||
|
AddActionMessage::AddActionMessage(AMFArrayValue* arguments) {
|
||
|
auto* actionIndexAmf = arguments->FindValue<AMFDoubleValue>("actionIndex");
|
||
|
if (!actionIndexAmf) return;
|
||
|
|
||
|
actionIndex = static_cast<uint32_t>(actionIndexAmf->GetDoubleValue());
|
||
|
|
||
|
stripId = GetStripIDFromArgument(arguments);
|
||
|
|
||
|
stateId = GetBehaviorStateFromArgument(arguments);
|
||
|
|
||
|
type = "";
|
||
|
valueParameterName = "";
|
||
|
valueParameterString = "";
|
||
|
valueParameterDouble = 0.0;
|
||
|
auto* action = arguments->FindValue<AMFArrayValue>("action");
|
||
|
if (!action) return;
|
||
|
|
||
|
for (auto& typeValueMap : action->GetAssociativeMap()) {
|
||
|
if (typeValueMap.first == "Type") {
|
||
|
if (typeValueMap.second->GetValueType() != AMFValueType::AMFString) continue;
|
||
|
type = static_cast<AMFStringValue*>(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<AMFStringValue*>(typeValueMap.second)->GetStringValue();
|
||
|
} else {
|
||
|
if (typeValueMap.second->GetValueType() != AMFValueType::AMFDouble) continue;
|
||
|
valueParameterDouble = static_cast<AMFDoubleValue*>(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);
|
||
|
}
|