⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 charactercalcmanager.cpp

📁 墨香最新私服
💻 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 + -