📄 clientwarpgatesfx.cpp
字号:
g_pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags);
bFirstUpdate = 1;
break;
}
case MID_UPDATE:
{
if(bFirstUpdate) { SetupFX(); bFirstUpdate = 0; }
DDWORD dwUsrFlags = g_pServerDE->GetObjectUserFlags(m_hObject);
if(bOn) dwUsrFlags |= USRFLG_VISIBLE;
else dwUsrFlags &= ~USRFLG_VISIBLE;
g_pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags);
pServerDE->SetNextUpdate(m_hObject, 0.1f);
if(!pServerDE) pServerDE->RemoveObject(m_hObject);
break;
}
case MID_SAVEOBJECT:
Save((HMESSAGEWRITE)pData, (DDWORD)fData);
break;
case MID_LOADOBJECT:
Load((HMESSAGEREAD)pData, (DDWORD)fData);
break;
default : break;
}
return CClientSFX::EngineMessageFn(messageID, pData, fData);
}
// ----------------------------------------------------------------------- //
void CClientWarpGateSFX::ReadProp(ObjectCreateStruct *pData)
{
CServerDE* pServerDE = GetServerDE();
if(!pServerDE || !pData) return;
char szString[MAX_CS_FILENAME_LEN];
long tempLong;
if (wSpr.hstrSprite) // [blg]
{
g_pServerDE->FreeString(wSpr.hstrSprite);
}
if (wPS1.hstrParticle) // [blg]
{
g_pServerDE->FreeString(wPS1.hstrParticle);
}
if (wPS2.hstrParticle) // [blg]
{
g_pServerDE->FreeString(wPS2.hstrParticle);
}
pServerDE->GetPropReal("RampUpTime", &fRampUpTime);
pServerDE->GetPropReal("RampDownTime", &fRampDownTime);
pServerDE->GetPropBool("InitiallyOn", &bOn);
pServerDE->GetPropReal("SpriteMinScale", &wSpr.fMinScale);
pServerDE->GetPropReal("SpriteMaxScale", &wSpr.fMaxScale);
pServerDE->GetPropReal("SpriteAlpha", &wSpr.fAlpha);
pServerDE->GetPropLongInt("SpriteRampUpType", &tempLong);
wSpr.nRampUpType = (DDWORD)tempLong;
pServerDE->GetPropLongInt("SpriteRampDownType", &tempLong);
wSpr.nRampDownType = (DDWORD)tempLong;
pServerDE->GetPropBool("SpriteAlign", &wSpr.bAlign);
pServerDE->GetPropString("SpriteFile", szString, MAX_CS_FILENAME_LEN);
wSpr.hstrSprite = pServerDE->CreateString(szString);
pServerDE->GetPropReal("PS1SystemRadius", &wPS1.fSystemRadius);
pServerDE->GetPropReal("PS1PositionRadius", &wPS1.fPosRadius);
pServerDE->GetPropVector("PS1Offset", &wPS1.vOffset);
pServerDE->GetPropVector("PS1Rotations", &wPS1.vRotations);
pServerDE->GetPropReal("PS1MinVelocity", &wPS1.fMinVelocity);
pServerDE->GetPropReal("PS1MaxVelocity", &wPS1.fMaxVelocity);
pServerDE->GetPropLongInt("PS1NumParticles", &tempLong);
wPS1.nNumParticles = (DDWORD)tempLong;
pServerDE->GetPropLongInt("PS1EmitType", &tempLong);
wPS1.nEmitType = (DDWORD)tempLong;
pServerDE->GetPropColor("PS1MinColor", &wPS1.vMinColor);
pServerDE->GetPropColor("PS1MaxColor", &wPS1.vMaxColor);
pServerDE->GetPropReal("PS1SystemAlpha", &wPS1.fAlpha);
pServerDE->GetPropReal("PS1MinLifetime", &wPS1.fMinLifetime);
pServerDE->GetPropReal("PS1MaxLifetime", &wPS1.fMaxLifetime);
pServerDE->GetPropReal("PS1AddDelay", &wPS1.fAddDelay);
pServerDE->GetPropReal("PS1Gravity", &wPS1.fGravity);
pServerDE->GetPropLongInt("PS1RampUpType", &tempLong);
wPS1.nRampUpType = (DDWORD)tempLong;
pServerDE->GetPropLongInt("PS1RampDownType", &tempLong);
wPS1.nRampDownType = (DDWORD)tempLong;
pServerDE->GetPropBool("PS1Align", &wPS1.bAlign);
pServerDE->GetPropString("PS1ParticleFile", szString, MAX_CS_FILENAME_LEN);
wPS1.hstrParticle = pServerDE->CreateString(szString);
pServerDE->GetPropReal("PS2SystemRadius", &wPS2.fSystemRadius);
pServerDE->GetPropReal("PS2PositionRadius", &wPS2.fPosRadius);
pServerDE->GetPropVector("PS2Offset", &wPS2.vOffset);
pServerDE->GetPropVector("PS2Rotations", &wPS2.vRotations);
pServerDE->GetPropReal("PS2MinVelocity", &wPS2.fMinVelocity);
pServerDE->GetPropReal("PS2MaxVelocity", &wPS2.fMaxVelocity);
pServerDE->GetPropLongInt("PS2NumParticles", &tempLong);
wPS2.nNumParticles = (DDWORD)tempLong;
pServerDE->GetPropLongInt("PS2EmitType", &tempLong);
wPS2.nEmitType = (DDWORD)tempLong;
pServerDE->GetPropColor("PS2MinColor", &wPS2.vMinColor);
pServerDE->GetPropColor("PS2MaxColor", &wPS2.vMaxColor);
pServerDE->GetPropReal("PS2SystemAlpha", &wPS2.fAlpha);
pServerDE->GetPropReal("PS2MinLifetime", &wPS2.fMinLifetime);
pServerDE->GetPropReal("PS2MaxLifetime", &wPS2.fMaxLifetime);
pServerDE->GetPropReal("PS2AddDelay", &wPS2.fAddDelay);
pServerDE->GetPropReal("PS2Gravity", &wPS2.fGravity);
pServerDE->GetPropLongInt("PS2RampUpType", &tempLong);
wPS2.nRampUpType = (DDWORD)tempLong;
pServerDE->GetPropLongInt("PS2RampDownType", &tempLong);
wPS2.nRampDownType = (DDWORD)tempLong;
pServerDE->GetPropBool("PS2Align", &wPS2.bAlign);
pServerDE->GetPropString("PS2ParticleFile", szString, MAX_CS_FILENAME_LEN);
wPS2.hstrParticle = pServerDE->CreateString(szString);
pServerDE->GetPropReal("SoundRadius", &fSoundRadius);
pServerDE->GetPropString("RampUpSound", szString, MAX_CS_FILENAME_LEN);
hstrSound1 = pServerDE->CreateString(szString);
pServerDE->GetPropString("LoopSound", szString, MAX_CS_FILENAME_LEN);
hstrSound2 = pServerDE->CreateString(szString);
pServerDE->GetPropString("RampDownSound", szString, MAX_CS_FILENAME_LEN);
hstrSound3 = pServerDE->CreateString(szString);
return;
}
// ----------------------------------------------------------------------- //
void CClientWarpGateSFX::HandleTrigger(HOBJECT hSender, HMESSAGEREAD hRead)
{
HSTRING hMsg = g_pServerDE->ReadFromMessageHString(hRead);
char *pszMessage = g_pServerDE->GetStringData(hMsg);
DDWORD dwUsrFlags = g_pServerDE->GetObjectUserFlags(m_hObject);
if( _mbsncmp((const unsigned char*)pszMessage, (const unsigned char*)"TOGGLE", 6) == 0)
bOn = !bOn;
else if( _mbsncmp((const unsigned char*)pszMessage, (const unsigned char*)"ON", 2) == 0)
bOn = DTRUE;
else if( _mbsncmp((const unsigned char*)pszMessage, (const unsigned char*)"OFF", 3) == 0)
bOn = DFALSE;
g_pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags);
g_pServerDE->FreeString(hMsg);
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: CClientWarpGateSFX::Save
//
// PURPOSE: Save the object
//
// ----------------------------------------------------------------------- //
void CClientWarpGateSFX::Save(HMESSAGEWRITE hWrite, DDWORD dwSaveFlags)
{
CServerDE* pServerDE = BaseClass::GetServerDE();
if (!pServerDE || !hWrite) return;
pServerDE->WriteToMessageFloat(hWrite, fRampUpTime);
pServerDE->WriteToMessageFloat(hWrite, fRampDownTime);
pServerDE->WriteToMessageByte(hWrite, bInitiallyOn);
pServerDE->WriteToMessageFloat(hWrite, wSpr.fMinScale);
pServerDE->WriteToMessageFloat(hWrite, wSpr.fMaxScale);
pServerDE->WriteToMessageFloat(hWrite, wSpr.fAlpha);
pServerDE->WriteToMessageDWord(hWrite, wSpr.nRampUpType);
pServerDE->WriteToMessageDWord(hWrite, wSpr.nRampDownType);
pServerDE->WriteToMessageByte(hWrite, wSpr.bAlign);
pServerDE->WriteToMessageHString(hWrite, wSpr.hstrSprite);
pServerDE->WriteToMessageFloat(hWrite, wPS1.fSystemRadius);
pServerDE->WriteToMessageFloat(hWrite, wPS1.fPosRadius);
pServerDE->WriteToMessageVector(hWrite, &wPS1.vOffset);
pServerDE->WriteToMessageVector(hWrite, &wPS1.vRotations);
pServerDE->WriteToMessageFloat(hWrite, wPS1.fMinVelocity);
pServerDE->WriteToMessageFloat(hWrite, wPS1.fMaxVelocity);
pServerDE->WriteToMessageDWord(hWrite, wPS1.nNumParticles);
pServerDE->WriteToMessageDWord(hWrite, wPS1.nEmitType);
pServerDE->WriteToMessageVector(hWrite, &wPS1.vMinColor);
pServerDE->WriteToMessageVector(hWrite, &wPS1.vMaxColor);
pServerDE->WriteToMessageFloat(hWrite, wPS1.fAlpha);
pServerDE->WriteToMessageFloat(hWrite, wPS1.fMinLifetime);
pServerDE->WriteToMessageFloat(hWrite, wPS1.fMaxLifetime);
pServerDE->WriteToMessageFloat(hWrite, wPS1.fAddDelay);
pServerDE->WriteToMessageFloat(hWrite, wPS1.fGravity);
pServerDE->WriteToMessageDWord(hWrite, wPS1.nRampUpType);
pServerDE->WriteToMessageDWord(hWrite, wPS1.nRampDownType);
pServerDE->WriteToMessageByte(hWrite, wPS1.bAlign);
pServerDE->WriteToMessageHString(hWrite, wPS1.hstrParticle);
pServerDE->WriteToMessageFloat(hWrite, wPS2.fSystemRadius);
pServerDE->WriteToMessageFloat(hWrite, wPS2.fPosRadius);
pServerDE->WriteToMessageVector(hWrite, &wPS2.vOffset);
pServerDE->WriteToMessageVector(hWrite, &wPS2.vRotations);
pServerDE->WriteToMessageFloat(hWrite, wPS2.fMinVelocity);
pServerDE->WriteToMessageFloat(hWrite, wPS2.fMaxVelocity);
pServerDE->WriteToMessageDWord(hWrite, wPS2.nNumParticles);
pServerDE->WriteToMessageDWord(hWrite, wPS2.nEmitType);
pServerDE->WriteToMessageVector(hWrite, &wPS2.vMinColor);
pServerDE->WriteToMessageVector(hWrite, &wPS2.vMaxColor);
pServerDE->WriteToMessageFloat(hWrite, wPS2.fAlpha);
pServerDE->WriteToMessageFloat(hWrite, wPS2.fMinLifetime);
pServerDE->WriteToMessageFloat(hWrite, wPS2.fMaxLifetime);
pServerDE->WriteToMessageFloat(hWrite, wPS2.fAddDelay);
pServerDE->WriteToMessageFloat(hWrite, wPS2.fGravity);
pServerDE->WriteToMessageDWord(hWrite, wPS2.nRampUpType);
pServerDE->WriteToMessageDWord(hWrite, wPS2.nRampDownType);
pServerDE->WriteToMessageByte(hWrite, wPS2.bAlign);
pServerDE->WriteToMessageHString(hWrite, wPS2.hstrParticle);
pServerDE->WriteToMessageFloat(hWrite, fSoundRadius);
pServerDE->WriteToMessageHString(hWrite, hstrSound1);
pServerDE->WriteToMessageHString(hWrite, hstrSound2);
pServerDE->WriteToMessageHString(hWrite, hstrSound3);
pServerDE->WriteToMessageByte(hWrite, bOn);
pServerDE->WriteToMessageByte(hWrite, bFirstUpdate);
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: CClientWarpGateSFX::Load
//
// PURPOSE: Load the object
//
// ----------------------------------------------------------------------- //
void CClientWarpGateSFX::Load(HMESSAGEREAD hRead, DDWORD dwLoadFlags)
{
CServerDE* pServerDE = BaseClass::GetServerDE();
if (!pServerDE || !hRead) return;
fRampUpTime = pServerDE->ReadFromMessageFloat(hRead);
fRampDownTime = pServerDE->ReadFromMessageFloat(hRead);
bInitiallyOn = pServerDE->ReadFromMessageByte(hRead);
wSpr.fMinScale = pServerDE->ReadFromMessageFloat(hRead);
wSpr.fMaxScale = pServerDE->ReadFromMessageFloat(hRead);
wSpr.fAlpha = pServerDE->ReadFromMessageFloat(hRead);
wSpr.nRampUpType = pServerDE->ReadFromMessageDWord(hRead);
wSpr.nRampDownType = pServerDE->ReadFromMessageDWord(hRead);
wSpr.bAlign = pServerDE->ReadFromMessageByte(hRead);
wSpr.hstrSprite = pServerDE->ReadFromMessageHString(hRead);
wPS1.fSystemRadius = pServerDE->ReadFromMessageFloat(hRead);
wPS1.fPosRadius = pServerDE->ReadFromMessageFloat(hRead);
pServerDE->ReadFromMessageVector(hRead, &wPS1.vOffset);
pServerDE->ReadFromMessageVector(hRead, &wPS1.vRotations);
wPS1.fMinVelocity = pServerDE->ReadFromMessageFloat(hRead);
wPS1.fMaxVelocity = pServerDE->ReadFromMessageFloat(hRead);
wPS1.nNumParticles = pServerDE->ReadFromMessageDWord(hRead);
wPS1.nEmitType = pServerDE->ReadFromMessageDWord(hRead);
pServerDE->ReadFromMessageVector(hRead, &wPS1.vMinColor);
pServerDE->ReadFromMessageVector(hRead, &wPS1.vMaxColor);
wPS1.fAlpha = pServerDE->ReadFromMessageFloat(hRead);
wPS1.fMinLifetime = pServerDE->ReadFromMessageFloat(hRead);
wPS1.fMaxLifetime = pServerDE->ReadFromMessageFloat(hRead);
wPS1.fAddDelay = pServerDE->ReadFromMessageFloat(hRead);
wPS1.fGravity = pServerDE->ReadFromMessageFloat(hRead);
wPS1.nRampUpType = pServerDE->ReadFromMessageDWord(hRead);
wPS1.nRampDownType = pServerDE->ReadFromMessageDWord(hRead);
wPS1.bAlign = pServerDE->ReadFromMessageByte(hRead);
wPS1.hstrParticle = pServerDE->ReadFromMessageHString(hRead);
wPS2.fSystemRadius = pServerDE->ReadFromMessageFloat(hRead);
wPS2.fPosRadius = pServerDE->ReadFromMessageFloat(hRead);
pServerDE->ReadFromMessageVector(hRead, &wPS2.vOffset);
pServerDE->ReadFromMessageVector(hRead, &wPS2.vRotations);
wPS2.fMinVelocity = pServerDE->ReadFromMessageFloat(hRead);
wPS2.fMaxVelocity = pServerDE->ReadFromMessageFloat(hRead);
wPS2.nNumParticles = pServerDE->ReadFromMessageDWord(hRead);
wPS2.nEmitType = pServerDE->ReadFromMessageDWord(hRead);
pServerDE->ReadFromMessageVector(hRead, &wPS2.vMinColor);
pServerDE->ReadFromMessageVector(hRead, &wPS2.vMaxColor);
wPS2.fAlpha = pServerDE->ReadFromMessageFloat(hRead);
wPS2.fMinLifetime = pServerDE->ReadFromMessageFloat(hRead);
wPS2.fMaxLifetime = pServerDE->ReadFromMessageFloat(hRead);
wPS2.fAddDelay = pServerDE->ReadFromMessageFloat(hRead);
wPS2.fGravity = pServerDE->ReadFromMessageFloat(hRead);
wPS2.nRampUpType = pServerDE->ReadFromMessageDWord(hRead);
wPS2.nRampDownType = pServerDE->ReadFromMessageDWord(hRead);
wPS2.bAlign = pServerDE->ReadFromMessageByte(hRead);
wPS2.hstrParticle = pServerDE->ReadFromMessageHString(hRead);
fSoundRadius = pServerDE->ReadFromMessageFloat(hRead);
hstrSound1 = pServerDE->ReadFromMessageHString(hRead);
hstrSound2 = pServerDE->ReadFromMessageHString(hRead);
hstrSound3 = pServerDE->ReadFromMessageHString(hRead);
bOn = pServerDE->ReadFromMessageByte(hRead);
bFirstUpdate = pServerDE->ReadFromMessageByte(hRead);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -