uint32 Prop::EngineMessageFn(uint32 messageID, void *pData, LTFLOAT fData) { switch(messageID) { case MID_TOUCHNOTIFY: { if(m_bTouchable) { HOBJECT hToucher = (HOBJECT)pData; if( IsCharacterHitBox( hToucher ) ) { CCharacterHitBox* pHB = (CCharacterHitBox*)g_pLTServer->HandleToObject(hToucher); hToucher = pHB->GetModelObject(); } // Could be a body. if( IsCharacter(hToucher) ) { HandleTouch( hToucher ); } } else if( m_bAttachmentShotOff ) { HandleAttachmentTouch( (HOBJECT)pData ); } } break; case MID_UPDATE: { Update(); } break; case MID_MODELSTRINGKEY : { HandleModelString( (ArgList*)pData ); } break; case MID_PRECREATE: { if (fData == PRECREATE_WORLDFILE || fData == PRECREATE_STRINGPROP) { ObjectCreateStruct* pStruct = (ObjectCreateStruct*)pData; ReadProp(pStruct); // If this prop is spawned, assume it should be visible (if they // specify Visible 0, our parent class will handle it ;) if (fData == PRECREATE_STRINGPROP) { m_dwFlags |= FLAG_VISIBLE; } } // We must remove aggregates before sending the message to the base classs... if( !m_bCanTransition ) { // Disallow transitioning of this object through TransAMs... DestroyTransitionAggregate(); } uint32 dwRet = GameBase::EngineMessageFn(messageID, pData, fData); PostPropRead((ObjectCreateStruct*)pData); return dwRet; } break; case MID_INITIALUPDATE: { if (fData != INITIALUPDATE_SAVEGAME) { InitialUpdate(); } } break; case MID_SAVEOBJECT: { Save((ILTMessage_Write*)pData, (uint32)fData); } break; case MID_LOADOBJECT: { Load((ILTMessage_Read*)pData, (uint32)fData); } break; default : break; } return GameBase::EngineMessageFn(messageID, pData, fData); }
uint32 Body::EngineMessageFn(uint32 messageID, void *pData, LTFLOAT fData) { switch(messageID) { case MID_UPDATE: { uint32 dwRet = Prop::EngineMessageFn(messageID, pData, fData); Update(); return dwRet; } break; case MID_LINKBROKEN : { HOBJECT hObject = (HOBJECT)pData; HATTACHMENT hAttachment = LTNULL; if ( LT_OK == g_pLTServer->FindAttachment(m_hObject, hObject, &hAttachment) ) { if ( LT_OK == g_pLTServer->RemoveAttachment(hAttachment) ) { } } if ( m_hChecker == hObject ) { m_hChecker = LTNULL; } if ( m_hWeaponItem == hObject ) { m_hWeaponItem = LTNULL; } for ( uint32 iSpear = 0 ; iSpear < kMaxSpears ; iSpear++ ) { if ( m_ahSpears[iSpear] == hObject ) { m_ahSpears[iSpear] = LTNULL; } } break; } case MID_MODELSTRINGKEY: { HandleModelString((ArgList*)pData); } break; case MID_INITIALUPDATE: { uint32 dwRet = Prop::EngineMessageFn(messageID, pData, fData); // Set up the animator m_Animator.Init(m_hObject); SetNextUpdate(s_fUpdateDelta); uint32 dwUsrFlags = g_pLTServer->GetObjectUserFlags(m_hObject); g_pLTServer->SetObjectUserFlags(m_hObject, dwUsrFlags | USRFLG_NIGHT_INFRARED); return dwRet; } break; case MID_TOUCHNOTIFY: { HOBJECT hObject = (HOBJECT)pData; if ( IsPlayer(hObject) ) { if ( m_hWeaponItem ) { BaseClass* pWeaponItem = (BaseClass*)g_pLTServer->HandleToObject(m_hWeaponItem); pWeaponItem->EngineMessageFn(messageID, pData, fData); } for ( uint32 iSpear = 0 ; iSpear < m_cSpears ; iSpear++ ) { if ( m_ahSpears[iSpear] ) { BaseClass* pSpear = (BaseClass*)g_pLTServer->HandleToObject(m_ahSpears[iSpear]); pSpear->EngineMessageFn(messageID, pData, fData); } } } if ( m_pState ) { m_pState->HandleTouch(hObject); } } break; case MID_SAVEOBJECT: { Save((HMESSAGEWRITE)pData, (uint32)fData); } break; case MID_LOADOBJECT: { Load((HMESSAGEREAD)pData, (uint32)fData); } break; default : break; } return Prop::EngineMessageFn(messageID, pData, fData); }
uint32 GameBase::EngineMessageFn(uint32 messageID, void *pData, float fData) { switch(messageID) { case MID_ACTIVATING: { g_pCommonLT->SetObjectFlags(m_hObject, OFT_User, USRFLG_GAMEBASE_ACTIVE, USRFLG_GAMEBASE_ACTIVE); } break; case MID_DEACTIVATING: { g_pCommonLT->SetObjectFlags(m_hObject, OFT_User, 0, USRFLG_GAMEBASE_ACTIVE); } break; case MID_PRECREATE: { uint32 dwRet = BaseClass::EngineMessageFn(messageID, pData, fData); int nInfo = (int)fData; if (nInfo == PRECREATE_WORLDFILE || nInfo == PRECREATE_STRINGPROP || nInfo == PRECREATE_NORMAL) { ObjectCreateStruct* pocs = (ObjectCreateStruct*)pData; if( !ReadProp( pocs )) return 0; } return dwRet; } break; case MID_OBJECTCREATED: { if( fData != OBJECTCREATED_SAVEGAME ) { ObjectCreated( reinterpret_cast<const GenericPropList*>(pData) ); } } break; case MID_MODELSTRINGKEY: { HandleModelString( (ArgList*)pData ); } break; case MID_SAVEOBJECT: { Save((ILTMessage_Write*)pData); } break; case MID_LOADOBJECT: { Load((ILTMessage_Read*)pData); } break; default: break; } return BaseClass::EngineMessageFn(messageID, pData, fData); }