#ifdef _NA_0_20120321_SKILLTREE_SECOND_RENEWAL #include "uiSkillTree_second.h" #else //------------------------------------------------------------------------------ /** ½ºÅ³UI ¸®´º¾ó @author @since 10.09.03 @remarks - */ #pragma once #include "uiBase.h" #include "uiBaseMan_def.h" #include "SkillSlotContainer.h" #ifdef _NA_20111213_SKILLTREE_VISUAL_RENEWAL2 #include "uiSkillTreeEffect2.h" #else #include "uiSkillTreeEffect.h" #endif class SkillScriptInfo; class SkillSlot; class SkillDataSet; struct SkillInven_s; class uiSkillTree : public uiBase, public SkillSlotContainer { public: enum { kMaxTab = 3, kMaxClass = 5, kMaxColumn = 6, kMaxRow = 6, kMaxSlot = 36, }; // À妽º Áß¿äÇÔ enum eDIALOG_POS { // ½½·Ô kSlotBegin = 0, kSlotEnd = kMaxSlot - 1, // +¹öư kPlusBegin, kPlusEnd = kPlusBegin + (kMaxSlot - 1), // ¼÷·Ã1.2 kTextExt1, kTextExt2, kEscButton, // Åǹöư kTabBein, kTabEnd = kTabBein + (kMaxTab - 1), // ¹è°æÀ̹ÌÁö kImgBegin, kImgEnd = kImgBegin + (kMaxClass - 1), // Àû¿ë, ¸®¼Â ¹öư kButton1,kButton2, // Àû¿ë ¹öư À§ÀÇ ±ôºýÀÓ À̹ÌÁö kButtonBlendImage, // ÀÜ¿© ½ºÅ³Æ÷ÀÎÆ® ¿µ¿ªÀÇ Åõ¸í À̹ÌÁö (ÅøÆÁ¿¡ »ç¿ë) kRemainSkillPoint, kDlgMax, }; uiSkillTree(InterfaceManager* ui_man); virtual ~uiSkillTree(); // UI±âº»(½½·ÔÆ÷ÇÔ) virtual void Init(CDrawBase* draw_base); virtual void Release(); virtual void MessageProc(SI_MESSAGE* message); virtual ItemUnitRenderer* GetItemUnitRender() const { return item_renderer_; } virtual RC::eSLOT_INSERT_RESULT InsertSlot(POSTYPE at_pos, SCSlot& IN slot); virtual BOOL DeleteSlot(POSTYPE at_pos, SCSlot* slot_clone_before_delete); // µ¥ÀÌÅÍ ·Îµå & °»½Å void SetSkillTotalInfo(const SKILL_TOTAL_INFO& skil_Info); void LoadSkillTreeSlot(const SkillInven_s* data); void LoadSkillTreeSlotArrow(const SkillInven_s* data); void UpdateLockState(); void UpdateArrowState(); void RefreshUI(); void Clear(); BOOL IsSkillSlot(SCSkillSlot* slot); protected: VOID ShowDialog( BOOL val ); // override SolarDialog virtual void OnShowWindow( BOOL val ); virtual void OnRenderSolarDialog(); virtual void OnUpdateSolarDialog(); private: SCSlotContainer* GetSlotContainer(); // override uiBase // UI °»½Å void RefreshSkillIcon(); void RefreshBackGround(); void RefreshTab(); void RefreshControlText(); void RefreshPlusButton(); public: void RefreshTree(bool data_clear = true); void RefreshSkillSlot(); void RefreshArrowImage(); private: // ¸¶¿ì½ºÃ³¸® void MouseClickButton(POSTYPE pos); void MouseClickSlot(POSTYPE pos, bool pickup); void OnClickPlusButton(POSTYPE pos); void MouseClickTab(POSTYPE pos); // °»½Å void UpdateMouse(); void UpdateUnitRender(); void RenderSlotImage(); void RenderToolTip(); // ·¹º§¾÷ ÀÌÆåÆ® ¿¬Ãâ void RenderOpenEffect(); // ¾ÆÀÌÅÛ·»´õ·¯ void InitItemRender(); void FlushUnitDraw(); // ÄÁÆ®·Ñ·¯ CControlWZ* getControl(POSTYPE pos); POSTYPE GetControlPos(WzID wzid); bool invalid_control() const { return invalid_control_; } public: uiSkillTreeEffect& GetSkillTreeEffect() { return skill_tree_effect_; } static int GetMaxRowCount() { return kMaxRow; } SkillSlot* GetSkillSlot( int skill_slot_position ); private: uiSkillTreeEffect skill_tree_effect_; ItemUnitRenderer* item_renderer_; bool invalid_control_; int is_mouse_overed_on_button_; int mouse_overed_control_; static WzID wzId_[kDlgMax]; }; //------------------------------------------------------------------------------ /** */ inline POSTYPE uiSkillTree::GetControlPos(WzID wzId) { for (POSTYPE idx = 0; idx < kDlgMax; ++idx) { if (wzId_[idx] == wzId) { return idx; } } return kDlgMax; } //------------------------------------------------------------------------------ /** */ inline CControlWZ* uiSkillTree::getControl(POSTYPE pos) { assert( pos < kDlgMax ); return GetControlWZ( wzId_[pos] ); } #endif //_NA_0_20120321_SKILLTREE_SECOND_RENEWAL