#include "stdafx.h" #include "SUILazyTooltip.h" #include "SUIDisplayInfo.h" #include "SkillBase.h" #include "SkillBaseFile.h" /// 2010.12.17 - prodongi #include "Skill\\SUISkillWnd.h" /// 2010.12.02 - prodongi #include "Skill\\SUISkillTreeFundWnd.h" /// 2010.12.02 - prodongi #include "SStringDB.h" #include "SSkillDB.h" using namespace rp; // // KLazySkillTooltip // KLazySkillTooltip::KLazySkillTooltip( SUIDisplayInfo& helper , int skillId , int skillLv , bool showDetail ) : KLazyTip() , m_Helper ( helper ) , m_SkillID ( skillId ) , m_SkillLv ( skillLv ) , m_ShowDetail ( showDetail ) { } void KLazySkillTooltip::createTip( std::string& tip ) { tip = m_Helper.GetSkillTooltipText( m_SkillID, m_SkillLv, m_ShowDetail, false ); } // // KLazyCreatureSkillFundTooltip // KLazyCreatureSkillFundTooltip::KLazyCreatureSkillFundTooltip( SUIDisplayInfo& helper , const SkillTreeEx* skillTree , bool isPrecedentSkillSatisfied , bool isActive , int skillId , int skillLv , bool showDetail ) : KLazyTip() , m_Helper ( helper ) , m_SkillTree ( skillTree ) , m_IsPrecedentSkillSatisfied( isPrecedentSkillSatisfied ) , m_IsActive ( isActive ) , m_SkillID ( skillId ) , m_SkillLv ( skillLv ) , m_ShowDetail ( showDetail ) { } void KLazyCreatureSkillFundTooltip::createTip( std::string& tip ) { tip = m_Helper.GetSkillTooltipText( m_SkillID, m_SkillLv, m_ShowDetail, true, true ); if( !m_IsPrecedentSkillSatisfied ) { if( m_IsActive ) { // 엑티브 스킬과 패시브 스킬의 툴팁에 끝부분의 여백이 다르다... -_-; tip += "
"; } tip += m_Helper.GetSkillTreeToolTipText( m_SkillTree, true ); } } // // KLazyCreatureSkillTooltip // KLazyCreatureSkillTooltip::KLazyCreatureSkillTooltip( SUIDisplayInfo& helper , int skillId , int skillLv , bool showDetail ) : KLazyTip() , m_Helper ( helper ) , m_SkillID ( skillId ) , m_SkillLv ( skillLv ) , m_ShowDetail ( showDetail ) { } void KLazyCreatureSkillTooltip::createTip( std::string& tip ) { tip = m_Helper.GetSkillTooltipText( m_SkillID, m_SkillLv, m_ShowDetail, false, true ); } // // KLazyItemTooltip // /// 2011.03.28 - prodongi KLazyItemTooltip::KLazyItemTooltip( SUIDisplayInfo& helper , SInventorySlot* invenSlot , bool showDetail , AR_HANDLE hCreature , bool isRClick ) : KLazyTip() , m_Helper ( helper ) , m_InvenSlot ( invenSlot ) , m_ShowDetail ( showDetail ) , m_hCreature ( hCreature ) , m_isRClick ( isRClick ) { } void KLazyItemTooltip::createTip( std::string& tip ) { tip = m_Helper.GetItemTooltipText( m_InvenSlot, m_ShowDetail, m_hCreature, m_isRClick ); /// 2011.03.28 - prodongi } // // KLazySkillTreeFundTooltip // KLazySkillTreeFundTooltip::KLazySkillTreeFundTooltip( SUIDisplayInfo& helper , const SkillBaseEx& skillInfo , const _SkillSlotInfo& skillSlotInfo , int jobIndex /// 2011.03.09 - prodongi , __int64 jobPoint, int tp, int characterLevel ) : KLazyTip() , m_Helper ( helper ) , m_SkillInfo ( skillInfo ) , m_SkillSlotInfo ( skillSlotInfo ) , m_JobIndex ( jobIndex ) , m_JobPoint ( jobPoint ) { /// 2011.03.09 - prodongi m_tp = tp; m_characterLevel = characterLevel; } void KLazySkillTreeFundTooltip::createTip( std::string& tip ) { if( m_SkillSlotInfo.nCrrLv >= m_SkillSlotInfo.nMaxLv[m_JobIndex] ) { tip = CStringUtil::StringFormat("<#00FF84>%s
", S(7048)); } else { /// 2011.03.10 - prodongi int NeedJp = m_SkillInfo.GetNeedJopPoint( m_SkillSlotInfo.nCrrLv + 1 ); bool isTrait = (NeedJp < 0) ? true : false; int NeedTP = isTrait ? abs(NeedJp) : 0; if( m_SkillSlotInfo.nEnoughJLv ) {//"잡레벨 #@job_level@#에 배울 수 있습니다." tip += "<#EE0000>"; tip += S(7045); CStringUtil::ReplacePhrase( tip, "#@job_level@#", CStringUtil::StringFormat("%d",m_SkillSlotInfo.nEnoughJLv).c_str() ); tip += "
"; } if (isTrait) { if (m_tp < NeedTP) { tip += "<#EE0000>"; tip += S(8032); CStringUtil::ReplacePhrase( tip, "#@spe_point@#", CStringUtil::StringFormat("%d",NeedTP).c_str() ); tip += "
"; } } else { if( m_JobPoint < NeedJp ) {//"잡포인트 #@job_point@#가 필요합니다." tip += "<#EE0000>"; tip += S(7046); CStringUtil::ReplacePhrase( tip, "#@job_point@#", CStringUtil::StringFormat("%d",NeedJp).c_str() ); tip += "
"; } } if( m_SkillSlotInfo.nNeedSkillID ) { SkillBaseEx* s_need_data = GetSkillDB().GetSkillData( m_SkillSlotInfo.nNeedSkillID ); if( s_need_data ) {//"#@skill_name@# #@skill_level@#이 필요합니다." tip += "<#EE0000>"; std::string strSkillName = GetStringDB().GetString(s_need_data->GetNameID()); tip += SR(7047, "#@skill_name@#", strSkillName.c_str(), "#@skill_level@#", CStringUtil::StringFormat("%d",m_SkillSlotInfo.nNeedSkillLv).c_str()); tip += "
"; } } if( tip.empty() ) { tip += "<#00FFFC>"; if (isTrait) { tip += S(8032); CStringUtil::ReplacePhrase( tip, "#@spe_point@#", CStringUtil::StringFormat("%d",NeedTP).c_str() ); } else { tip += S(7046); CStringUtil::ReplacePhrase( tip, "#@job_point@#", CStringUtil::StringFormat("%d",NeedJp).c_str() ); } tip += "
"; } /// 2011.04.05 레벨 - prodongi setCharacterLevel(tip); } if( !tip.empty() ) tip += "
"; int nLv = 0; bool bShowNext = true; if( m_SkillSlotInfo.nCrrLv == 0 ) { nLv = m_SkillSlotInfo.nCrrLv + 1; bShowNext = false; } else if( m_SkillSlotInfo.nCrrLv < m_SkillSlotInfo.nMaxLv[ m_JobIndex ] ) { nLv = m_SkillSlotInfo.nCrrLv; bShowNext = true; } else { nLv = m_SkillSlotInfo.nCrrLv; bShowNext = false; } tip += m_Helper.GetSkillTooltipText( m_SkillInfo.GetID(), nLv, true, bShowNext ); } /// 2011.04.05 레벨 - prodongi void KLazySkillTreeFundTooltip::setCharacterLevel(std::string &tip) { if (0 == m_SkillSlotInfo.lv) return ; tip += ""; if (m_characterLevel >= m_SkillSlotInfo.lv) tip += "<#00FFFC>"; else tip += "<#EE0000>"; tip += CStringUtil::StringFormat("%s : %d", S(8109), m_SkillSlotInfo.lv); tip += "
"; }