📄 battle_vimustreet.cpp
字号:
msg.vPosStage = m_VimuStreetInfo.vStgPos;
PACKEDDATA_OBJ->QuickSend( pObject, &msg, sizeof(msg) );
}
*/
CObject* pObject = g_pUserTable->FindUser(MemberID);
ASSERT(pObject);
MSG_BATTLE_VIMU_CREATESTAGE msg;
msg.Category = MP_BATTLE;
msg.Protocol = MP_BATTLE_VIMU_CREATESTAGE;
msg.dwObjectID = pObject->GetID();
msg.dwBattleID = pObject->GetBattleID();
msg.vPosStage = m_VimuStreetInfo.vStgPos;
pObject->SendMsg( &msg, sizeof(msg) );
//#else
#endif
//厚公厘 捞棋飘 焊郴磊.
}
BOOL CBattle_VimuStreet::OnTeamMemberDie(int Team,DWORD VictimMemberID,DWORD KillerID)
{
ASSERT(Team < eBattleTeam_Max);
#ifdef _MAPSERVER_
CObject* pVictimMember = g_pUserTable->FindUser(VictimMemberID);
CObject* pKiller = g_pUserTable->FindUser(KillerID);
if(pVictimMember == NULL || pKiller == NULL)
{
ASSERT(0);
return FALSE;
}
ASSERT(pVictimMember->GetBattleID() == GetBattleID());
if( pVictimMember->GetObjectKind() != eObjectKind_Player ) return FALSE;
//搬苞肺.....
((CBattleTeam_VimuStreet*)m_TeamArray[Team])->AddTeamDieNum();
if(pKiller->GetBattleID() != GetBattleID()) //瞒饶 PK绊妨
{
//鸥某腐捞唱 阁胶磐茄抛 磷菌促.
//
return FALSE;
}
m_bDieByOp = TRUE; //惑措某腐茄抛 磷菌促.
((CPlayer*)pVictimMember)->m_bNeedRevive = FALSE; //何劝芒捞 鞘夸绝促.
MSG_DWORD3 msg;
SetProtocol(&msg,MP_BATTLE,MP_BATTLE_TEAMMEMBER_DIE_NOTIFY);
msg.dwData1 = Team;
msg.dwData2 = VictimMemberID;
msg.dwData3 = KillerID;
ToEachTeam(pTeam)
pTeam->SendTeamMsg(&msg,sizeof(msg));
EndToEachTeam
#endif
// return TRUE;
// FALSE甫 府畔窍搁 盔贰狼 贸府甫 茄促. CPlayer(CMonster)::DoDie 窃荐甫 龋免茄促.
return FALSE;
}
void CBattle_VimuStreet::OnTeamObjectCreate(int Team,CBattleObject* pBattleObject)
{
}
void CBattle_VimuStreet::OnTeamObjectDestroy(int Team,CBattleObject* pBattleObject)
{
}
BOOL CBattle_VimuStreet::OnTeamMemberDelete(int Team,DWORD MemberID,char* Name)
{
#ifdef _MAPSERVER_
/*
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser( MemberID );
if( pPlayer )
if( pPlayer->GetState() == eObjectState_Die )
pPlayer->ReviveAfterVimu();
*/
#endif
return TRUE;
}
//server俊辑父 荤侩
void CBattle_VimuStreet::OnTick()
{
ySWITCH(m_BattleInfo.BattleState)
yCASE(eBATTLE_STATE_READY)
// DWORD ElapTime = gCurTime - m_BattleInfo.BattleTime;
// if( ElapTime > BATTLE_VIMUSTREET_READYTIME)
// {
// ToEachTeam(pTeam)
// if(pTeam->GetAliveTeamMemberNum() == 0)
// break;
// EndToEachTeam
// StartBattle();
// }
DWORD ElapTime = gCurTime - m_BattleInfo.BattleTime;
if( ElapTime > BATTLE_VIMUSTREET_READYTIME )
{
for( int n = 0; n < eBattleTeam_Max; ++n )
{
if( m_TeamArray[n]->GetAliveTeamMemberNum() == 0 )
{
Draw();
return;
}
}
StartBattle();
}
yCASE(eBATTLE_STATE_FIGHT)
Judge();
yCASE(eBATTLE_STATE_RESULT)
DWORD ElapTime = gCurTime - m_BattleInfo.BattleTime;
if( ElapTime > BATTLE_VIMUSTREET_RESULTTIME)
{
SetDestroyFlag();
}
yENDSWITCH
}
// 铰菩 魄沥
BOOL CBattle_VimuStreet::JudgeOneTeamWinsOtherTeam(int TheTeam,int OtherTeam)
{
CBattleTeam_VimuStreet* pTheTeam = (CBattleTeam_VimuStreet*)m_TeamArray[TheTeam];
CBattleTeam_VimuStreet* pOtherTeam = (CBattleTeam_VimuStreet*)m_TeamArray[OtherTeam];
// if(pOtherTeam->GetAliveTeamMemberNum() == 0)
if( pTheTeam->GetTeamDieNum() == 0 ) //KKK
if( pOtherTeam->GetTeamDieNum() != 0 )
{
Victory( TheTeam, OtherTeam );
return TRUE;
}
return FALSE;
}
BOOL CBattle_VimuStreet::Judge()
{
if(JudgeOneTeamWinsOtherTeam(eBattleTeam1,eBattleTeam2) == TRUE)
return TRUE;
if(JudgeOneTeamWinsOtherTeam(eBattleTeam2,eBattleTeam1) == TRUE)
return TRUE;
if( ((CBattleTeam_VimuStreet*)m_TeamArray[eBattleTeam1])->GetTeamDieNum()
&& ((CBattleTeam_VimuStreet*)m_TeamArray[eBattleTeam2])->GetTeamDieNum() )
Draw();
DWORD ElapsedTime = gCurTime - m_BattleInfo.BattleTime;
if(ElapsedTime > BATTLE_VIMUSTREET_FIGHTTIME)
Draw();
return FALSE;
}
void CBattle_VimuStreet::Victory(int WinnerTeamNum,int LoserTeamNum)
{
CBattle::Victory(WinnerTeamNum,LoserTeamNum);
#ifndef _MAPSERVER_
if( HERO->GetBattleTeam() == WinnerTeamNum )
{
m_pCurShowImage = &m_ImageWin;
}
else if( HERO->GetBattleTeam() == LoserTeamNum )
{
m_pCurShowImage = &m_ImageLose;
}
m_vTitleScale.x = 1.0f;
m_vTitleScale.y = 1.0f;
m_vTitlePos.x = (1024 - 512 * m_vTitleScale.x ) / 2; //128 = width
// m_vTitlePos.y = ( 768 - 128 * m_vTitleScale.y ) / 2; //42 = height
m_vTitlePos.y = 100;
//AutoAttack肛勉
HERO->DisableAutoAttack(); //傍拜吝 捞带芭 秒家登唱?
HERO->SetNextAction(NULL); //胶懦 静带巴档 秒家登唱?
#else
SKILLMGR->ReleaseAllSkillInBattle(GetBattleID());
CPlayer* pPlayer1 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[0]);
CPlayer* pPlayer2 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[1]);
CPlayer* pWinner = NULL;
CPlayer* pLoser = NULL;
if( WinnerTeamNum == 0 )
{
pWinner = pPlayer1;
pLoser = pPlayer2;
}
else if( WinnerTeamNum == 1 )
{
pWinner = pPlayer2;
pLoser = pPlayer1;
}
if( pPlayer1 == NULL || pPlayer2 == NULL || pWinner == NULL )
return;
// char buf[128];
// sprintf( buf, "%s丛苞 %s丛狼 厚公俊辑 %s丛捞 铰府窍继嚼聪促.",
// pPlayer1->GetObjectName(),
// pPlayer2->GetObjectName(),
// pWinner->GetObjectName() );
MSG_DWORD2 resultMsg;
resultMsg.Category = MP_SIGNAL;
resultMsg.Protocol = MP_SIGNAL_VIMU_RESULT;
resultMsg.dwObjectID = pWinner->GetID();
resultMsg.dwData1 = pWinner->GetID(); //winner
resultMsg.dwData2 = pLoser->GetID(); //loser
PACKEDDATA_OBJ->QuickSend( pWinner, &resultMsg, sizeof(resultMsg) );
/*
TESTMSG resultMsg;
resultMsg.Category = MP_SIGNAL;
resultMsg.Protocol = MP_SIGNAL_VIMU_RESULT;
resultMsg.dwObjectID = pWinner->GetID();
//strcpy( resultMsg.Msg, buf );
SafeStrCpy( resultMsg.Msg, buf, MAX_CHAT_LENGTH+1);
//PACKEDDATA_OBJ->QuickSend( pWinner, (MSGBASE*)&resultMsg, sizeof(TESTMSG) );
PACKEDDATA_OBJ->QuickSend( pWinner, (MSGBASE*)&resultMsg, resultMsg.GetMsgLength() ); //CHATMSG 040324
*/
#endif
}
void CBattle_VimuStreet::Draw()
{
CBattle::Draw();
#ifndef _MAPSERVER_
m_pCurShowImage = &m_ImageDraw;
m_vTitleScale.x = 1.0f;
m_vTitleScale.y = 1.0f;
m_vTitlePos.x = (1024 - 512 * m_vTitleScale.x ) / 2; //128 = width
// m_vTitlePos.y = ( 768 - 128 * m_vTitleScale.y ) / 2; //42 = height
m_vTitlePos.y = 100;
//AutoAttack肛勉
HERO->DisableAutoAttack(); //傍拜吝 捞带芭 秒家登唱?
HERO->SetNextAction(NULL); //胶懦 静带巴档 秒家登唱?
#else
SKILLMGR->ReleaseAllSkillInBattle(GetBattleID());
CPlayer* pPlayer1 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[0]);
CPlayer* pPlayer2 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[1]);
if( pPlayer1 == NULL || pPlayer2 == NULL )
return;
char buf[128];
sprintf( buf, "%s丛苞 %s丛狼 厚公啊 公铰何肺 场车嚼聪促.",
pPlayer1->GetObjectName(),
pPlayer2->GetObjectName() );
TESTMSG resultMsg;
resultMsg.Category = MP_SIGNAL;
resultMsg.Protocol = MP_SIGNAL_BATTLE;
resultMsg.dwObjectID = pPlayer1->GetID();
//strcpy( resultMsg.Msg, buf );
SafeStrCpy( resultMsg.Msg, buf, MAX_CHAT_LENGTH+1 );
//PACKEDDATA_OBJ->QuickSend( pPlayer1, (MSGBASE*)&resultMsg, sizeof(TESTMSG) );
PACKEDDATA_OBJ->QuickSend( pPlayer1, (MSGBASE*)&resultMsg, resultMsg.GetMsgLength() ); //CHATMSG 040324
#endif
}
#ifdef _MHCLIENT_
#include "interface/cFont.h"
//#include "interface/cImage.h"
#include "ImageNumber.h"
void CBattle_VimuStreet::Render()
{
//Title
// RECT rect = { 30, 100, 500, 150 };
// char temp[256];
// sprintf( temp, "VimuStreet Battle" );
// CFONT_OBJ->RenderFont( 0, temp, strlen(temp), &rect, 0xffffffff );
//力茄矫埃...
// SetRect( &rect, 30, 120, 500, 150 );
// RECT rect = { 30, 100, 500, 150 };
DWORD ElapsedTime = gCurTime-m_BattleInfo.BattleTime;
switch(m_BattleInfo.BattleState )
{
case eBATTLE_STATE_READY:
{
//拳搁吝埃俊
DWORD RemainTime = BATTLE_VIMUSTREET_READYTIME > ElapsedTime ? BATTLE_VIMUSTREET_READYTIME - ElapsedTime : 0;
//sprintf( temp, "Battle Start in %d sec", RemainTime / 1000 );
m_ImageNumber.SetNumber( RemainTime / 1000 );
if( m_ImageNumber.IsNumberChanged() )
m_ImageNumber.SetFadeOut( 500 );
m_ImageNumber.Render();
// if( m_pCurShowImage )
// m_pCurShowImage->RenderSprite( &m_vTitleScale, NULL, 0.0f, &m_vTitlePos, 0xffffffff );
}
break;
case eBATTLE_STATE_FIGHT:
{
if( m_pCurShowImage )
m_pCurShowImage->RenderSprite( &m_vTitleScale, NULL, 0.0f, &m_vTitlePos, 0xffffffff );
//拳搁吝埃俊 唱吭促啊 困肺?
DWORD RemainTime = BATTLE_VIMUSTREET_FIGHTTIME > ElapsedTime ? BATTLE_VIMUSTREET_FIGHTTIME - ElapsedTime : 0;
//sprintf( temp, "Battle End in %d sec", RemainTime / 1000 );
m_ImageNumber.SetNumber( RemainTime / 1000 );
// m_ImageNumber.SetPosition( 512 + 32, 130 ); //130
// m_ImageNumber.SetPosition( 512 + 32, 30 ); //130
m_ImageNumber.Render();
}
break;
case eBATTLE_STATE_RESULT:
{
DWORD dwAlpha = 255;
if( !m_bFadeOut )
{
if( ElapsedTime > 5500 )
{
m_dwFadeOutStartTime = gCurTime;
m_bFadeOut = TRUE;
}
}
else
{
DWORD dwElapsed = gCurTime - m_dwFadeOutStartTime;
DWORD dwMinusAlpha = 255 * dwElapsed / 1000;
if( dwMinusAlpha < 255 )
{
dwAlpha = 255 - dwMinusAlpha;
}
else
{
dwAlpha = 0;
}
}
if(m_WinnerTeam == eBattleTeam_Max)
{
if( m_pCurShowImage )
m_pCurShowImage->RenderSprite( &m_vTitleScale, NULL, 0.0f, &m_vTitlePos, 0x00ffffff | (dwAlpha << 24) );
}
else
{
if(ElapsedTime > 2500)
{
if( m_pCurShowImage )
m_pCurShowImage->RenderSprite( &m_vTitleScale, NULL, 0.0f, &m_vTitlePos, 0x00ffffff | (dwAlpha << 24) );
}
}
}
break;
}
//CFONT_OBJ->RenderFont(0,temp,strlen(temp),&rect,0xffffffff);
}
#endif
// } end virtual func
//////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -