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

📄 characterdialog.cpp

📁 墨香最新私服
💻 CPP
字号:
// CharacterDialog.cpp: implementation of the CCharacterDialog class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CharacterDialog.h"
#include "ObjectManager.h"
#include "./Interface/CWindowManager.h"
#include "./Interface/cStatic.h"
#include "./Interface/cButton.h"
#include "WindowIDEnum.h"
#include "GuildManager.h"
#include "KyungGongManager.h"
#include "MunpaMarkDialog.h"
#include "SkillManager_Client.h"
#include "CheatMsgParser.h"

#include "GameIn.h"
#include "MainBarDialog.h"
#include "ChatManager.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCharacterDialog::CCharacterDialog()
{
	m_type = WT_CHARINFODIALOG;
	m_nocoriPoint = 0;
}

CCharacterDialog::~CCharacterDialog()
{

}

void CCharacterDialog::Linking()
{
	m_pMunpaMarkDlg = (CMunpaMarkDialog*)GetWindowForID(CI_MUNPAMARK);
	m_ppStatic.munpa = (cStatic *)GetWindowForID(CI_CHARMUNPA);
	m_ppStatic.jikwe = (cStatic *)GetWindowForID(CI_CHARJIKWE);
	m_ppStatic.fame = (cStatic *)GetWindowForID(CI_CHARFAME);
	m_ppStatic.badfame = (cStatic *)GetWindowForID(CI_CHARBADFAME);
	m_ppStatic.name = (cStatic *)GetWindowForID(CI_CHARNAME);
//	m_ppStatic.stage = (cStatic *)GetWindowForID(CI_CHARSTAGE);		// 版瘤
//	m_ppStatic.job = (cStatic *)GetWindowForID(CI_CHARJOB);		// 流诀
//	m_ppStatic.ideology = (cStatic *)GetWindowForID(CI_CHARIDEOLOGY);	// 啊摹包
	
	m_ppStatic.genGoal = (cStatic *)GetWindowForID(CI_CHARGENGOAL);
	m_ppStatic.simmak = (cStatic *)GetWindowForID(CI_CHARSIMMAK);
	m_ppStatic.minchub = (cStatic *)GetWindowForID(CI_CHARDEX);
	m_ppStatic.cheryuk = (cStatic *)GetWindowForID(CI_CHARSTA);
	m_ppStatic.level = (cStatic *)GetWindowForID(CI_CHARLEVEL);
	m_ppStatic.expPercent = (cStatic *)GetWindowForID(CI_CHAREXPPERCENT);
	m_ppStatic.point = (cStatic *)GetWindowForID(CI_CHARPOINT);		// 儡咯器牢飘
	
	m_ppStatic.meleeattack = (cStatic *)GetWindowForID(CI_CHARATTACK);	// 傍拜仿
	m_ppStatic.rangeattack = (cStatic *)GetWindowForID(CI_LONGATTACK);	// 傍拜仿
	m_ppStatic.defense = (cStatic *)GetWindowForID(CI_CHARDEFENSE);
//	m_ppStatic.kyeongkong = (cStatic *)GetWindowForID(CI_CHARKYEONGKONG);
//	m_ppStatic.move = (cStatic *)GetWindowForID(CI_CHARMOVE);
	m_ppStatic.life = (cStatic *)GetWindowForID(CI_CHARLIFE);
	m_ppStatic.Shield = (cStatic *)GetWindowForID(CI_HOSINDEFENSE);
	m_ppStatic.naeryuk = (cStatic *)GetWindowForID(CI_CHARNAERYUK);
	
	
	m_ppStatic.spname = (cStatic *)GetWindowForID(CI_SPCHARNAME);	
	m_ppStatic.critical = (cStatic *)GetWindowForID(CI_CRITICAL);	
	m_ppStatic.attackdistance = (cStatic *)GetWindowForID(CI_DISTANCE);	

//	m_ppStatic.dok = (cStatic *)GetWindowForID(CI_CHARDOK);
	
	m_pPointBtn[GENGOL_POINT] = (cButton *)GetWindowForID(CI_GENGOL_POINT);
	m_pPointBtn[SIMMEK_POINT] = (cButton *)GetWindowForID(CI_SIMMEK_POINT);
	m_pPointBtn[MINCHUB_POINT] = (cButton *)GetWindowForID(CI_MINCHUB_POINT);
	m_pPointBtn[CHERYUK_POINT] = (cButton *)GetWindowForID(CI_CHERYUK_POINT);


	for(int n=0;n<ATTR_MAX;++n)
	{
		m_AttrDefComponent.pStatic.SetElement_Val(ATTR_FIRE+n,(cStatic *)GetWindowForID(CI_CHARHWA+n));
		m_AttrDefComponent.pGuage.SetElement_Val(ATTR_FIRE+n,(cGuagen *)GetWindowForID(CI_DEFENCE_HWA+n));
	}

}
void CCharacterDialog::Init(LONG x, LONG y, WORD wid, WORD hei, cImage * basicImage, LONG ID)
{
	cDialog::Init(x,y,wid,hei,basicImage,ID);
	//m_type = WT_CHARINFODIALOG;
}

void CCharacterDialog::UpdateData()
{
	BASEOBJECT_INFO ObjInfo;
	CHARACTER_TOTALINFO ChaInfo;
	HERO_TOTALINFO HeroInfo;
	OBJECTMGR->GetHero()->GetBaseObjectInfo(&ObjInfo);
	OBJECTMGR->GetHero()->GetCharacterTotalInfo(&ChaInfo);
	OBJECTMGR->GetHero()->GetHeroTotalInfo(&HeroInfo);
	
	m_ppStatic.fame->SetStaticValue(HeroInfo.Fame);	
	m_ppStatic.name->SetStaticText(ObjInfo.ObjectName);
	m_ppStatic.badfame->SetStaticValue(ChaInfo.BadFame);
//	m_ppStatic.stage->SetStaticValue(ChaInfo.Stage);		// 版瘤


	for(int n=0;n<ATTR_MAX;++n)
	{
		m_AttrDefComponent.SetValue(ATTR_FIRE+n,(WORD)(HERO->GetAttDefense(ATTR_FIRE+n)*100.5));
	}
	
	// 版傍 窜拌 钎矫
	if( HeroInfo.KyungGongGrade == 0)
	{
		// 版傍 绝澜..
//		m_ppStatic.kyeongkong->SetStaticText("   -");
	}
	else
	{
		CKyungGongInfo* pKyungGongInfo = KYUNGGONGMGR->GetKyungGongInfo(HeroInfo.KyungGongGrade);
//		m_ppStatic.kyeongkong->SetStaticText(pKyungGongInfo->GetKyungGongName());
	}

	SetCritical();
	SetAttackRange();
	SetAttackRate();
	SetDefenseRate();
//	m_ppStatic.ideology->SetStaticValue(HeroInfo.wKarma);	// 啊摹包karma

/*
	m_ppStatic.attack->SetStaticValue(OBJECTMGR->GetHeroAttack());		// 傍拜仿
	m_ppStatic.defense->SetStaticValue(OBJECTMGR->GetHeroDefense());
	m_ppStatic.move->SetStaticValue(OBJECTMGR->GetHeroMove());
	m_ppStatic.dok->SetStaticValue(OBJECTMGR->GetHeroDok());
*/
	
}
void CCharacterDialog::SetExpPointPercent(float perc)
{
	static char buf[66];
	sprintf(buf, "[%.2f%%]", perc);

#ifdef _CHEATENABLE_	
	if(CHEATMGR->IsCheatEnable())
	{
		char buf1[66];
		wsprintf(buf1, " : %d/%d", HERO->GetExpPoint(), HERO->GetMaxExpPoint());
		strcat(buf, buf1);
	}
#endif

	m_ppStatic.expPercent->SetStaticText(buf);
}
void CCharacterDialog::SetLevel(WORD level)
{
	m_ppStatic.level->SetStaticValue(level);
}
void CCharacterDialog::SetLife(DWORD life)
{
	//GuageOverCheck
	if(life > HERO->GetMaxLife())
		life = HERO->GetMaxLife();

#ifdef _DEBUG
	char buf1[66];
	wsprintf(buf1, "%d/%d", life, HERO->GetMaxLife());
	m_ppStatic.life->SetStaticText(buf1);

#else
	m_ppStatic.life->SetStaticValue(life);
#endif 
	
}
void CCharacterDialog::SetShield(DWORD Shield)
{
	//GuageOverCheck
	if(Shield > HERO->GetMaxShield())
		Shield = HERO->GetMaxShield();

#ifdef _DEBUG
	char buf1[66];
	wsprintf(buf1, "%d/%d", Shield, HERO->GetMaxShield());
	m_ppStatic.Shield->SetStaticText(buf1);

#else
	m_ppStatic.Shield->SetStaticValue(Shield);
#endif 
	
}
void CCharacterDialog::SetNaeRyuk(DWORD naeryuk)
{
	//GuageOverCheck
	if(naeryuk > HERO->GetMaxNaeRyuk())
		naeryuk = HERO->GetMaxNaeRyuk();

#ifdef _DEBUG
	char buf1[66];
	wsprintf(buf1, "%d/%d", naeryuk, HERO->GetMaxNaeRyuk());
	m_ppStatic.naeryuk->SetStaticText(buf1);

#else
	m_ppStatic.naeryuk->SetStaticValue(naeryuk);
#endif 
}

void CCharacterDialog::SetGenGol()
{
	WORD resVal = HERO->GetGenGol();
	m_ppStatic.genGoal->SetStaticValue(resVal);
}
void CCharacterDialog::SetMinChub()
{
	WORD resVal = HERO->GetMinChub();
	m_ppStatic.minchub->SetStaticValue(resVal);
}
void CCharacterDialog::SetCheRyuk()
{
	WORD resVal = HERO->GetCheRyuk();
	m_ppStatic.cheryuk->SetStaticValue(resVal);
}
void CCharacterDialog::SetSimMek()
{
	WORD resVal = HERO->GetSimMek();
	m_ppStatic.simmak->SetStaticValue(resVal);
}
void CCharacterDialog::SetFame(FAMETYPE fame)
{
	m_ppStatic.fame->SetStaticValue(fame); 
}
void CCharacterDialog::SetBadFame(FAMETYPE badfame)
{
	m_ppStatic.badfame->SetStaticValue(badfame); 
}

void CCharacterDialog::SetAttackRate()
{
	char buf1[66];
	DWORD minv,maxv;
	minv = HERO->GetPhyAttackPowerMin();
	maxv = HERO->GetPhyAttackPowerMax();
	wsprintf(buf1, "%d ~ %d", minv, maxv);
	if( HERO->GetWeaponEquipType() != WP_GUNG &&
		HERO->GetWeaponEquipType() != WP_AMGI )
	{
		m_ppStatic.rangeattack->SetStaticText("-");
		m_ppStatic.meleeattack->SetStaticText(buf1);
	}
	else
	{
		m_ppStatic.meleeattack->SetStaticText("-");
		m_ppStatic.rangeattack->SetStaticText(buf1);
	}
}
void CCharacterDialog::SetDefenseRate()
{
	m_ppStatic.defense->SetStaticValue(HERO->GetPhyDefense());
}
void CCharacterDialog::SetCritical()
{
	DWORD resVal = HERO->GetCritical();
	m_ppStatic.critical->SetStaticValue(resVal);
}
void CCharacterDialog::SetAttackRange()
{
	float addRange = HERO->GetAddAttackRange();
	float range;

	if( HERO->GetWeaponEquipType() == WP_GUNG )
	{
		range = SKILLMGR->GetSkillInfo(COMBO_GUNG_MIN)->GetSkillRange();
		m_ppStatic.attackdistance->SetStaticValue((LONG)(addRange + range));
	}
	else if(HERO->GetWeaponEquipType() == WP_AMGI)
	{
		range = SKILLMGR->GetSkillInfo(COMBO_AMGI_MIN)->GetSkillRange();
		m_ppStatic.attackdistance->SetStaticValue((LONG)(addRange + range));
	}
	else
	{
		m_ppStatic.attackdistance->SetStaticText("-");
	}
		
}
void CCharacterDialog::SetPointLeveling(BOOL val, WORD point)
{
	m_nocoriPoint = point;
	m_ppStatic.point->SetStaticValue(m_nocoriPoint);
	for(int i = 0 ; i < MAX_BTN_POINT ; i++)
		m_pPointBtn[i]->SetActive(val);
}
void CCharacterDialog::OnAddPoint(BYTE whatsPoint)
{
	MSG_WORD msg;
	msg.Category = MP_CHAR;
	msg.Protocol = MP_CHAR_POINTADD_SYN;
	msg.dwObjectID = HEROID;
	msg.wData = whatsPoint;

	
	if(--m_nocoriPoint <= 0)
	{
		SetPointLeveling(FALSE);
		//return;
	}
	m_ppStatic.point->SetStaticValue(m_nocoriPoint);
	
	NETWORK->Send(&msg,sizeof(MSG_WORD));
}

void CCharacterDialog::RefreshMunpaInfo()
{
	BYTE rank = HERO->GetGuildMemberRank();
	m_ppStatic.munpa->SetStaticText(HERO->GetMunpaName());
	if(rank == GUILD_NOTMEMBER)
	{
		m_ppStatic.jikwe->SetStaticText("");
		m_pMunpaMarkDlg->SetActive(FALSE);
	}
	else
	{
		m_pMunpaMarkDlg->SetActive(FALSE); //绝局具瘤...
		m_ppStatic.jikwe->SetStaticText( GUILDMGR->GetRankName(HERO->GetGuildMemberRank()) );
	}
	m_ppStatic.fame->SetStaticValue(HERO->GetFame());
}

void CCharacterDialog::SetActive( BOOL val )
{
	cDialog::SetActive( val );

//--- main bar icon
	CMainBarDialog* pDlg = GAMEIN->GetMainInterfaceDialog();
	if( pDlg )
	{
//		pDlg->SetPushBarIcon( OPT_CHARACTERDLGICON, m_bActive );

		if( val == TRUE )
			pDlg->SetAlram( OPT_CHARACTERDLGICON, FALSE );
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -