#pragma once #include "uibaseman.h" #include "uiCashItemShopMan\uiCashItemShopDef.h" #include "SocketOptionParser.h" #ifdef _NA004034_20120102_POINT_WALLET_SYSTEM #include "CurrencyInfoParser.h" #endif //_NA004034_20120102_POINT_WALLET_SYSTEM typedef std::set COMPOSE_LIST; struct MATERIAL_COMPOSE_LIST { SLOTCODE m_MeterialItem; COMPOSE_LIST m_ComposeList; }; typedef util::SolarHashTable MATERIAL_COMPOSE_HASH; class SCItemSlot; class PlayerAttributes; class SCPerkSlot; #ifdef _NA_003027_20111013_HONOR_SYSTEM class ShopDialog; #endif //_NA_003027_20111013_HONOR_SYSTEM #ifdef _DH_BATTLEZONE2_ struct BattlezoneMissionTreeInfo; #endif//_DH_BATTLEZONE2_ #ifdef _NA_0_20120321_SKILLTREE_SECOND_RENEWAL struct BASE_SkillTextInfo; #endif #ifdef _NA_008334_20150608_SONNENSCHEIN struct GuildMissionInfo; #endif //_NA_008334_20150608_SONNENSCHEIN class uiToolTipMan : public uiBaseMan { enum TooltipTextures { kTooltipTexture_Start = 0, kTooltipTexture_Socket = kTooltipTexture_Start, // ¼ÒÄÏ ÅØ½ºÃÄ #ifdef _NA_003740_20111122_RANDOM_ITEM kTooltipTexture_RandomItemGrade, #endif//_NA_003740_20111122_RANDOM_ITEM #ifdef _NA_004204_20120131_BATTLE_ZONE_PARTY_OBTAIN kTooltipTexture_PartyObtain, //¸ðµÎºÐ¹è ¾ÆÀÌÄÜ #endif //_NA_004204_20120131_BATTLE_ZONE_PARTY_OBTAIN kTooltipTexture_Handle, // ÇÚµé¿ë ÅØ½ºÃÄ kTooltipTexture_Max, }; enum TooltipTextures_Rectangles { kTexture_Rectangles_Start = 0, kTexture_Rectangle_Socket0 = kTexture_Rectangles_Start, // Socket¹ÌÈ®ÀÎ ÅØ½ºÃÄ [?] kTexture_Rectangle_Socket1, // Socket1°³ ÅØ½ºÃÄ [1S] kTexture_Rectangle_Socket2, // Socket2°³ ÅØ½ºÃÄ [2S] kTexture_Rectangle_Socket3, // Socket3°³ ÅØ½ºÃÄ [3S] kTexture_Rectangle_Socket4, // Socket4°³ ÅØ½ºÃÄ [4S] kTexture_Rectangle_Socket5, // Socket5°³ ÅØ½ºÃÄ [5S] kTexture_Rectangle_SocketEmpty, // Socket ºó ½½·Ô ÅØ½ºÃÄ kTexture_Rectangle_SocketItem, // Socket ¾ÆÀÌÅÛ ÅØ½ºÃÄ #ifdef _NA_003740_20111122_RANDOM_ITEM kTooltipTexture_RandomOptionGradeRactangle0, kTooltipTexture_RandomOptionGradeRactangle1, kTooltipTexture_RandomOptionGradeRactangle2, kTooltipTexture_RandomOptionGradeRactangle3, kTooltipTexture_RandomOptionGradeRactangle4, kTooltipTexture_RandomOptionGradeRactangle5, kTooltipTexture_RandomOptionGradeRactangle6, #endif //_NA_003740_20111122_RANDOM_ITEM #ifdef _NA_004204_20120131_BATTLE_ZONE_PARTY_OBTAIN kTexture_Rectangle_PartyObtain, #endif //_NA_004204_20120131_BATTLE_ZONE_PARTY_OBTAIN kTexture_Rectangles_Max, }; public: uiToolTipMan(InterfaceManager *pUIMan); //! CDialogWZ ¿¡ ÄݹéÀ» ¼ÂÆÃÇϸé //! ÇØ´ç ´ÙÀ̾ó·Î±×ÀÇ ÅøÆÁÀÌ ·£´õ¸µ µÇ´Â ½ÃÁ¡¿¡ ÄݹéÀ¸·Î ³Ñ¾î ¿Â´Ù. static void Callback_Tooltip(CDialogWZ* dialog_ptr, SI_ToolTip* tooltip,int x, int y); //-------------------------------------------------------------------------- // init/release // public: virtual void OnRelease(); virtual void OnInitialize(); virtual void Render(); void RenderTexture(DWORD texture_number, DWORD rectangle_number, FRECT size, FRECT position, DWORD extra_style, WzColor color); void Clear(); void RenderEx( const RECT& baseRect ); const RECT& GetTooltipRect( void ) const { return m_rect; } #ifdef _INTERNATIONAL_DATE_TOOLTIP int GetStringMonth(int nMonth); #endif//_INTERNATIONAL_DATE_TOOLTIP(¿µ¹®³¯Â¥¼ø¼­) //----------------------------------------------------------------------------------------------- // ÅøÆÁ °ü·Ã //----------------------------------------------------------------------------------------------- private: void _registerStyleQuickslotInfoTooltip(const SCSlot *pSlot); void _registerQuickslotInfoTooltip(const SCSlot *pSlot); void _registerItemslotInfoTooltipForQuickInDeactive(const SCSlot *pSlot); void _registerItemslotInfoTooltipForQuick(const SCSlot *pSlot); void _registerItemslotInfoTooltip(const SCSlot *pSlot); void _registerSkillslotInfoTooltip(const SCSlot *pSlot, BOOL bFromQuickSlot); BOOL _registerTooltipFateItem(SCItemSlot * pItemSlot, const BASE_ITEMINFO * pItemInfo, BOOL bBuyPrice, LimitStatCompositeType stat_composite_type = kLimitStatCompositeNormal); void _addPriceTooltip(BOOL buy_price,SCItemSlot* item_slot, const BASE_ITEMINFO* item_info,LimitStatCompositeType composite_type); public: void InitTooltip(); void InitTextures(); void SetTooltipDialogID( DWORD ParentDialogID ) { m_TooltipDialogID = ParentDialogID; } DWORD GetTooltipDialogID() { return m_TooltipDialogID; } void AddEmptyLineForTooltip(int iHeight = 0); void RegisterSlotInfoTooltip(const SCSlot *pSlot); void RegisterHeroItemInfoTooltipFromSlot( const SCSlot* slot ); void RegisterItemslotInfoTooltipForShop(const SCSlot *pSlot, DWORD bRePurchase = SHOP_TYPE_OF_NARMAL); void RegisterChannelInfoTooltip(LPCTSTR pszMessage , int iJoinMemeber_Num ); void RegisterSkillEffectInfoTooltip(SKILL_EFFECT_IMAGE *pImage, BOOL bShowDelStr = FALSE); void RegisterTooltipItemForPackage(LPCTSTR szName, DWORD *dwItemCode); void RegisterTooltipItemForCashShop(CODETYPE itemCode, DWORD dwCoolTime, DWORD64 SellEndDate, BYTE byEnchant = 0, BYTE byRank = 0, bool is_show_date = true); void RegisterTooltipItemForCashShopForLotto(LPCTSTR name, LPCTSTR desc, LPCTSTR caution, DWORD64 end_date, bool is_show_date = true); void RegisterTooltipItem(const SCSlot *pSlot, BOOL bBuyPrice, LimitStatCompositeType stat_composite_type = kLimitStatCompositeNormal); // °³´ç°¡°Ý ÅøÆÁÃâ·Â void RegisterTooltipVendorItemUnitPrice(SCSlot* Item_Slot); void RegisterTooltipSkill(SkillScriptInfo* curSkillInfo, SkillScriptInfo* nextSkillInfo=NULL, bool isActivated=true); //void RegisterTooltipStyle(BASE_STYLEINFO* curStyleInfo, // BASE_STYLEINFO* nextStyleInfo=NULL, // bool isActivated=true); void RegisterTooltipSkillEtc(SkillScriptInfo* pSkillInfo); void RegisterTooltipWithStringCode(int iStringCode); void RegisterTooltipFormat(TCHAR* format, int base_value, int over_value); #ifdef _NA_008472_20150903_IMPROVED_BALANCE void RegisterTooltipFormat(TCHAR* format, float base_value, float over_value); #endif // _NA_008472_20150903_IMPROVED_BALANCE void RegisterTooltipWithStringCodeByProcessWordWrap( int iStringCode, int size = 200 ); void RegisterTooltipForWareNInventoryLock( int iStringCode); void RegisterTooltipSimpleText(TCHAR* pszString); void SetTooltipTestMode(BOOL bTest) { m_bTooltipTestMode = bTest; } void RegisterTooltip(const cTooltipInfo& tooltipInfo); int RegisterTooltip(LPCTSTR szText, int iBufSize=-1, int yInterval=20, WzID fontID=StrToWzID("m212"), WzColor color = WzColor_RGBA(255, 255, 255, 255), WzColor shadowColor=TOOLTIP_BG_WZCOLOR, DWORD dwTooltipExtraStyle = 1, DWORD eSpecialTooltip = eSPECIAL_TOOLTIP_NONE, DWORD dwIconCode = 0 ); void RegisterTooltipLineChange(LPCTSTR szText, int iBufSize, int yInterval=20, WzID fontID=StrToWzID("m212"), WzColor color=TOOLTIP_FONT_WZCOLOR, WzColor shadowColor=TOOLTIP_BG_WZCOLOR, DWORD dwTooltipExtraStyle = 0); void RegisterTiredSystemToolTip(int iTime); void RegisterChaoSystemToolTip(int iTime,BOOL bChao); void RegisterTooltip_ItemStatChange(const BASE_ITEMINFO* pItemInfo, SCSlot *pSlot); void RegisterTooltip_Reward(const BASE_ITEMINFO* pItemInfo); void RegisterPandoraItemName(SCItemSlot* pItemSlot); void RegisterPersonalWaypoint(int bEnable); void RegisterTooltipMapName(CCtrlStaticWZ* pControl, TCHAR* pszMapName); void RegisterTooltipPerkInfo(const SCPerkSlot* perk_slot, const POSTYPE slot_position); void RegisterTooltipSocketOption(ZardOptionInfo::ItemOptionCode item_option_code); void RegisterTooltipCrystalization(SCItemSlot* item_lsot_ptr); #ifdef _DH_BATTLEZONE2_ void RegisterTooltipBattlezoneMap(const BattlezoneMissionTreeInfo* mission_info); #endif//_DH_BATTLEZONE2_ #ifdef _NA004034_20120102_POINT_WALLET_SYSTEM void RegisterTooltipCurrencyDescription(const CurrencyInfoParser::CurrencyInfo* currency_info); #endif //_NA004034_20120102_POINT_WALLET_SYSTEM #ifdef _NA_008334_20150608_SONNENSCHEIN void RegisterTooltipGuildMissionTree(const GuildMissionInfo* mission_info); #endif//_NA_008334_20150608_SONNENSCHEIN #ifdef _NA_008543_20151027_ONE_DAYS_GUILD_MISSION void RegisterTooltipGuildMissionTree_OneDayMission(const GuildMissionInfo* mission_info, DWORD end_time, BYTE event_state); #endif//_NA_008543_20151027_ONE_DAYS_GUILD_MISSION //void RenderSpecialTooltipTexture4RandomItem(RECT rc); void RenderSpecialTooltipTexture4LuckyItem(RECT rc); private: int RegisterTooltipImage(DWORD texture_number, DWORD rectangle_number, float width, float height, DWORD extra_style, float x = 0.0f, float y = 0.0f, WzColor color = WzColor_RGBA(0,0,0,0)); private: // ÅøÆÁ¿ë ³»ºÎÇÔ¼ö / ÀÌ»ó »óÅ ¹öÇÁ BOOL _isEnableShowTooltip(); void _addChargeItemCoordinateExForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); void _addWaypointItemTooltip(); BOOL _isEnableShowBuffTooltip(SKILL_EFFECT_IMAGE *pImage); void _addBuffNameForTooltip(BASE_STATEINFO* pStateInfo); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE void _addBuffNameForTooltip(BASE_STATEINFO* pStateInfo, SKILL_EFFECT_IMAGE* pImage); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE void _addBuffDescForTooltip(BASE_STATEINFO* pStateInfo, SKILL_EFFECT_IMAGE *pImage, BOOL bShowDelStr); void _addBuffRemainTimeForTooltip(BASE_STATEINFO* pStateInfo, SKILL_EFFECT_IMAGE *pImage); int _getBuffDescType(DWORD dwStatusID); // ÅøÆÁ¿ë ³»ºÎÇÔ¼ö / ½ºÅ¸ÀÏ void _addStyleNameForTooltip(BASE_STYLEINFO* pStyleInfo); void _addStyleLevelForTooltip(BASE_STYLEINFO* pStyleInfo, BOOL bActivated); void _addStyleCurLevelForTooltip(BASE_STYLEINFO* pStyleInfo, BOOL bActivated); void _addStyleNextLevelForTooltip(BASE_STYLEINFO* pStyleInfo, BOOL bActivated); void _addSyleNeedsForTooltip(BASE_STYLEINFO* pStyleInfo, BOOL bActivated); void _addStyleLimitWeaponForTooltip(BASE_STYLEINFO* pStyleInfo, BOOL bActivated, BOOL bQuickSlot); void _addStyleDescForTooltip(BASE_STYLEINFO* pStyleInfo, BOOL bActivated); void _setStyleCurLevInfoForTooltip(BASE_STYLEINFO* pStyleInfo, BOOL bActivated); void _setStyleNextLevInfoForTooltip(BASE_STYLEINFO* pStyleInfo, BOOL bActivated); // ÅøÆÁ¿ë ³»ºÎÇÔ¼ö / ½ºÅ³ void _addSkillNameForTooltip(SkillScriptInfo* pSkillInfo); void _addSkillTypeForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _addSkillLevelForTooltip(SkillScriptInfo* pSkillInfo); void _addSkillRemainCoolTimeForTooltip(SkillScriptInfo* pSkillInfo); void _addSkillDescForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _addSkillNormalDescForTooltip(SkillScriptInfo* pSkillInfo); void _addSkillCurLevelForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _addSkillNextLevelForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _addChangeUpSkillTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _addSkillNeedsForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated, BOOL bNextSkill = TRUE); void _addSkillLimitWeaponForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated, BOOL bQuickSlot); void _addSkillCastingTimeForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _addSkillCoolTimeForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _addSkillDistanceForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _addSkillSpendForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE void _addSkillFPSpendForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE //void _addSkillDamageForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _addSkillEffectForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _setSkillBaseInfoForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated, BOOL bQuickSlot); void _setSkillCurLevInfoForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); void _setSkillNextLevInfoForTooltip(SkillScriptInfo* pSkillInfo, BOOL bActivated); // ÅøÆÁ¿ë ³»ºÎÇÔ¼ö / ¾ÆÀÌÅÛ BOOL _isEnableShowItemTooltip(const SCSlot *pSlot); BOOL _isEnableItemEnchant(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); BOOL _isEnableItemSocket(const BASE_ITEMINFO *pItemInfo); BOOL _isEnableItemType(const BASE_ITEMINFO *pItemInfo); BOOL _isEnableItemEquipClass(const BASE_ITEMINFO *pItemInfo); BOOL _isEnableItemDurability(const BASE_ITEMINFO *pItemInfo); BOOL _isEnableItemOption(const BASE_ITEMINFO *pItemInfo); void _addItemPetForToolTip(SCItemSlot * pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemPetFeedForToolTip(SCItemSlot * pItemSlot, const BASE_ITEMINFO *pItemInfo); BOOL _isEnableItemPet(const BASE_ITEMINFO *pItemInfo); void _addItemPetBaseOpForTooltip( const BASE_ITEMINFO *pItemInfo,BOOL bCashShop); void _addItemPetAddForTooltip( const BASE_ITEMINFO *pItemInfo,BOOL bCashShop,BYTE bGrade=0); #ifdef __CN_PET_OPTION_APPLY_FLAG void _addItemPetAddOption(const BASE_ITEMINFO *pItemInfo,BOOL bCashShop,int iIntimacy=0); #endif//__CN_PET_OPTION_APPLY_FLAG(ÆêÃß°¡¿É¼Ç´©Àû) void _addItemLottoItemInfoTooltip( SCItemSlot * pItemSlot, const BASE_ITEMINFO *pItemInfo); void _UpperSkillEnableTooltip(SkillScriptInfo* skill_info); BOOL _isEnableChargeItemDesc(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemRiderSetOptionForTooltip(const BASE_ITEMINFO* pItemInfo); void _addItemRiderWaxLevel(SCItemSlot* pItemSlot); bool _addItemCustomizingTooltip(SCItemSlot* slot_item, const BASE_ITEMINFO* item_info); void _addItemSetOptionForTooltip(const BASE_ITEMINFO* pItemInfo); void _addItemFullSetPlusOptionForTooltip(const BASE_ITEMINFO* pItemInfo); DWORD _getItemNameRGB(const char* szNumber); void _addItemNameForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo, BYTE byEnchant = 0, BOOL bRenderIcon = FALSE); #ifdef _NA_008121_20150311_EQUIPMENT_AWAKENING_SYSTEM void _addItemAwakeningForTooltip(SCItemSlot* item_slot, const BASE_ITEMINFO* item_info); #endif // _NA_008121_20150311_EQUIPMENT_AWAKENING_SYSTEM void _addFateItemRankForTooltip(SCItemSlot * pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemTypeForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemLimitLevelForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); bool _addItemEquipClassForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemPhyAttackSpeedForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemLimitedItemRepairCountForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemPhyAttRateForTooltip(SCItemSlot* item_slot, const BASE_ITEMINFO* item_info); void _addItemPhyAttAvoidForTooltip(SCItemSlot* item_slot, const BASE_ITEMINFO* item_info); void _addItemEtherEmissionDevice(SCItemSlot * pItemSlot, const BASE_ITEMINFO * pItemInfo); void _addSkillEtherBulletUseInfoTooltip(SkillScriptInfo* curSkillInfo); void _addItemNextGradeLimitLevelForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemPhyAttackPowerForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemMagicAttackPowerForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemPhyDefenseForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemMagicDefenseForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); void _addItemDurabilityForTooltip(SCItemSlot* pItemSlot,const BASE_ITEMINFO *pItemInfo); void _addItemLimitInfoForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); BOOL _addItemLimitStrInfoForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo, PlayerAttributes *pCharInfo, LimitStatCompositeType stat_composite_type = kLimitStatCompositeNormal, PlayerAttributes* simulation_player_attributes = NULL); BOOL _addItemLimitDexInfoForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo, PlayerAttributes *pCharInfo, LimitStatCompositeType stat_composite_type = kLimitStatCompositeNormal, PlayerAttributes* simulation_player_attributes = NULL); BOOL _addItemLimitIntInfoForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo, PlayerAttributes *pCharInfo, LimitStatCompositeType stat_composite_type = kLimitStatCompositeNormal, PlayerAttributes* simulation_player_attributes = NULL); BOOL _addItemLimitVitInfoForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo, PlayerAttributes *pCharInfo, LimitStatCompositeType stat_composite_type = kLimitStatCompositeNormal, PlayerAttributes* simulation_player_attributes = NULL); BOOL _addItemLimitSprInfoForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo, PlayerAttributes *pCharInfo, LimitStatCompositeType stat_composite_type = kLimitStatCompositeNormal, PlayerAttributes* simulation_player_attributes = NULL); BOOL _addItemLimitSkillInfoForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo, PlayerAttributes *pCharInfo, LimitStatCompositeType stat_composite_type = kLimitStatCompositeNormal); void _addItemNextGradeLimitInfoForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo, LimitStatCompositeType stat_composite_type); void _addItemOptionInfoForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); BOOL _addItemAccOptionForTooltip(SCItemSlot* pItemSlot, const WORD* iOptionKind, const int* iOption, const BYTE* iType, BOOL bPCBang = FALSE, const BYTE* btOptionExEffect = NULL, const BYTE* btOptionExEffect_PCBang = NULL); BOOL _addItemNativeOptionForTooltip(SCItemSlot* pItemSlot, const WORD* iOptionKind, const int* iOption, const BYTE* iType, BOOL bPCBang = FALSE, const BYTE* btOptionExEffect = NULL, const BYTE* btOptionExEffect_PCBang = NULL); void _addPoralItemDescForTooltip(SCItemSlot* pItemSlot, CODETYPE MapCode); void _addItemDescForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); void _addItemEtherChargingForToolTip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); void _addItemAdmissionTimeForToolTip(const BASE_ITEMINFO* pItemInfo); void _addChargeItemDescForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); void _addChargeItemDateForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); void _addChargeItemDateFixedAmoutForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); void _addChargeItemDateFixedEXAmoutForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); void _addChargeItemDateFixedEX2AmoutForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); void _addChargeItemDateFixedQUANTITYAmoutForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); void _addChargeItemDateFixedExpiredTimeForTooltip(void); void _addChargeItemDateFixedWaitItemTimeForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); void _addChargeItemInfoForToolTipInCashShop(const BASE_ITEMINFO* pItemInfo, DWORD dwCoolTime, DWORD64 SellEndDate); bool _addChargeItemInfoForToolTip(const BASE_ITEMINFO* pItemInfo); void _addItemTradeInfoForTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); //------------------------------------------------------------------------------ void _GetTradeInfoString(TCHAR* trade_info_string, SCItemSlot* slot_item, const BASE_ITEMINFO* item_info, bool is_customizing_item = false); WzColor _GetSimulationLimitedInfoColor(eATTR_TYPE attr_type, SCItemSlot* item_slot, PlayerAttributes* player_attributes, WORD limit_item_value, WORD limit_value, WzColor default_text_color); void _addFateItemDescriptionForTooltip(); #ifdef _NA000424_GLOBAL_CASH_ITEM_RENEWAL_ void _addItemCashTypeTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO* pItemInfo); #endif//_NA000424_GLOBAL_CASH_ITEM_RENEWAL_ void _addItemLimitInfoForTooltipMakeStr(SCItemSlot* pItemSlot, int eStringIndex, const char* wStat1, WzColor Color1); void _addItemLimitInfoForTooltipMakeStr(SCItemSlot* pItemSlot, int eStringIndex, DWORD wStat1, WzColor Color1); void _addItemLimitInfoForTooltipMakeStr(SCItemSlot* pItemSlot, int eStringIndex, DWORD wStat1, WzColor Color1, char *divstr, DWORD wStat2, WzColor Color2); void _addItemLimitInfoForTooltipMakeStr(SCItemSlot* pItemSlot, int eStringIndex, float wStat1, WzColor Color1, char *divstr, DWORD wStat2, WzColor Color2); void _addItemPriceForTooltip(SCItemSlot* pItemSlot,const BASE_ITEMINFO *pItemInfo, BOOL bBuyPrice = TRUE, LimitStatCompositeType prpurchase = kLimitStatCompositeNormal); #ifdef _NA_002935_20110704_ITEM_SCORE void _addItemScoreForTooltip(SCItemSlot* item_slot, LimitStatCompositeType limitstat_composite_type); #endif //_NA_002935_20110704_ITEM_SCORE #ifdef _NA_003027_20111013_HONOR_SYSTEM void _addItemHonorRatingForPrice(SCItemSlot* pItemSlot,const BASE_ITEMINFO *pItemInfo, ShopDialog* shop_dialog, LimitStatCompositeType prpurchase); #endif //_NA_003027_20111013_HONOR_SYSTEM float _getLimitItemDura(float maxDura); BOOL _IsexceptionPercentageType( int OptionKind); void CalcSize( SIZE& size ); void RecalcRect( int x, int y, const SIZE& size, BOOL drawBkgnd ); void RecalcRectFromBase( const RECT& baseRect, const SIZE& size ); void RenderTooltip(int x, int y, BOOL drawBkgnd = TRUE ); void RenderTooltipEx(const RECT& baseRect, BOOL drawBkgnd = TRUE ); void DrawTooltip( BOOL drawBkgnd ); int ConvertOptValForSpecialCase( int optKind,int opType, int val ); void _addIPosessionItemTooltip(SCItemSlot* pItemSlot, const BASE_ITEMINFO *pItemInfo); private: void _ListUpComposeList(); void _addItemComposeList(const BASE_ITEMINFO* pItemInfo); private: static MATERIAL_COMPOSE_HASH* m_pMaterialComposeHash; private: void LoadTextureExpGauge(); void RenderSpecialTooltipTexture4ExpGauge(RECT* drawRect, float exp_percentage); void RegisterTooltipPerkOptionDesc(int desc_code, int width = 250); void RegisterTooltipPerkBenefitOption(const PerkInfo* perk_info); void RegisterTooltipPerkPenaltyOption(const PerkInfo* perk_info); void _addPerkCashItemOption(const BASE_ITEMINFO* item_info); private: void RenderIconOnTooltip(DWORD dwIconCode, float x, float y); public: void RegisterTooltipItem_OnText(const BASE_ITEMINFO* pItemInfo); void RegisterTooltipNPC_OnText(BASE_NPCINFO* pNPCInfo); private: DWORD m_TooltipDialogID; cTooltipInfo m_Tooltips[MAX_SLOTINFO_LINE]; int m_iTooltipCounts; BOOL m_bTooltipTestMode; // ÅøÆÁ Å×½ºÆ®¿ë..(Å×½ºÆ® ¾À¿¡¼­ »ç¿ë) TCHAR m_szSlotInfoMessage[MAX_SLOTINFO_LINE][MAX_SLOTINFO_LENGTH]; HANDLE m_hSpecialTooltipTexture4LuckyItem[4]; HANDLE m_hSpecialTooltipTextureRandomItem; RECT m_rect; WzColor m_PossessionItemColor; DWORD m_dwIconCode; HANDLE m_hIconOnTooltip; HANDLE m_hExpGaugeTexture; HANDLE m_hTooltipTexture[kTooltipTexture_Max]; FRECT m_TooltipTextureRectAngles[kTexture_Rectangles_Max]; #ifdef _NA_0_20120321_SKILLTREE_SECOND_RENEWAL BOOL IsUseSkillPowerAbillity( BASE_SkillTextInfo* skill_text_info, int abillity_index ); #endif //_NA_0_20120321_SKILLTREE_SECOND_RENEWAL };