📄 battle_murimfield.cpp
字号:
{
switch( m_MurimBattleInfo.wMurimBattleKind )
{
case eMurimBattle_MaxKill:
Judge_MaxKill();
break;
}
// ¸ðµç °ÔÀÓÀº ±âº»ÀûÀ¸·Î ½Ã°£ Á¦ÇÑ ÀÖÀ½.
Judge_TimeLimit();
return FALSE;
}
void CBattle_MurimField::Victory( int WinnerTeamNum, int LoserTeamNum )
{
CBattle::Victory( WinnerTeamNum, LoserTeamNum );
#ifdef _MAPSERVER_
MSG_DWORD2 msg;
msg.Category = MP_MURIMNET;
msg.Protocol = MP_MURIMNET_NOTIFYTOMN_GAMEEND;
msg.dwData1 = GetBattleID();
msg.dwData2 = WinnerTeamNum;
g_pServerTable->SetPositionHead();
SERVERINFO* pAgentInfo = g_pServerTable->GetNextAgentServer();
if(pAgentInfo == NULL)
{
ASSERT(0);
return;
}
PACKEDDATA_OBJ->SendToMapServer( pAgentInfo->dwConnectionIndex, 99, &msg, sizeof(msg) );
#else
if( HERO->GetBattleTeam() == WinnerTeamNum )
m_pCurShowImage = &m_ImageWin;
else if( HERO->GetBattleTeam() == LoserTeamNum )
m_pCurShowImage = &m_ImageLose;
else
m_pCurShowImage = NULL;
m_vImageScale.x = m_vImageScale.y = 3.0f;
m_vImagePos.x = (1024 - 128 * m_vImageScale.x ) / 2; //128 = width
m_vImagePos.y = ( 768 - 42 * m_vImageScale.y ) / 2; //42 = height
//AutoAttack¸ØÃã
// HERO->DisableAutoAttack(); //°ø°ÝÁß ÀÌ´ø°Å Ãë¼ÒµÇ³ª?
// HERO->SetNextAction(NULL); //½ºÅ³ ¾²´ø°Íµµ Ãë¼ÒµÇ³ª?
#endif
}
void CBattle_MurimField::Draw()
{
CBattle::Draw();
#ifdef _MAPSERVER_
MSG_DWORD2 msg;
msg.Category = MP_MURIMNET;
msg.Protocol = MP_MURIMNET_NOTIFYTOMN_GAMEEND;
msg.dwData1 = GetBattleID();
msg.dwData2 = 2;
g_pServerTable->SetPositionHead();
SERVERINFO* pAgentInfo = g_pServerTable->GetNextAgentServer();
if(pAgentInfo == NULL)
{
ASSERT(0);
return;
}
PACKEDDATA_OBJ->SendToMapServer( pAgentInfo->dwConnectionIndex, 99, &msg, sizeof(msg) );
#else
m_pCurShowImage = &m_ImageDraw;
m_vImageScale.x = m_vImageScale.y = 3.0f;
m_vImagePos.x = (1024 - 128 * m_vImageScale.x ) / 2; //128 = width
m_vImagePos.y = ( 768 - 42 * m_vImageScale.y ) / 2; //42 = height
//AutoAttack¸ØÃã
// HERO->DisableAutoAttack(); //°ø°ÝÁß ÀÌ´ø°Å Ãë¼ÒµÇ³ª?
// HERO->SetNextAction(NULL); //½ºÅ³ ¾²´ø°Íµµ Ãë¼ÒµÇ³ª?
#endif
}
void CBattle_MurimField::Result()
{
switch( m_MurimBattleInfo.wMurimBattleReward )
{
case 0:
break;
case 1:
Result_Money();
break;
}
// °á°ú º¸´Â ½Ã°£ üũ
DWORD ElapTime = gCurTime - m_BattleInfo.BattleTime;
if( ElapTime > BATTLE_MURIMFIELD_RESULTTIME )
{
MSGBASE msg;
msg.Category = MP_MURIMNET;
msg.Protocol = MP_MURIMNET_RETURNTOMURIMNET_ACK;
ToEachTeam( pTeam )
pTeam->SendTeamMsg( &msg, sizeof(msg) );
EndToEachTeam
SetDestroyFlag();
}
}
BOOL CBattle_MurimField::Judge_MaxKill()
{
CBattleTeam_MurimField* pTheTeam = GetTeam(eBattleTeam1);
CBattleTeam_MurimField* pOtherTeam = GetTeam(eBattleTeam2);
MURIMFIELD_TEAMINFO* pTheTeamInfo = pTheTeam->GetTeamInfo();
MURIMFIELD_TEAMINFO* pOtherTeamInfo = pOtherTeam->GetTeamInfo();
// if( pTheTeamInfo->TotalKill >= m_MurimBattleInfo.dwValue )
if( pTheTeamInfo->TotalKill >= 10 )
{
Victory( eBattleTeam1, eBattleTeam2 );
return TRUE;
}
// if( pOtherTeamInfo->TotalKill >= m_MurimBattleInfo.dwValue )
if( pOtherTeamInfo->TotalKill >= 10 )
{
Victory( eBattleTeam2, eBattleTeam1 );
return TRUE;
}
return FALSE;
}
BOOL CBattle_MurimField::Judge_TimeLimit()
{
CBattleTeam_MurimField* pTheTeam = GetTeam(eBattleTeam1);
CBattleTeam_MurimField* pOtherTeam = GetTeam(eBattleTeam2);
MURIMFIELD_TEAMINFO* pTheTeamInfo = pTheTeam->GetTeamInfo();
MURIMFIELD_TEAMINFO* pOtherTeamInfo = pOtherTeam->GetTeamInfo();
DWORD ElapsedTime = gCurTime - m_BattleInfo.BattleTime;
if( ElapsedTime > BATTLE_MURIMFIELD_FIGHTTIME )
{
if( pTheTeamInfo->TotalKill > pOtherTeamInfo->TotalKill )
Victory( eBattleTeam1, eBattleTeam2 );
else if( pTheTeamInfo->TotalKill < pOtherTeamInfo->TotalKill )
Victory( eBattleTeam2, eBattleTeam1 );
else
Draw();
}
return FALSE;
}
BOOL CBattle_MurimField::Result_Money()
{
// µ·ÀÌ °É·ÁÀÖ´Â °æ¿ì ó¸®ÇÑ´Ù.
return TRUE;
}
#ifdef _MAPSERVER_ // Battle Á¤º¸ °ü·Ã
void CBattle_MurimField::GetBattleInfo( char* pInfo, WORD* size )
{
MSG_BATTLESETTING_SYN_MURIMFIELD* Info = (MSG_BATTLESETTING_SYN_MURIMFIELD*)pInfo;
memcpy( Info, &m_BattleInfo, sizeof(BATTLE_INFO_BASE) );
ToEachTeam( pTeam )
CBattleTeam_MurimField* pTeamMF = (CBattleTeam_MurimField*)pTeam;
pTeamMF->GetTeamInfo( &Info->TeamInfo[TeamNumber] );
EndToEachTeam
*size = sizeof(MSG_BATTLESETTING_SYN_MURIMFIELD);
}
#endif
#ifdef _MHCLIENT_
#include "interface/cFont.h"
// ÀÎÅÍÆäÀ̽º´Â ±×¸² ¹× ±âȹÀÌ ³ª¿À´Â´ë·ç....
void CBattle_MurimField::Render()
{
// °á°ú ÀÎÅÍÆäÀ̽º ±¸¼º. ( Àӽà )
if( m_pCurShowImage )
m_pCurShowImage->RenderSprite( &m_vImageScale, NULL, 0.0f, &m_vImagePos, 0xffffffff );
DWORD ElapsedTime = gCurTime-m_BattleInfo.BattleTime;
switch( m_BattleInfo.BattleState )
{
case eBATTLE_STATE_READY:
{
DWORD RemainTime = BATTLE_MURIMFIELD_READYTIME > ElapsedTime ? BATTLE_MURIMFIELD_READYTIME - ElapsedTime : 0;
m_ImageNumber.SetNumber( RemainTime / 1000 );
m_ImageNumber.Render();
}
break;
case eBATTLE_STATE_FIGHT:
{
DWORD RemainTime = BATTLE_MURIMFIELD_FIGHTTIME > ElapsedTime ? BATTLE_MURIMFIELD_FIGHTTIME - ElapsedTime : 0;
m_ImageNumber.SetNumber( RemainTime / 1000 );
m_ImageNumber.Render();
}
break;
case eBATTLE_STATE_RESULT:
{
}
break;
}
MURIMFIELD_TEAMINFO *pOurTeam, *pOtherTeam/*, *pObserver */;
if( HERO->GetBattleTeam() == eBattleTeam1 )
{
pOurTeam = GetTeam(eBattleTeam1)->GetTeamInfo();
pOtherTeam = GetTeam(eBattleTeam2)->GetTeamInfo();
// pObserver = GetTeam(eBattleTeam_Observer)->GetTeamInfo();
}
else if( HERO->GetBattleTeam() == eBattleTeam2 )
{
pOurTeam = GetTeam(eBattleTeam2)->GetTeamInfo();
pOtherTeam = GetTeam(eBattleTeam1)->GetTeamInfo();
// pObserver = GetTeam(eBattleTeam_Observer)->GetTeamInfo();
}
else
{
pOurTeam = GetTeam(eBattleTeam1)->GetTeamInfo();
pOtherTeam = GetTeam(eBattleTeam2)->GetTeamInfo();
// pObserver = GetTeam(eBattleTeam_Observer)->GetTeamInfo();
}
RECT rect;
char temp[256];
int pos, n;
// Total Score
sprintf( temp, "Total Score is Our Team( %d ) : Other Team( %d )", pOurTeam->TotalKill, pOtherTeam->TotalKill );
SetRect( &rect, 150, 10, 250, 25 );
CFONT_OBJ->RenderFont( 0, temp, strlen(temp), &rect, 0xffffffff );
// Our Team
sprintf( temp, "- Our Team Member -" );
SetRect( &rect, 10, 100, 110, 115 );
CFONT_OBJ->RenderFont( 0, temp, strlen(temp), &rect, 0xff00ffff );
for( n = 0; n < MAX_MURIMFIELD_MEMBERNUM; ++n )
{
BATTLE_TEAMMEMBER_INFO* pMemberInfo = &pOurTeam->TeamMember[n];
if( pMemberInfo->MemberID )
{
sprintf( temp, "%s (%d-%d)", pMemberInfo->MemberName, pMemberInfo->MemberKillNum, pMemberInfo->MemberDieNum );
SetRect( &rect, 10, pos*15+115, 110, pos*15+130 );
CFONT_OBJ->RenderFont( 0, temp, strlen(temp), &rect, 0xff00ffff );
pos++;
}
}
// Other Team
sprintf( temp, "- Other Team Member -" );
SetRect( &rect, 130, 100, 240, 115 );
CFONT_OBJ->RenderFont( 0, temp, strlen(temp), &rect, 0xffff00ff );
pos = 0;
for( n = 0; n < MAX_MURIMFIELD_MEMBERNUM; ++n )
{
BATTLE_TEAMMEMBER_INFO* pMemberInfo = &pOtherTeam->TeamMember[n];
if( pMemberInfo->MemberID )
{
sprintf( temp, "%s (%d-%d)", pMemberInfo->MemberName, pMemberInfo->MemberKillNum, pMemberInfo->MemberDieNum );
SetRect( &rect, 130, pos*15+115, 240, pos*15+130 );
CFONT_OBJ->RenderFont( 0, temp, strlen(temp), &rect, 0xffff00ff );
pos++;
}
}
// Observer
/* sprintf( temp, "- Observers -" );
SetRect( &rect, 10, 400, 110, 415 );
CFONT_OBJ->RenderFont( 0, temp, strlen(temp), &rect, 0xffffffff );
pos = 0;
for( n = 0; n < MAX_MURIMFIELD_MEMBERNUM; ++n )
{
BATTLE_TEAMMEMBER_INFO* pMemberInfo = &pObserver->TeamMember[n];
if( pMemberInfo->MemberID )
{
sprintf( temp, "Observer %s", pMemberInfo->MemberName );
SetRect( &rect, 10, pos*15+415, 110, pos*15+430 );
CFONT_OBJ->RenderFont( 0, temp, strlen(temp), &rect, 0xffffffff );
pos++;
}
} */
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -