📄 battle.cpp
字号:
pMagic->magic_Runtime);
}
void CBattle::EffectPillar(MAGICLIST* pMagic, DWORD dwNow, const int nWidth, bool IsCkCollision) // 030519 kyo
{ // 窍疵俊辑 咯矾俺啊 冻绢瘤绰 捞棋飘 屈怕
const double dUnit = 0.785398; // PI甫 4殿盒
LPCHARACTER pCaster = pMagic->lpChar_Own;
LPCHARACTER pTarget = pMagic->lpChar_Target;
if (pCaster == NULL || pTarget == NULL) return;
int nDir = 0, nOffX = 0, nOffY = 0;
switch (pCaster->sprno)
{ // 靛贰帮牢 版快绰 碍力肺 规氢 汲沥
case 50:
case 51:
case 52: nDir = s_aAngle8[1]; break;
//default: nDir = s_aAngle8[pCaster->direction]; break;
default: nDir = s_aAngle8[pMagic->dir]; break;// 030514 kyo //荤恩 规氢俊辑 捞棋飘 嘛篮 规氢
}
double dAngle = 0.0;
for (int i = 0; i < 10; i++)
{
for (int j = -1; j <= 1; j++)
{
nOffX = rand()%nWidth + nWidth*i;
nOffY = j*nWidth + j*rand()%nWidth;
dAngle = dUnit*nDir;
Coordinates(dAngle, nOffX, nOffY);
if(IsCkCollision)
{// 030519 kyo 捞蒲飘啊 哎荐 绝绰 镑俊 嘛鳃妨绊 窍搁 弊父 嘛绰促.
if( IsCollision((pMagic->x + nOffX)>>5,(pMagic->y - nOffY)>>5) )
{
return;
}
}
::InsertMagic(pCaster, pTarget,
pMagic->next_Effect,
pMagic->magicSubNum,
pMagic->x,
pMagic->y,
pMagic->x + nOffX,
pMagic->y - nOffY,
false, 0, false,
dwNow + 100*(i + 1));
}
}
}
void CBattle::EffectQuake(MAGICLIST* pMagic, int nCount, DWORD dwNow)
{ // 窍疵俊辑 咯矾俺啊 冻绢瘤绰 捞棋飘 屈怕
const double dUnit = 0.785398; // PI甫 4殿盒
LPCHARACTER pCaster = pMagic->lpChar_Own;
LPCHARACTER pTarget = pMagic->lpChar_Target;
if (pCaster == NULL || pTarget == NULL) return;
int nDir = 0, nOffX = 0, nOffY = 0;
double dAngle = 0.0;
for (int i = 0; i < nCount; i++)
{
nDir = s_aAngle8[pCaster->direction];
nOffX = 120*i;
nOffY = 0;
dAngle = dUnit*nDir;
Coordinates(dAngle, nOffX, nOffY);
//
::InsertMagic(pCaster, pTarget,
pMagic->next_Effect,
pMagic->magicSubNum,
pMagic->x,
pMagic->y,
pMagic->x + nOffX,
pMagic->y - nOffY,
false, 0, false,
dwNow + 200*(i + 1));
}
}
void CBattle::EffectDrop(MAGICLIST* pMagic, int nCount, DWORD dwNow)
{ // 窍疵俊辑 咯矾俺啊 冻绢瘤绰 捞棋飘 屈怕
const double dUnit = 0.785398; // PI甫 4殿盒
LPCHARACTER pCaster = pMagic->lpChar_Own;
LPCHARACTER pTarget = pMagic->lpChar_Target;
if (pCaster == NULL || pTarget == NULL) return;
int nDir = 0, nOffX = 0, nOffY = 0;
double dAngle = 0.0;
for (int i = 0; i < nCount; i++)
{
nDir = s_aAngle8[pCaster->direction];
nOffX = 120*i;
nOffY = 0;
dAngle = dUnit*nDir;
Coordinates(dAngle, nOffX, nOffY);
//
::InsertMagic(pCaster, pTarget,
pMagic->next_Effect,
pMagic->magicSubNum,
pMagic->x,
pMagic->y,
pMagic->x + nOffX,
pMagic->y - nOffY,
false, 0, false,
dwNow + 200*(i + 1));
}
}
void CBattle::EffectSpreadIrregular(MAGICLIST* pMagic, DWORD dwNow, const int nTile, const int nRan, int nLoop) // 030511 kyo
{ // 林函俊 nSize埃拜救俊 阂痹蘑利栏肺 捞棋飘甫 谎赴促. 骂瘤固 屈怕
LPCHARACTER pCaster = pMagic->lpChar_Own;
LPCHARACTER pTarget = pMagic->lpChar_Target;
if (pCaster == NULL || pTarget == NULL) return;
//static const int nSpreadIrregular[3][25] = { //弥措 3锅鳖瘤 骂柳促.
const int nSpreadIrregular[3][25] = { //弥措 3锅鳖瘤 骂柳促.
//{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
//{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0},
//{0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,1},
{0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,1},
{0,0,1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,0}};
int nXl = nTile*TILE_SIZE;
int nYl = nXl;//*3/4;
int nRand, nRandShow=0;
//啊肺狼 辨捞啊 nXl*2, 茄 临俊 nTile俺 免仿( 5鸥老 埃拜捞扼搁 10鸥老俊 5俺 谎妨咙)
const int nDiv = nXl*2/nTile;
if( nLoop > 3 || nLoop <= 0)
{//裹困甫 哈绢唱搁 1锅父 免仿.
nLoop = 1;
}
for( int k=0; k < nLoop; k++)
//for( int k=0; k < 1; k++)
{//矫埃瞒甫 啊瘤绊 谎府扁 困秦. 犁蓖龋免富绊 for巩阑 倒覆
//for (int i = 0; i < 25; i++)
for (int i = 0; i<nTile*nTile; i++)
{
nRand = rand()%5;
nRandShow = rand()%nRan;
if(nRandShow==0)
{
::InsertMagic(pCaster, pTarget,
pMagic->next_Effect,
pMagic->magicSubNum,
pMagic->x,
pMagic->y,
pMagic->x - nXl + (nDiv * (i%nTile) ),
pMagic->y - nYl + (nDiv * (i/nTile) ),
false, 0, false,// 0);
dwNow + 200*nRand + k*2000); //矫埃瞒(0~0.1檬 + 2檬)甫 滴绊 捞棋飘 免仿
}
}
}
}
///////////////////////////////////////////////////////////////////////////////
// Protected Method
///////////////////////////////////////////////////////////////////////////////
void CBattle::AddEffect(EFFECT_INFO* pEffect)
{ // 捞棋飘 眠啊
const int nEffect = pEffect->nEffect; // 捞棋飘 锅龋
MAGICLIST* pTemp = NULL;
MemAlloc(pTemp, sizeof(MAGICLIST));
pTemp->magicSerial = pEffect->nType;
pTemp->magicNum = nEffect;
pTemp->magicSubNum = pEffect->nSub;
pTemp->sprite_Num = g_lpET[nEffect].sprite_Num;
pTemp->spr_Speed = g_lpET[nEffect].spr_Speed;
pTemp->spr_Height = g_lpET[nEffect].spr_Height;
pTemp->target_Height = pEffect->pTarget->height;
pTemp->dir = pEffect->nDir;
pTemp->x = pTemp->s_X = pEffect->nSrcX;
pTemp->y = pTemp->s_Y = pEffect->nSrcY;
pTemp->tarx = pTemp->t_X = pEffect->nDstX;
pTemp->tary = pTemp->t_Y = pEffect->nDstY;
pTemp->map_Offset.x = g_Map.x;
pTemp->map_Offset.y = g_Map.y;
pTemp->trans_Type = g_lpET[nEffect].trans_Type;
pTemp->trans_Level = g_lpET[nEffect].trans_Level;
pTemp->object_Num = g_lpET[nEffect].object_Num;
pTemp->fallow = g_lpET[nEffect].fallow;
pTemp->firePattern = false;
pTemp->lpChar_Own = pEffect->pCaster;
pTemp->lpChar_Target = pEffect->pTarget;
pTemp->Caster_id = pEffect->pCaster->id;
pTemp->Target_id = pEffect->pTarget->id;
pTemp->next_Effect = g_lpET[nEffect].next_Effect;
pTemp->impect_Effect_Num = g_lpET[nEffect].impect_Effect_Num;
pTemp->link_Frame = g_lpET[nEffect].link_Frame;
pTemp->end_Time = g_lpET[nEffect].end_Time;
pTemp->sound_LoopCount = g_lpET[nEffect].sound_loop;
pTemp->flag = 0;
pTemp->next_Flag = 0;
pTemp->magic_Runtime = 0;
pTemp->failed = false;
// 荤款靛 肺爹
if (g_lpET[nEffect].sound_Num != 0)
{
const int nSound = g_lpET[nEffect].sound_Num%1000;
if (pEffect->pCaster == Hero)
{
::PlayListAutoSounds(g_lpET[nEffect].sound_Num, 0,
20 - (g_lpET[nEffect].sound_Volume/5), 0);
}
else
{
const int nDistX = (pEffect->pCaster->x - Hero->x);
const int nDistY = (pEffect->pCaster->y - Hero->y);
::PlayListAutoSounds(g_lpET[nEffect].sound_Num, nDistX, nDistY, 0);
}
}
if ((effSpr_Count[pTemp->sprite_Num]==0 || Effspr[pTemp->sprite_Num].EffSpr->img==NULL) && pTemp->sprite_Num != 0)
{ // 贸澜 肺爹登绰 版快(magicNum绰 0~499鳖瘤)
char buf[30];
strcpy(buf, g_lpET2[nEffect].sprite_Name); //020808 YGI
strcat(buf, ".dat");
#ifdef _EFFECT_DATA_USING_DIVIDED_FILE // 030821 kyo //kyo
::LoadEffectSpriteDivFile(g_lpET[nEffect].sprite_Num);
#else
::LoadEffectSprite(g_lpET[nEffect].sprite_Num, buf);
#endif
strcpy(buf, g_lpET2[nEffect].sprite_Name); //020808 YGI
::LoadEffectAnimation(g_lpET[nEffect].sprite_Num, buf);
}
//捞棋飘 穿利 墨款飘 歹窃
++effSpr_Count[g_lpET[nEffect].sprite_Num];
::InsertMagicList(&g_lpML, pTemp);
}
void CBattle::ClearCrash()
{ //< CSD-021021
LPCHARACTER pTemp = Hero;
do
{
pTemp->bCrash = false;
pTemp = pTemp->lpNext;
}
while (pTemp != NULL);
} //> CSD-021021
///////////////////////////////////////////////////////////////////////////////
// Private Method
///////////////////////////////////////////////////////////////////////////////
void CBattle::Coordinates(double dAngle, int& rX, int& rY)
{ // (0, 0) 谅钎甫 扁霖栏肺 阿档父怒 谅钎函券
int nX = rX, nY = rY;
rX = nX*cos(dAngle) - nY*sin(dAngle);
rY = nX*sin(dAngle) + nY*cos(dAngle);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -