📄 charactercalcmanager.cpp
字号:
// CharacterCalcManager.cpp: implementation of the CCharacterCalcManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CharacterCalcManager.h"
#include "GameIn.h"
#include "ObjectManager.h"
#include "ChatManager.h"
#include "GameResourceManager.h"
#include "./Audio/MHAudioManager.h"
#include "AbilityManager.h"
#include "CharacterDialog.h"
#include "GameEventManager.h"
#include "ObjectStateManager.h"
#include "ObjectActionManager.h"
#include "ExitManager.h"
#include "GameEventManager.h"
#include "QuestManager.h"
#include "SuryunDialog.h"
#include "JournalManager.h"
#include "MainBarDialog.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GLOBALTON(CCharacterCalcManager)
CCharacterCalcManager::CCharacterCalcManager()
{
}
CCharacterCalcManager::~CCharacterCalcManager()
{
}
void CCharacterCalcManager::NetworkMsgParse(BYTE Protocol,void* pMsg)
{
switch(Protocol)
{
case MP_CHAR_LIFE_ACK:
{
MSG_INT* msg = (MSG_INT*)pMsg;
//((cGuage*)GAMEIN->GetGuageDlg()->GetWindowForID(CG_GUAGELIFE))->SetCurValue(msg->dwData);
if(HERO)
{
HERO->ChangeLife(msg->nData);
// CHATMGR->AddMsg(CTC_TOWHOLE,"积疙仿 函拳樊 : %d",msg->nData); //for Debug
}
}
break;
case MP_CHAR_LIFE_NACK:
{
ASSERT(0);
}
break;
case MP_CHAR_SHIELD_ACK:
{
MSG_INT* msg = (MSG_INT*)pMsg;
if(HERO)
{
HERO->ChangeShield(msg->nData);
}
}
break;
case MP_CHAR_SHIELD_NACK:
{
ASSERT(0);
}
break;
case MP_CHAR_NAERYUK_ACK:
{
MSG_DWORD * msg = (MSG_DWORD *)pMsg;
//((cGuage*)GAMEIN->GetGuageDlg()->GetWindowForID(CG_GUAGENAERYUK))->SetCurValue(msg->dwData);
if(HERO)
{
HERO->SetNaeRyuk(msg->dwData);
}
}
break;
case MP_CHAR_NAERYUK_NACK:
{
ASSERT(0);
}
break;
case MP_CHAR_EXPPOINT_ACK:
{
MSG_EXPPOINT * msg = (MSG_EXPPOINT *)pMsg;
if(!HERO) return;
if(msg->ExpKind == MSG_EXPPOINT::EXPPOINTKIND_ACQUIRE)
{
int diff = msg->ExpPoint - HERO->GetExpPoint();
if(diff<0)
{
diff = GAMERESRCMNGR->GetMaxExpPoint(HERO->GetLevel()) - HERO->GetExpPoint() + msg->ExpPoint;
HERO->SetExpPoint(0);
}
HERO->SetExpPoint(msg->ExpPoint);
CHATMGR->AddMsg( CTC_GETEXP, CHATMGR->GetChatMsg( 132 ), diff );
}
else if(msg->ExpKind == MSG_EXPPOINT::EXPPOINTKIND_DIE)
{
int diff = HERO->GetExpPoint() - msg->ExpPoint;
if(diff == 0)
return;
if(diff<0) // 肪促矫俊...
{
diff = GAMERESRCMNGR->GetMaxExpPoint(HERO->GetLevel()) - msg->ExpPoint + HERO->GetExpPoint();
}
HERO->SetExpPoint(msg->ExpPoint);
CHATMGR->AddMsg( CTC_GETEXP, CHATMGR->GetChatMsg( 134 ), diff );
}
}
break;
case MP_CHAR_EXPPOINT_NACK:
{
ASSERT(0);
}
break;
case MP_CHAR_MAXLIFE_NOTIFY:
{
MSG_DWORD * msg = (MSG_DWORD *)pMsg;
if(HERO)
{
HERO->SetMaxLife(msg->dwData);
}
}
break;
case MP_CHAR_MAXSHIELD_NOTIFY:
{
MSG_DWORD * msg = (MSG_DWORD *)pMsg;
if(HERO)
{
HERO->SetMaxShield(msg->dwData);
}
}
break;
case MP_CHAR_MAXNAERYUK_NOTIFY:
{
MSG_DWORD * msg = (MSG_DWORD *)pMsg;
if(HERO)
{
HERO->SetMaxNaeRyuk(msg->dwData);
}
}
break;
case MP_CHAR_PLAYERLEVELUP_NOTIFY:
{
MSG_DWORD * msg = (MSG_DWORD *)pMsg;
CPlayer * pPlayer = (CPlayer *)OBJECTMGR->GetObject(msg->dwData);
if(!pPlayer) return;
EFFECTMGR->StartEffectProcess(eEffect_LevelUpSentence,pPlayer,NULL,0,0);
}
break;
case MP_CHAR_LEVEL_NOTIFY:
{
MSG_LEVEL * msg = (MSG_LEVEL*)pMsg;
// 饭骇 悸泼 msg->dwData1
if(HERO)
{
int diff = GAMERESRCMNGR->GetMaxExpPoint(HERO->GetLevel()) - HERO->GetExpPoint();
diff += msg->CurExpPoint;
if(msg->Level > HERO->GetLevel())
CHATMGR->AddMsg( CTC_GETEXP, CHATMGR->GetChatMsg( 132 ), diff );
HERO->SetLevel(msg->Level);
HERO->SetMaxExpPoint(msg->MaxExpPoint);
HERO->SetExpPoint(msg->CurExpPoint);
// AUDIOMGR->Play(64, HERO);
ABILITYMGR->UpdateAbilityState(ABILITYUPDATE_CHARACTERLEVEL_CHANGED,HERO->GetLevel(),HERO->GetAbilityGroup());
// Levelup Event Add
// GAMEEVENTMGR->AddEvent( eGameEvent1_LevelUp, HERO->GetLevel() );
GAMEEVENTMGR->AddEvent( eGameEvent_LevelUp, HERO->GetLevel() );
QUESTMGR->ProcessNpcMark();
// JOURNALMGR->GetListSyn();
}
}
break;
case MP_CHAR_LEVELUPPOINT_NOTIFY:
{
MSG_WORD * msg = (MSG_WORD *)pMsg;
// 饭骇 悸泼 msg->dwData1
if(HERO)
{
if(msg->wData != 0)
{
GAMEIN->GetCharacterDialog()->SetPointLeveling(TRUE, msg->wData); // 器牢飘 硅盒
if( !GAMEIN->GetCharacterDialog()->IsActive() )
GAMEIN->GetMainInterfaceDialog()->SetAlram( OPT_CHARACTERDLGICON, TRUE );
}
else
GAMEIN->GetCharacterDialog()->SetPointLeveling(FALSE); // 器牢飘 硅盒
}
}
break;
case MP_CHAR_GENGOL_NOTIFY:
{
MSG_DWORD * msg = (MSG_DWORD *)pMsg;
if(HERO)
{
HERO->SetGenGol(msg->dwData);
}
}
break;
case MP_CHAR_MINCHUB_NOTIFY:
{
MSG_DWORD * msg = (MSG_DWORD *)pMsg;
if(HERO)
{
HERO->SetMinChub(msg->dwData);
}
}
break;
case MP_CHAR_CHERYUK_NOTIFY:
{
MSG_DWORD * msg = (MSG_DWORD *)pMsg;
if(HERO)
{
HERO->SetCheRyuk(msg->dwData);
}
}
break;
case MP_CHAR_SIMMEK_NOTIFY:
{
MSG_DWORD * msg = (MSG_DWORD *)pMsg;
if(HERO)
{
HERO->SetSimMek(msg->dwData);
}
}
break;
case MP_CHAR_FAME_NOTIFY:
{
MSG_FAME * pmsg = (MSG_FAME*)pMsg;
if(HERO)
{
HERO->SetFame(pmsg->Fame);
}
}
break;
case MP_CHAR_BADFAME_NOTIFY:
{
MSG_FAME * pmsg = (MSG_FAME*)pMsg;
CPlayer* pPlayer = (CPlayer*)OBJECTMGR->GetObject( pmsg->dwObjectID );
if(pPlayer)
{
pPlayer->SetBadFame(pmsg->Fame);
}
}
break;
case MP_CHAR_BADFAME_ACK:
{
MSG_FAME* pmsg = (MSG_FAME*)pMsg;
// 盲泼芒俊 皋技瘤 眠啊
char badfame[16] = { 0, };
char money[16] = { 0, };
strcpy(badfame, AddComma(pmsg->Fame));
strcpy(money, AddComma(pmsg->Fame*BAIL_PRICE));
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(646), money, badfame);
}
break;
case MP_CHAR_BADFAME_NACK:
{
MSGBASE* pmsg = (MSGBASE*)pMsg;
// 厩疙摹甫 撤眠绰单 角菩窍看嚼聪促
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(647));
}
break;
case MP_CHAR_BADFAME_CHANGED:
{
MSG_FAME* pmsg = (MSG_FAME*)pMsg;
if(HERO)
{
HERO->SetFame(pmsg->Fame);
}
}
break;
case MP_CHAR_PLAYTIME_ACK:
{
MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
if(HERO)
{
}
}
break;
case MP_CHAR_PLAYTIME_NACK:
{
MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
if(HERO)
{
HERO->SetPlayTime(pmsg->dwData);
}
}
break;
case MP_CHAR_ABILITYEXPPOINT_ACK:
{
MSG_EXPPOINT * msg = (MSG_EXPPOINT *)pMsg;
if(!HERO) return;
if(msg->ExpKind == MSG_EXPPOINT::EXPPOINTKIND_ACQUIRE)
{
int diff = msg->ExpPoint - HERO->GetAbilityExp();
HERO->SetAbilityExp(msg->ExpPoint);
CHATMGR->AddMsg( CTC_GETABILITYEXP, CHATMGR->GetChatMsg( 135 ), diff );
ABILITYMGR->UpdateAbilityState(ABILITYUPDATE_ABILITYEXP_CHANGED,0,HERO->GetAbilityGroup());
}
else if(msg->ExpKind == MSG_EXPPOINT::EXPPOINTKIND_ABILITYUSE)
{
ASSERT(0);
//MessageBox(0,"Ung? -_-a",0,0);
}
}
break;
case MP_CHAR_ABILITY_UPGRADE_ACK:
{
GAMEIN->GetSuryunDialog()->SetDisable(FALSE);
MSG_WORD* pmsg = (MSG_WORD*)pMsg;
CAbilityInfo* pInfo = ABILITYMGR->GetAbilityInfo(pmsg->wData);
ABILITYMGR->UpgradeAbility(pmsg->wData,HERO->GetAbilityGroup());
CHATMGR->AddMsg( CTC_ABILITYUPGRADE_SUCCESS, CHATMGR->GetChatMsg( 137 ), pInfo->GetInfo()->Ability_name );
// event
GAMEEVENTMGR->AddEvent( eGameEvent_Ability, pInfo->GetInfo()->Ability_index );
}
break;
case MP_CHAR_ABILITY_UPGRADE_NACK:
{
GAMEIN->GetSuryunDialog()->SetDisable(FALSE);
MSG_WORD* pmsg = (MSG_WORD*)pMsg;
CAbilityInfo* pInfo = ABILITYMGR->GetAbilityInfo(pmsg->wData);
CHATMGR->AddMsg( CTC_ABILITYUPGRADE_FAILED, CHATMGR->GetChatMsg( 138 ), pInfo->GetInfo()->Ability_name );
}
break;
case MP_CHAR_EXITSTART_ACK:
{
MSGBASE* pmsg = (MSGBASE*)pMsg;
//辆丰墨款飘促款矫累
EXITMGR->StartExit();
}
break;
case MP_CHAR_EXITSTART_NACK:
{
MSG_BYTE* pmsg = (MSG_BYTE*)pMsg;
EXITMGR->RejectExit( pmsg->bData );
}
break;
case MP_CHAR_EXIT_ACK:
{
//辆丰
EXITMGR->Exit();
}
break;
case MP_CHAR_EXIT_NACK:
{
MSG_BYTE* pmsg = (MSG_BYTE*)pMsg;
EXITMGR->CancelExit( pmsg->bData );
}
break;
case MP_CHAR_YOUAREDIED:
{
if( HERO->GetState() != eObjectState_Die )
{
ASSERT(HERO->IsDied());
if(gCurTime - HERO->GetDiedTime() < 10000)
return;
OBJECTACTIONMGR->Die(HERO,HERO,FALSE,FALSE);
}
}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -