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

📄 mugongmanager.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:

		icon->Init(0,0, DEFAULT_ICONSIZE, DEFAULT_ICONSIZE, &skillLowImage, &skillHighImage, m_IconIndexCreator.GenerateIndex());
		icon->SetData(mugongBase->wIconIdx);
		icon->SetMugongBase(mugongBase);

		icon->m_pSkillInfo = pSkillInfo;
		
		SetToolTipIcon(icon);


		m_MugongHash.Add(icon, mugongBase->dwDBIdx);
		WINDOWMGR->AddWindow(icon);
	}
	MUGONGMGR->RefreshMugong();
	return icon;
}
CMugongBase * CMugongManager::GetMugong(DWORD dwDBIdx)
{
	CMugongBase * pMugong;
	pMugong = m_MugongHash.GetData(dwDBIdx);
	return pMugong;
}
CMugongBase * CMugongManager::GetMugongByMugongIdx(WORD MugongIdx)
{
	CMugongBase * pMugong;
	m_MugongHash.SetPositionHead();
	while(pMugong = m_MugongHash.GetData())
	{
		if(pMugong->GetItemIdx() == MugongIdx)
			return pMugong;
	}
	return NULL;
}


void CMugongManager::SetToolTipIcon(CMugongBase *pMugong)
{
	//酒贰 荐沥登绢具 缴过, 柳过 砒屏 啊瓷
	CSkillInfo* pCommSkill = pMugong->m_pSkillInfo;
	if(!pCommSkill)	return;

	cImage imgToolTip;
	SCRIPTMGR->GetImage( 63, &imgToolTip, PFT_HARDPATH );
	pMugong->SetToolTip( "", RGBA_MAKE(255, 255, 255, 255), &imgToolTip, TTCLR_ITEM_CANEQUIP );

	char line[64];
	
	//公傍辑 捞抚
	wsprintf(line, "[%s]", pCommSkill->GetSkillName() );
	pMugong->AddToolTipLine( line, TTTC_MUGONGNAME );
	pMugong->AddToolTipLine( "" );

	//公傍饭骇
	wsprintf(line, CHATMGR->GetChatMsg(460), pCommSkill->GetSkillInfo()->RestrictLevel );

	if( HERO->GetCharacterTotalInfo()->Level < pCommSkill->GetSkillInfo()->RestrictLevel )
		pMugong->AddToolTipLine( line, TTTC_LIMIT );
	else
		pMugong->AddToolTipLine( line, TTTC_FREELIMIT );
	
	//公傍辆幅
	switch( pCommSkill->GetSkillKind())
	{
	case SKILLKIND_OUTERMUGONG: pMugong->AddToolTipLine( CHATMGR->GetChatMsg(461), TTTC_MUGONGKIND ); break;
	case SKILLKIND_INNERMUGONG: pMugong->AddToolTipLine( CHATMGR->GetChatMsg(462), TTTC_MUGONGKIND ); break;
	case SKILLKIND_SIMBUB:		pMugong->AddToolTipLine( CHATMGR->GetChatMsg(463), TTTC_MUGONGKIND ); break;
	case SKILLKIND_JINBUB:		pMugong->AddToolTipLine( CHATMGR->GetChatMsg(464), TTTC_MUGONGKIND ); break;
	}

	//公扁蜡屈
	switch(pCommSkill->GetWeaponType())
	{
	case WP_GUM:	
		{
			if( HERO->GetWeaponEquipType() == WP_GUM )
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(465), TTTC_FREELIMIT );
			else
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(465), TTTC_LIMIT );
		}
		break;
	case WP_GWUN:	
		{
			if( HERO->GetWeaponEquipType() == WP_GWUN )
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(466), TTTC_FREELIMIT );
			else
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(466), TTTC_LIMIT );
		}
		break;
	case WP_DO:	
		{
			if( HERO->GetWeaponEquipType() == WP_DO )
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(467), TTTC_FREELIMIT );
			else
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(467), TTTC_LIMIT );
		}
		break;
	case WP_CHANG:	
		{
			if( HERO->GetWeaponEquipType() == WP_CHANG )
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(468), TTTC_FREELIMIT );
			else
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(468), TTTC_LIMIT );
		}
		break;
	case WP_GUNG:	
		{
			if( HERO->GetWeaponEquipType() == WP_GUNG )
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(469), TTTC_FREELIMIT );
			else
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(469), TTTC_LIMIT );
		}
		break;
	case WP_AMGI:	
		{
			if( HERO->GetWeaponEquipType() == WP_AMGI )
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(470), TTTC_FREELIMIT );
			else
				pMugong->AddToolTipLine( CHATMGR->GetChatMsg(470), TTTC_LIMIT );
		}
		break;
	}

	//版氰摹
	if( pCommSkill->GetNeedExp( pMugong->GetSung() ) )
	{
		if( pMugong->GetSung() < 12 )
		{
			sprintf( line, CHATMGR->GetChatMsg(471), pMugong->GetSung(),
				pMugong->GetExpPoint() * 100 / (float)pCommSkill->GetNeedExp(pMugong->GetSung()) );
		}
		else
		{
			sprintf( line, CHATMGR->GetChatMsg(405), pMugong->GetSung() );
		}
		pMugong->AddToolTipLine( line, TTTC_MUGONGEXP );

#ifdef _CHEATENABLE_		
		if(CHEATMGR->IsCheatEnable())
		{
			wsprintf( line, "%d / %d", pMugong->GetExpPoint(), pCommSkill->GetNeedExp( pMugong->GetSung() ) );
			pMugong->AddToolTipLine( line, TTTC_MUGONGEXP );
		}
#endif
	}
	
	//郴仿家葛
	if( pMugong->GetSung() > 0 )
	{
		wsprintf( line, CHATMGR->GetChatMsg(472), pCommSkill->GetNeedNaeRyuk(pMugong->GetSung()) );
		pMugong->AddToolTipLine( line, TTTC_MUGONGNEEDMANA );
	}
	
	//公傍加己
	switch( pCommSkill->GetAttrib() )
	{
	case 1: pMugong->AddToolTipLine( CHATMGR->GetChatMsg(473), TTTC_MUGONGATTRKIND ); break;
	case 2: pMugong->AddToolTipLine( CHATMGR->GetChatMsg(474), TTTC_MUGONGATTRKIND ); break;
	case 3: pMugong->AddToolTipLine( CHATMGR->GetChatMsg(475), TTTC_MUGONGATTRKIND ); break;
	case 4: pMugong->AddToolTipLine( CHATMGR->GetChatMsg(476), TTTC_MUGONGATTRKIND ); break;
	case 5: pMugong->AddToolTipLine( CHATMGR->GetChatMsg(477), TTTC_MUGONGATTRKIND ); break;
	case 6: pMugong->AddToolTipLine( CHATMGR->GetChatMsg(478), TTTC_MUGONGATTRKIND ); break;
	case 7: pMugong->AddToolTipLine( CHATMGR->GetChatMsg(479), TTTC_MUGONGATTRKIND ); break;
	}

	ITEMMGR->AddItemDescriptionToolTip( pMugong, pCommSkill->GetSkillInfo()->SkillTooltipIdx );
}

void CMugongManager::GetIconImage(WORD ItemIdx, cImage * pLowImage , cImage * pHighImage)
{
	
//	char buff[128];
	CSkillInfo* pSkillInfo = SKILLMGR->GetSkillInfo(ItemIdx);
	if(pSkillInfo == NULL)
	{
//		ASSERT(0);
		return;
	}

	if( pSkillInfo->GetLowImage() != -1 )
	SCRIPTMGR->GetImage( pSkillInfo->GetLowImage(), pLowImage, PFT_MUGONGPATH );
	if( pSkillInfo->GetHighImage() != -1 )
	SCRIPTMGR->GetImage( pSkillInfo->GetHighImage(), pHighImage, PFT_MUGONGPATH );
}
void CMugongManager::DeleteMugongIcon(CMugongBase * mugong)
{	
	if(mugong->GetQuickPosition())
	{
		QUICKMGR->RemQuickItem(mugong->GetQuickPosition());
	}
	m_MugongHash.Remove(mugong->GetDBIdx());
	m_IconIndexCreator.ReleaseIndex(mugong->GetID());
	WINDOWMGR->AddListDestroyWindow( mugong );
}


void CMugongManager::RefreshMugong()
{
	CMugongBase * pMugong = NULL;
	m_MugongHash.SetPositionHead();
	eMUGONG_CANNOT_REASON reason;
	while(pMugong = m_MugongHash.GetData())
	{
		reason = CanUse(pMugong);
		ySWITCH(reason)
			yCASE(eMCUR_Usable)
				pMugong->SetImageRGB( ICONCLR_USABLE );
				pMugong->SetAlpha( ICONALPHA_USABLE );
				pMugong->SetFontColor( ICONTEXT_USABLE );
				pMugong->SetToolTipImageRGB( TTCLR_MUGONG_CANUSE );
			yCASE(eMCUR_SungZero)
				pMugong->SetImageRGB( ICONCLR_DISABLE_BYZEROSUNG );
				pMugong->SetAlpha( ICONALPHA_DISABLE_BYZEROSUNG );
				pMugong->SetFontColor( ICONTEXT_DISABLE_BYZEROSUNG );
				pMugong->SetToolTipImageRGB( TTCLR_MUGONG_CANNOTUSE );
			yCASE(eMCUR_Weapon)
				pMugong->SetImageRGB( ICONCLR_DISABLE );
				pMugong->SetAlpha( ICONALPHA_DISABLE );
				pMugong->SetFontColor( ICONTEXT_DISABLE );
				pMugong->SetToolTipImageRGB( TTCLR_MUGONG_CANNOTUSE );
		yENDSWITCH
		
		SetToolTipIcon( pMugong );
	}
}
CMugongManager::eMUGONG_CANNOT_REASON CMugongManager::CanUse(CMugongBase * pMugong)
{
	//饭骇眉农殿 救窍唱?
	if(pMugong->GetSung() == 0)
		return eMCUR_SungZero;

	if( pMugong->m_pSkillInfo->GetSkillKind() == SKILLKIND_OUTERMUGONG &&
		pMugong->m_pSkillInfo->GetWeaponType() != HERO->GetWeaponEquipType() )
		return eMCUR_Weapon;
	

	return eMCUR_Usable;
}


BOOL CMugongManager::CheckMugongTree(WORD MugongIdx)
{
	CSkillInfo* pInfo = SKILLMGR->GetSkillInfo(MugongIdx);
	if(pInfo == NULL)
		return FALSE;
	
	if(pInfo->GetBeforeSkill())
	{
		CMugongBase* pMugong = GetMugongByMugongIdx(pInfo->GetBeforeSkill());
		
		if(pMugong == NULL)
			return FALSE;
		
		if(pMugong->GetSung() < 1)
			return FALSE;
	}

	return TRUE;
}

int CMugongManager::GetMugongNum()
{
	int count = 0;
	m_MugongHash.SetPositionHead();
	CMugongBase* pMugongBase;
	while(pMugongBase = m_MugongHash.GetData())
	{
		if(pMugongBase->GetSung() > 0)
			++count;
	}
	return count;
}

⌨️ 快捷键说明

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