| 273 | } |
| 274 | |
| 275 | int CScriptBind_GameStatistics::Event(IFunctionHandler* pH) |
| 276 | { |
| 277 | #if STATS_MODE_CVAR |
| 278 | if (CCryActionCVars::Get().g_statisticsMode != 2) |
| 279 | return pH->EndFunction(); |
| 280 | #endif |
| 281 | |
| 282 | IStatsTracker* tracker = GetTracker(pH); |
| 283 | if (!tracker) |
| 284 | { |
| 285 | CryWarning(VALIDATOR_MODULE_GAME, VALIDATOR_ERROR, "[Telemetry] Event() tracker is nil"); |
| 286 | } |
| 287 | #if STATISTICS_CHECK_BINDING |
| 288 | else if (m_boundTrackers.find(tracker) == m_boundTrackers.end()) |
| 289 | { |
| 290 | CryWarning(VALIDATOR_MODULE_GAME, VALIDATOR_ERROR, "[Telemetry] Event() tracker is not bound"); |
| 291 | } |
| 292 | #endif |
| 293 | else if (pH->GetParamCount() != 2) |
| 294 | { |
| 295 | m_pSS->RaiseError("[Telemetry] Error: Event() expected 2 params."); |
| 296 | } |
| 297 | else |
| 298 | { |
| 299 | if (pH->GetParamType(1) != svtNumber && pH->GetParamType(1) != svtString) |
| 300 | { |
| 301 | m_pSS->RaiseError("[Telemetry] Event() Param #1 expected String or Number."); |
| 302 | } |
| 303 | else if (pH->GetParamType(2) == svtNull) |
| 304 | { |
| 305 | m_pSS->RaiseError("[Telemetry] Event() Param #2 is Null"); |
| 306 | } |
| 307 | else if (pH->GetParamType(1) == svtNumber) |
| 308 | { |
| 309 | int id; |
| 310 | pH->GetParam(1, id); |
| 311 | ScriptAnyValue p; |
| 312 | pH->GetParamAny(2, p); |
| 313 | |
| 314 | if ((p.type == ANY_TTABLE || p.type == ANY_TVECTOR)) |
| 315 | { |
| 316 | XmlNodeRef node = m_pGS->CreateStatXMLNode(); |
| 317 | SaveLuaStatToXML(node, p); |
| 318 | if (XmlNodeRef ch = (node->getChildCount() > 0) ? node->getChild(0) : XmlNodeRef(0)) |
| 319 | { |
| 320 | SStatAnyValue statVal(m_pGS->WrapXMLNode(ch)); |
| 321 | m_pGS->PreprocessScriptedEventParameter(id, statVal); |
| 322 | tracker->Event(id, statVal); |
| 323 | } |
| 324 | } |
| 325 | else |
| 326 | { |
| 327 | SStatAnyValue statVal(p); |
| 328 | m_pGS->PreprocessScriptedEventParameter(id, statVal); |
| 329 | tracker->Event(id, statVal); |
| 330 | } |
| 331 | } |
| 332 | else if (pH->GetParamType(1) == svtString) |
nothing calls this directly
no test coverage detected