| 226 | } |
| 227 | |
| 228 | void CScriptEntity::ProcessScripts() |
| 229 | { |
| 230 | CScriptEntityAction* l_tpEntityAction = 0; |
| 231 | #ifdef DEBUG |
| 232 | bool empty_queue = m_tpActionQueue.empty(); |
| 233 | #endif |
| 234 | while (!m_tpActionQueue.empty()) |
| 235 | { |
| 236 | l_tpEntityAction = m_tpActionQueue.front(); |
| 237 | VERIFY(l_tpEntityAction); |
| 238 | #ifdef DEBUG |
| 239 | // if (!xr_strcmp("m_stalker_wounded",*object().cName())) |
| 240 | // Msg ("%6d Processing action : %s",Device.dwTimeGlobal,*l_tpEntityAction->m_tAnimationAction.m_caAnimationToPlay); |
| 241 | #endif |
| 242 | |
| 243 | if (m_tpCurrentEntityAction != l_tpEntityAction) |
| 244 | l_tpEntityAction->initialize(); |
| 245 | |
| 246 | m_tpCurrentEntityAction = l_tpEntityAction; |
| 247 | |
| 248 | if (!l_tpEntityAction->CheckIfActionCompleted()) |
| 249 | break; |
| 250 | |
| 251 | #ifdef DEBUG |
| 252 | // if (!xr_strcmp("m_stalker_wounded",*object().cName())) |
| 253 | // Msg ("%6d Action completed : %s",Device.dwTimeGlobal,*l_tpEntityAction->m_tAnimationAction.m_caAnimationToPlay); |
| 254 | #endif |
| 255 | |
| 256 | vfFinishAction(l_tpEntityAction); |
| 257 | |
| 258 | #ifdef DEBUG |
| 259 | if (psAI_Flags.is(aiLua)) |
| 260 | Msg("Entity Action removed!!!"); |
| 261 | #endif |
| 262 | |
| 263 | xr_delete(l_tpEntityAction); |
| 264 | m_tpActionQueue.erase(m_tpActionQueue.begin()); |
| 265 | } |
| 266 | |
| 267 | if (m_tpActionQueue.empty()) |
| 268 | { |
| 269 | #ifdef DEBUG |
| 270 | if (empty_queue) |
| 271 | ai().script_engine().script_log(ScriptStorage::eLuaMessageTypeInfo, "Object %s has an empty script queue!", *object().cName()); |
| 272 | #endif |
| 273 | return; |
| 274 | } |
| 275 | |
| 276 | //try |
| 277 | //{ |
| 278 | bool l_bCompleted; |
| 279 | l_bCompleted = l_tpEntityAction->m_tWatchAction.m_bCompleted; |
| 280 | bfAssignWatch(l_tpEntityAction); |
| 281 | if (l_tpEntityAction->m_tWatchAction.m_bCompleted && !l_bCompleted) |
| 282 | object().callback(GameObject::eActionTypeWatch)(object().lua_game_object(), u32(eActionTypeWatch)); |
| 283 | |
| 284 | l_bCompleted = l_tpEntityAction->m_tAnimationAction.m_bCompleted; |
| 285 | bfAssignAnimation(l_tpEntityAction); |
no test coverage detected