📄 horse.cpp
字号:
Spr* RiderSpr=GetSpriteData(SexType,HSRIDER,RiderKind,ch->direction,Frame);
Spr* RiderGradeSpr=NULL;
// Spr* RiderMantleSpr=NULL;
// if (ch->mantlecolor!=0&&ch->mantlecolor!=65535) RiderMantleSpr=&RiderMantlePic[SexType][ch->direction][Frame];
if (RiderGrade>=0) RiderGradeSpr=&RiderGradePic[SexType][RiderKind][RiderGrade][ch->direction][Frame]; // 裹困楷魂俊 巩力 积辫.
// if (ch->direction==DIRECTION_DOWN||ch->direction==DIRECTION_RIGHTDOWN||ch->direction==DIRECTION_LEFTDOWN)
// PutCompressedImageCharRGB(LocateX,LocateY,RiderMantleSpr,Color2);
PutCompressedImageCharRGB(LocateX,LocateY,RiderSpr,Color2);
PutCompressedImageCharRGB(LocateX,LocateY,RiderGradeSpr,Color2);
// if (ch->direction!=DIRECTION_DOWN&&ch->direction!=DIRECTION_RIGHTDOWN&&ch->direction!=DIRECTION_LEFTDOWN)
// PutCompressedImageCharRGB(LocateX,LocateY,RiderMantleSpr,Color2);
}
inline void cHorseRider::DrawRiderFX(LPCHARACTER ch,int Trans,int Operation) // LTS HORSERIDER ADD
{
int RiderGrade=CheckRiderGrade(ch);
int SexType=CheckSex(ch);
int RiderKind=CheckRiderKind(ch);
int LocateX=ch->x-Mapx;
int LocateY=ch->y-Mapy;
int HorseNo=CheckHorseKind(ch);
int Frame=HorseRiderAniTable[CheckSex(ch)][HorseNo][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
Spr* RiderSpr=GetSpriteData(SexType,HSRIDER,RiderKind,ch->direction,Frame);
Spr* RiderGradeSpr=NULL;
// Spr* RiderMantleSpr=NULL;
// if (ch->mantlecolor!=0&&ch->mantlecolor!=65535) RiderMantleSpr=&RiderMantlePic[SexType][ch->direction][Frame];
if (RiderGrade>=0) RiderGradeSpr=&RiderGradePic[SexType][RiderKind][RiderGrade][ch->direction][Frame]; // 裹困楷魂俊 巩力 积辫.
// if (ch->direction==DIRECTION_DOWN||ch->direction==DIRECTION_RIGHTDOWN||ch->direction==DIRECTION_LEFTDOWN)
// PutCompressedImageFX(LocateX,LocateY,RiderMantleSpr,Trans,Operation);
PutCompressedImageFX(LocateX,LocateY,RiderSpr,Trans,Operation);
PutCompressedImageFX(LocateX,LocateY,RiderGradeSpr,Trans,Operation);
}
inline void cHorseRider::DrawRiderVoid(LPCHARACTER ch)
{
// int RiderGrade=CheckRiderGrade(ch);
int SexType=CheckSex(ch);
int RiderKind=CheckRiderKind(ch);
int LocateX=ch->x-Mapx;
int LocateY=ch->y-Mapy;
int HorseNo=CheckHorseKind(ch);
int Frame=HorseRiderAniTable[CheckSex(ch)][HorseNo][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
Spr* RiderSpr=GetSpriteData(SexType,HSRIDER,RiderKind,ch->direction,Frame);
// Spr* RiderGradeSpr=&RiderGradePic[RiderGrade][SexType][RiderKind][ch->direction][Frame]; // 裹困楷魂俊 巩力 积辫.
PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),RiderSpr);
// PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand%5-2),RiderGradeSpr);
}
inline void cHorseRider::DrawHorse(LPCHARACTER ch)
{
int HorseGrade=CheckHorseGrade(ch);
int HorseKind=CheckHorseKind(ch);
int LocateX=ch->x-Mapx;
int LocateY=ch->y-Mapy;
int Frame=HorseRiderAniTable[CheckSex(ch)][HorseKind][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
Spr* HorseSpr=GetSpriteData(0,HSHORSE,HorseKind,ch->direction,Frame);
Spr* HorseSaddleSpr=GetSpriteData(0,HSSADDLE,HorseKind,ch->direction,Frame);
Spr* HorseGradeSpr=NULL;
if (HorseGrade>=0) HorseGradeSpr=&HorseGradePic[HorseKind][HorseGrade][ch->direction][Frame];
switch (HorseKind)
{
case 0 :
case 1 : PutCompressedImageShadow(LocateX,LocateY,HorseSpr);
PutCompressedImage(LocateX,LocateY,HorseSpr);
PutCompressedImage(LocateX,LocateY,HorseSaddleSpr);
PutCompressedImage(LocateX,LocateY,HorseGradeSpr);
break;
case 2 :
PutCompressedImageFX(LocateX,LocateY,HorseSpr,3,2);
PutCompressedImage(LocateX,LocateY,HorseSaddleSpr);
PutCompressedImage(LocateX,LocateY,HorseGradeSpr);
break;
}
}
inline void cHorseRider::DrawHorseColor(LPCHARACTER ch,DWORD Color1,DWORD Color2)
{
int HorseGrade=CheckHorseGrade(ch);
int HorseKind=CheckHorseKind(ch);
int LocateX=ch->x-Mapx;
int LocateY=ch->y-Mapy;
int Frame=HorseRiderAniTable[CheckSex(ch)][HorseKind][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
Spr* HorseSpr=GetSpriteData(0,HSHORSE,HorseKind,ch->direction,Frame);
Spr* HorseGradeSpr=NULL;
if (HorseGrade>=0) HorseGradeSpr=&HorseGradePic[HorseKind][HorseGrade][ch->direction][Frame];
PutCompressedImageShadow(LocateX,LocateY,HorseSpr);
PutCompressedImageCharRGB(LocateX,LocateY,HorseSpr,Color2);
PutCompressedImageCharRGB(LocateX,LocateY,HorseGradeSpr,Color2);
}
inline void cHorseRider::DrawHorseFX(LPCHARACTER ch,int Trans,int Operation)
{
int HorseGrade=CheckHorseGrade(ch);
int HorseKind=CheckHorseKind(ch);
int LocateX=ch->x-Mapx;
int LocateY=ch->y-Mapy;
int Frame=HorseRiderAniTable[CheckSex(ch)][HorseKind][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
Spr* HorseSpr=GetSpriteData(0,HSHORSE,HorseKind,ch->direction,Frame);
Spr* HorseGradeSpr=NULL;
if (HorseGrade>=0) HorseGradeSpr=&HorseGradePic[HorseKind][HorseGrade][ch->direction][Frame];
PutCompressedImageFX(LocateX,LocateY,HorseSpr,Trans,Operation);
PutCompressedImageFX(LocateX,LocateY,HorseGradeSpr,Trans,Operation);
}
inline void cHorseRider::DrawHorseVoid(LPCHARACTER ch)
{
// int HorseGrade=CheckHorseGrade(ch);
int HorseKind=CheckHorseKind(ch);
int LocateX=ch->x-Mapx;
int LocateY=ch->y-Mapy;
int Frame=HorseRiderAniTable[CheckSex(ch)][HorseKind][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
Spr* HorseSpr=GetSpriteData(0,HSHORSE,HorseKind,ch->direction,Frame);
// Spr* HorseGradeSpr=&HorseGradePic[HorseKind][HorseGrade][ch->direction][Frame];
PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),HorseSpr);
// PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),HorseGradeSpr);
}
inline void cHorseRider::DrawFX(LPCHARACTER ch,int Trans,int Operation)
{
int SexType=CheckSex(ch);
int WeaponKind=CheckWeaponKind(ch);
int GuardKind=CheckGuardKind(ch);
int LocateX=ch->x-Mapx;
int LocateY=ch->y-Mapy;
int HorseNo=CheckHorseKind(ch);
int Frame=HorseRiderAniTable[CheckSex(ch)][HorseNo][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
Spr* Weapon=NULL;
Spr* Guard=NULL;
if (ch->peacests==1)
{
if (WeaponKind>=0) Weapon=GetSpriteData(SexType,HSWEAPON,WeaponKind,ch->direction,Frame);
if (GuardKind>=0) Guard=GetSpriteData(SexType,HSSHEILD,GuardKind,ch->direction,Frame);
}
int tempDirection=ch->direction;
if (WeaponKind==5 || WeaponKind==13) // 剧颊八篮 傈捧 叭扁啊 颊困肺 棵扼柯促.
{
tempDirection=DIRECTION_UP;
}
switch (tempDirection)
{
case DIRECTION_UP :
DrawHorseFX(ch,Trans,Operation);
PutCompressedImageFX(LocateX,LocateY,Guard,Trans,Operation);
DrawRiderFX(ch,Trans,Operation);
PutCompressedImageFX(LocateX,LocateY,Weapon,Trans,Operation); break;
case DIRECTION_RIGHTUP :
case DIRECTION_RIGHT :
case DIRECTION_RIGHTDOWN :
PutCompressedImageFX(LocateX,LocateY,Guard,Trans,Operation);
DrawHorseFX(ch,Trans,Operation);
DrawRiderFX(ch,Trans,Operation);
PutCompressedImageFX(LocateX,LocateY,Weapon,Trans,Operation); break;
case DIRECTION_DOWN :
DrawHorseFX(ch,Trans,Operation);
PutCompressedImageFX(LocateX,LocateY,Weapon,Trans,Operation);
DrawRiderFX(ch,Trans,Operation);
PutCompressedImageFX(LocateX,LocateY,Guard,Trans,Operation); break;
case DIRECTION_LEFTDOWN :
case DIRECTION_LEFT :
case DIRECTION_LEFTUP :
PutCompressedImageFX(LocateX,LocateY,Weapon,Trans,Operation);
DrawHorseFX(ch,Trans,Operation);
DrawRiderFX(ch,Trans,Operation);
PutCompressedImageFX(LocateX,LocateY,Guard,Trans,Operation); break;
}
}
inline void cHorseRider::DrawRGBColor(LPCHARACTER ch,DWORD Color1,DWORD Color2)
{
int SexType=CheckSex(ch);
int WeaponKind=CheckWeaponKind(ch);
int GuardKind=CheckGuardKind(ch);
int LocateX=ch->x-Mapx;
int LocateY=ch->y-Mapy;
int HorseNo=CheckHorseKind(ch);
int Frame=HorseRiderAniTable[CheckSex(ch)][HorseNo][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
Spr* Weapon=NULL;
Spr* Guard=NULL;
if (ch->peacests==1)
{
if (WeaponKind>=0) Weapon=GetSpriteData(SexType,HSWEAPON,WeaponKind,ch->direction,Frame);
if (GuardKind>=0) Guard=GetSpriteData(SexType,HSWEAPON,GuardKind,ch->direction,Frame);
}
int tempDirection=ch->direction;
if (WeaponKind==5 || WeaponKind==13) // 剧颊八篮 傈捧 叭扁啊 颊困肺 棵扼柯促.
{
tempDirection=DIRECTION_UP;
}
switch (tempDirection)
{
case DIRECTION_UP :
DrawHorseColor(ch,Color1,Color2);
PutCompressedImageCharRGB(LocateX,LocateY,Guard,Color2);
DrawRiderColor(ch,Color1,Color2);
PutCompressedImageCharRGB(LocateX,LocateY,Weapon,Color2); break;
case DIRECTION_RIGHTUP :
case DIRECTION_RIGHT :
case DIRECTION_RIGHTDOWN :
PutCompressedImageCharRGB(LocateX,LocateY,Guard,Color2);
DrawHorseColor(ch,Color1,Color2);
DrawRiderColor(ch,Color1,Color2);
PutCompressedImageCharRGB(LocateX,LocateY,Weapon,Color2); break;
case DIRECTION_DOWN :
DrawHorseColor(ch,Color1,Color2);
PutCompressedImageCharRGB(LocateX,LocateY,Weapon,Color2);
DrawRiderColor(ch,Color1,Color2);
PutCompressedImageCharRGB(LocateX,LocateY,Guard,Color2); break;
case DIRECTION_LEFTDOWN :
case DIRECTION_LEFT :
case DIRECTION_LEFTUP :
PutCompressedImageCharRGB(LocateX,LocateY,Weapon,Color2);
DrawHorseColor(ch,Color1,Color2);
DrawRiderColor(ch,Color1,Color2);
PutCompressedImageCharRGB(LocateX,LocateY,Guard,Color2); break;
}
}
inline void cHorseRider::DrawVoid(LPCHARACTER ch)
{
int SexType=CheckSex(ch);
int WeaponKind=CheckWeaponKind(ch);
int GuardKind=CheckGuardKind(ch);
int LocateX=ch->x-Mapx;
int LocateY=ch->y-Mapy;
int HorseNo=CheckHorseKind(ch);
int Frame=HorseRiderAniTable[SexType][HorseNo][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
Spr* Weapon=NULL;
Spr* Guard=NULL;
if (ch->peacests==1)
{
if (WeaponKind>=0) Weapon=GetSpriteData(SexType,HSWEAPON,WeaponKind,ch->direction,Frame);
if (GuardKind>=0) Guard=GetSpriteData(SexType,HSSHEILD,GuardKind,ch->direction,Frame);
}
int tempDirection=ch->direction;
if (WeaponKind==5 || WeaponKind==13) // 剧颊八篮 傈捧 叭扁啊 颊困肺 棵扼柯促.
{
tempDirection=DIRECTION_UP;
}
switch (ch->direction)
{
case DIRECTION_UP :
DrawHorseVoid(ch);
PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Guard);
DrawRiderVoid(ch);
PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Weapon); break;
case DIRECTION_RIGHTUP :
case DIRECTION_RIGHT :
case DIRECTION_RIGHTDOWN :
PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Guard);
DrawHorseVoid(ch);
DrawRiderVoid(ch);
PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Weapon); break;
case DIRECTION_DOWN :
DrawHorseVoid(ch);
PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Weapon);
DrawRiderVoid(ch);
PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Guard); break;
case DIRECTION_LEFTDOWN :
case DIRECTION_LEFT :
case DIRECTION_LEFTUP :
PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Weapon);
DrawHorseVoid(ch);
DrawRiderVoid(ch);
PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Guard); break;
}
}
inline void cHorseRider::Draw1(LPCHARACTER ch,int LocateX,int LocateY,Spr* First,Spr* Second)
{
DrawHorse(ch);
PutCompressedImage(LocateX,LocateY,First);
DrawRider(ch);
PutCompressedImage(LocateX,LocateY,Second);
}
inline void cHorseRider::DrawRGB1(LPCHARACTER ch,int LocateX,int LocateY,Spr* First,Spr* Second,DWORD Color)
{
DrawHorseColor(ch,0,Color);
PutCompressedImageCharRGB(LocateX,LocateY,First,Color);
DrawRiderColor(ch,0,Color);
PutCompressedImageCharRGB(LocateX,LocateY,Second,Color);
}
inline void cHorseRider::Draw2(LPCHARACTER ch,int LocateX,int LocateY,Spr* First,Spr* Second)
{
PutCompressedImage(LocateX,LocateY,First);
DrawHorse(ch);
DrawRider(ch);
PutCompressedImage(LocateX,LocateY,Second);
}
inline void cHorseRider::DrawRGB2(LPCHARACTER ch,int LocateX,int LocateY,Spr* First,Spr* Second,DWORD Color)
{
PutCompressedImageCharRGB(LocateX,LocateY,First,Color);
DrawHorseColor(ch,0,Color);
DrawRiderColor(ch,0,Color);
PutCompressedImageCharRGB(LocateX,LocateY,Second,Color);
}
inline int cHorseRider::DirectionChange(LPCHARACTER ch,int WeaponKind)
{
if (!CheckSex(ch)) return ch->direction;
if (WeaponKind==5||WeaponKind==13) // 剧颊八篮 傈捧 叭扁啊 颊困肺 棵扼柯促.
{
switch(ch->direction)
{
case DIRECTION_UP : // 漠阑 力老 唱吝俊 弊赴促.
case DIRECTION_LEFT : // 漠阑 力老 唱吝俊 弊赴促.
case DIRECTION_LEFTUP : // 漠阑 力老 唱吝俊 弊赴促
case DIRECTION_RIGHTUP : // 漠阑 力老 唱吝俊 弊赴促.
case DIRECTION_RIGHT : // 漠阑 力老 唱吝俊 弊赴促.
return DIRECTION_UP;
break;
case DIRECTION_DOWN : // 漠阑 力老 刚历弊赴促.
case DIRECTION_RIGHTDOWN : // 漠阑 力老 刚历 弊赴促.
case DIRECTION_LEFTDOWN : // 漠阑 力老 刚历 弊赴促.
return DIRECTION_DOWN;
break;
}
}
else return ch->direction;
return ch->direction;
}
inline void cHorseRider::DrawAction(LPCHARACTER ch)
{
if( (ch->blood_Set == true || ch->dieani!=0 ) && ch->nCurrentAction==ACTION_DIE ) PutDeadEffectBottom(ch);
int SexType=CheckSex(ch);
int WeaponKind=CheckWeaponKind(ch);
int GuardKind=CheckGuardKind(ch);
int LocateX=ch->x-Mapx;
int LocateY=ch->y-Mapy;
int HorseNo=CheckHorseKind(ch);
int Frame=HorseRiderAniTable[SexType][HorseNo][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
Spr* Weapon=NULL;
Spr* Guard=NULL;
DWORD Color=0;
if (ch->peacests==1)
{
if (WeaponKind>=0) Weapon=GetSpriteData(SexType,HSWEAPON,WeaponKind,ch->direction,Frame);
if (GuardKind>=0) Guard=GetSpriteData(SexType,HSSHEILD,GuardKind,ch->direction,Frame);
}
int tempDirection=DirectionChange(ch,WeaponKind); // 剧颊八篮 傈捧 叭扁啊 颊困肺 棵扼柯促.
if (ch==g_GameInfo.lpcharacter)
{
if (ch==Hero) Color=ReturnBlendRGB( 125,251,226 );
else Color=ReturnBlendRGB( 255,100,100 );
}
switch (tempDirection) // 规菩锭巩俊 嘛绰 鉴辑甫 崔府茄促.
{
case DIRECTION_UP :
if (Color) DrawRGB1(ch,LocateX,LocateY,Guard,Weapon,Color);
else Draw1(ch,LocateX,LocateY,Guard,Weapon);
break;
case DIRECTION_RIGHTUP :
case DIRECTION_RIGHT :
case DIRECTION_RIGHTDOWN :
if (Color) DrawRGB2(ch,LocateX,LocateY,Guard,Weapon,Color);
else Draw2(ch,LocateX,LocateY,Guard,Weapon);
break;
case DIRECTION_DOWN :
if (Color) DrawRGB1(ch,LocateX,LocateY,Weapon,Guard,Color);
else Draw1(ch,LocateX,LocateY,Weapon,Guard);
break;
case DIRECTION_LEFTDOWN :
case DIRECTION_LEFT :
case DIRECTION_LEFTUP :
if (Color) DrawRGB2(ch,LocateX,LocateY,Weapon,Guard,Color);
else Draw2(ch,LocateX,LocateY,Weapon,Guard);
break;
}
}
int cHorseRider::GetWaveNo(LPCHARACTER ch)
{
int HorseNo=CheckHorseKind(ch);
return HorseRiderAniTable[CheckSex(ch)][HorseNo][ch->nCurrentAction].wave[ch->nCurrentFrame];
}
int cHorseRider::GetEffectWaveNo(LPCHARACTER ch)
{
int HorseNo=CheckHorseKind(ch);
return HorseRiderAniTable[CheckSex(ch)][HorseNo][ch->nCurrentAction].effect[ch->nCurrentFrame];
}
void cHorseRider::DrawHorseRider(LPCHARACTER ch)
{
switch (ch->viewtype)
{ //< CSD-030509
case VIEWTYPE_NORMAL_ : DrawAction(ch); break;
case VIEWTYPE_CONFUSION_ : PutConfusion(ch); break;
case VIEWTYPE_POISON_ : PutPoison(ch); break;
case VIEWTYPE_STONE_ : PutStone(ch); break;
case VIEWTYPE_SLOW_ : PutSlow(ch); break;
case VIEWTYPE_FROZEN_ : PutFrozen(ch); break;
case VIEWTYPE_CURSE_ : PutCurse(ch); break;
case VIEWTYPE_TRANSPARENCY_ : PutTransparency(ch); break;
case VIEWTYPE_GHOST_ : PutGhost(ch); break;
} //> CSD-030509
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -