#ifndef _uiAutobotConditionBattle_h_ #define _uiAutobotConditionBattle_h_ #if _MSC_VER > 1000 #pragma once #endif #ifdef _YMS_AUTOBOT_GAME #include "uiAutobotDialog.h" #include "SCItemSlotContainer.h" #include "QuickSlotContainer.h" #include "Mouse.h" struct BASE_AutomaticComboInfo; class cInputEditControlContainer { private: class cInputEditControl { public: CCtrlDxEditBox* m_pEdit; CCtrlStaticWZ* m_pText; cInputEditControl( CCtrlDxEditBox* pEdit, CCtrlStaticWZ* pText ) { m_pEdit = pEdit; m_pText = pText; } }; CDialogWZ* m_pDialog; std::vector m_EditControlArray; protected: cInputEditControlContainer(){} virtual CDialogWZ* GetDialog() PURE; bool ReleaseInputMode() { for( size_t i=0;i!=m_EditControlArray.size();++i) { if( IsInputMode(i) == true ) { CHAR buffer[INTERFACE_STRING_LENGTH]; m_EditControlArray[i]->m_pEdit->GetTextWZA( buffer, INTERFACE_STRING_LENGTH ); m_EditControlArray[i]->m_pText->SetTextWZA( buffer, false ); m_EditControlArray[i]->m_pEdit->ShowWindowWZ(WZ_HIDE); m_EditControlArray[i]->m_pText->ShowWindowWZ(WZ_SHOW); return true; } } return false; } void SetInputMode( size_t index ) { for( size_t i=0;i!=m_EditControlArray.size();++i) { if( index == i ) { CHAR buffer[INTERFACE_STRING_LENGTH]; m_EditControlArray[i]->m_pText->GetTextWZA( buffer, INTERFACE_STRING_LENGTH ); m_EditControlArray[i]->m_pEdit->SetTextWZA( buffer, false ); m_EditControlArray[i]->m_pEdit->ShowWindowWZ(WZ_SHOW); m_EditControlArray[i]->m_pText->ShowWindowWZ(WZ_HIDE); GetDialog()->RequestFocus(m_EditControlArray[i]->m_pEdit); break; } } } bool IsInputMode( size_t index ) { if( index >= m_EditControlArray.size() ) return false; return m_EditControlArray[index]->m_pEdit->GetState() != WZ_HIDE; } bool ProcessEditControlMessage(SI_MESSAGE* message ) { if( message->eResultMsg == RT_MSG_LBUTTONCLICK ) { for (size_t i=0;i!=m_EditControlArray.size();++i) { CCtrlDxEditBox* pEdit = m_EditControlArray[i]->m_pEdit; RECT rect = pEdit->GetSizeRect(); int mouse_x = Mouse::Instance()->GetMouseX(); int mouse_y = Mouse::Instance()->GetMouseY(); if (mouse_x > rect.left && mouse_x < rect.right && mouse_y > rect.top && mouse_y < rect.bottom) { if( IsInputMode(i) == false ) { ReleaseInputMode(); SetInputMode(i); return true; } else { return true; } } } if( ReleaseInputMode() == true ) return true; return false; } return false; } void RegisterEditControl( CCtrlDxEditBox* pEdit, CCtrlStaticWZ* pText ) { m_EditControlArray.push_back(new cInputEditControl(pEdit, pText)); } size_t GetEditCount() { return m_EditControlArray.size(); } CCtrlDxEditBox* GetEditControlWZ( size_t index ) { if( index >= m_EditControlArray.size() ) return NULL; return m_EditControlArray[index]->m_pEdit; } void SetEditText( size_t index, int number ) { static CHAR buffer[INTERFACE_STRING_LENGTH]; wsprintf(buffer, "%d", number ); SetEditText( index, buffer ); } void SetEditText( size_t index, const std::string& text ) { if( index >= m_EditControlArray.size() ) return; m_EditControlArray[index]->m_pText->SetTextWZA(text.c_str(), false ); } std::string GetEditText( size_t index ) { static CHAR buffer[INTERFACE_STRING_LENGTH]; GetEditText(index, buffer, INTERFACE_STRING_LENGTH); return buffer; } void GetEditText( size_t index, LPTSTR buffer, DWORD bufferlength ) { if( index >= m_EditControlArray.size() ) return; m_EditControlArray[index]->m_pText->GetTextWZA( buffer, bufferlength); } void InitEditStateViewState() { for( size_t i=0;i!=m_EditControlArray.size();++i) { m_EditControlArray[i]->m_pEdit->ShowWindowWZ(WZ_HIDE); m_EditControlArray[i]->m_pText->ShowWindowWZ(WZ_SHOW); } } }; //------------------------------------------------------------------------------ class uiAutobotConditionBattle : public QuickSlotContainer, public uiAutobotDialog , public cInputEditControlContainer { friend class uiAutobotMan; enum UIControlPos { kControl_CheckBT_C001 = 0, kControl_CheckBT_C005, kControl_CheckBT_C006, kControl_CheckBT_C007, kControl_CheckBT_C009, kControl_CheckBT_C010, kControl_CheckBT_C011, kControl_CheckBT_C012, kControl_CheckBT_C013, kControl_CheckBT_C014, kControl_CheckBT_C015, kControl_CheckBT_C016, kControl_CheckBT_C017, kControl_CheckBT_C018, kControl_CheckBT_C024, kControl_CheckBT_C025, kControl_CheckBT_C026, kControl_CheckBT_C027, kControl_CheckBT_C030, kControl_CheckBT_C000, kControl_Button_B000, kControl_Button_B999, kControl_Button_B003, kControl_Button_B004, kControl_Button_B005, kControl_Button_B006, kControl_Button_B007, kControl_Button_B008, kControl_Button_B009, kControl_Button_B010, kControl_Button_B011, kControl_Button_B013, kControl_Button_B012, kControl_Button_B015, kControl_Button_B014, kControl_Button_B016, kControl_Button_B017, kControl_Button_B018, kControl_Button_B019, kControl_Button_B020, kControl_Button_B021, kControl_Button_B022, kControl_Button_B023, kControl_Button_B024, kControl_Button_B025, kControl_Button_B026, kControl_Button_B027, kControl_Button_B028, kControl_Button_B029, kControl_Button_B030, kControl_Button_B031, kControl_Button_B032, kControl_Button_B033, kControl_Text_T101, kControl_Text_T999, kControl_Text_T006, kControl_Text_S000, kControl_Text_S001, kControl_Text_S002, kControl_Text_S003, kControl_Text_S004, kControl_Text_S010, kControl_Text_S005, kControl_Text_S006, kControl_Text_S007, kControl_Text_S008, kControl_Text_S009, kControl_Text_S012, kControl_Text_S019, kControl_Text_S020, kControl_Text_S021, kControl_Text_S022, kControl_Text_S025, kControl_Text_S026, kControl_Text_S035, //!< hpȸ Ա kControl_Text_S047, //!< mp/spȸ Ա kControl_Text_S048, //!< ȸ kControl_Text_S049, //!< Ա kControl_Text_S050, //!< ޽ ɱ(hp) kControl_Text_S051, //!< ޽ ɱ(mp) kControl_Text_S011, kControl_Text_S013, kControl_Text_S014, kControl_Text_S015, kControl_Text_S016, kControl_Text_S017, kControl_Text_S018, kControl_Text_S023, kControl_Text_S024, kControl_Text_S027, kControl_Text_S028, kControl_Text_S029, kControl_Text_S030, kControl_Text_S031, kControl_Text_S032, kControl_Text_T021, kControl_Text_S036, kControl_Text_S037, kControl_Text_S038, kControl_Text_S039, kControl_Text_S040, kControl_Text_S041, kControl_Text_S042, kControl_Text_S043, kControl_Text_S044, kControl_Text_S045, kControl_Text_S046, kControl_Text_S034, //!< kControl_Text_S033, //!< Ƽ kControl_Edit_E000, // Ÿ Է¿ Ʈڽ kControl_Edit_E001, kControl_Edit_E003, kControl_Edit_E002, kControl_Edit_E004, kControl_Edit_E005, kControl_Edit_E006, kControl_Edit_E007, kControl_Edit_E008, kControl_Edit_E009, kControl_Edit_E010, kControl_Edit_E011, kControl_List_L000, //! ޽ ɱ(hp) kControl_List_L001, //! ȸ(ȸ) kControl_List_L002, //! ȸ(hp ) kControl_List_L003, //! ޽ ɱ(mp) kControl_List_L004, //! ȸ() kControl_List_L005, //! ȸ(mp ) kControl_List_L006, //! kControl_List_L007, //! Ƽ kControl_Picture_P013, //!< kControl_Picture_P015, kControl_Picture_P017, kControl_Picture_P018, kControl_Picture_P019, kControl_Picture_P020, kControl_Picture_P021, kControl_Picture_P000, kControl_Picture_P001, kControl_Picture_P002, kControl_Picture_P003, kControl_Picture_P004, kControl_Picture_P005, kControl_Picture_P006, kControl_Picture_P007, kControl_Picture_P008, kControl_Picture_P009, kControl_Picture_P010, kControl_Picture_P011, kControl_Picture_P012, kControl_Picture_P023, kControl_Picture_P024, kControl_Picture_P025, kControl_Picture_P026, kControl_Picture_P027, kControl_Picture_P028, kControl_Picture_P029, kControl_Picture_P014, kControl_Picture_P022, kControl_Picture_P030, kControl_Picture_P031, kControl_Picture_P043, kControl_Picture_P042, kControl_Picture_P041, kControl_Picture_P040, kControl_Picture_P039, kControl_Picture_P038, kControl_Picture_P037, kControl_Picture_P036, kControl_Picture_P035, kControl_Picture_P034, kControl_Picture_P033, kControl_Picture_P032, kControl_Picture_PI04, //!< ر ޽ hp kControl_Picture_P044, //!< ȸ Ա kControl_Picture_P045, //!< hp ȸ Ա kControl_Picture_P046, //!< ر ޽ mp kControl_Picture_P047, //!< kControl_Picture_P048, //!< mp ȸ Ա kControl_Picture_P050, kControl_Picture_P052, //!< ɹ kControl_Picture_P053, //!< Ƽ kControl_Picture_P016, //!< ׷(disable) kControl_Picture_P049, kControl_Picture_P051, kControl_Picture_P054, kControl_Picture_P055, kControl_TextImage_TI07, kControl_TextImage_TI06, kControl_Size, }; public: enum SkillType { kSkill_Attack = 0, //!< ų kSkill_Defense, //!< ų kSkill_Max, }; public: static const DWORD kDialog_ID; static const int kSlotSize; static const int kDefaultCooltimeSecond; private: CDialogWZ* GetDialog() { return GetDialogWZ(); } int is_mouse_overed_on_button_; int mouse_overed_control_; public: uiAutobotConditionBattle(InterfaceManager* ui_man); virtual ~uiAutobotConditionBattle(void); virtual void Init(CDrawBase* drawbase); virtual void Release(void); virtual void OnUpdateSolarDialog(); virtual void OnRenderSolarDialog(); virtual void OnShowWindow(BOOL val); virtual void NetworkProc(MSG_BASE* msgbase); virtual void MessageProc(SI_MESSAGE* message); virtual RC::eSLOT_INSERT_RESULT InsertSlot(POSTYPE at_pos, SCSlot & slot); virtual BOOL DeleteSlot(POSTYPE at_pos, SCSlot * slotOut); virtual void DeleteAllSlots(void); SCSlotContainer* GetSlotContainer(); ItemUnitRenderer* GetItemUnitRender() const { return m_pItemUnitRenderer; } bool CanLinkSlot(const SCSlot* slot, POSTYPE to_pos); protected: void DefaultUI(); bool UpdateCondition(); bool UpdateUI(); eAUTO_HUNTING_TYPE GetHuntingTypeFromControlIndex(DWORD control_index); private: bool OnLButtonClick(SI_MESSAGE* message); void OnDropdownEnable(); void OnDropdownShow(UIControlPos list_index, UIControlPos picture_index); //------------------------------------------------------------------------------ //! Returns: //! Qualifier: ݽų //! Parameter: POSTYPE at_pos //------------------------------------------------------------------------------ bool IsAttackSkillSlot(POSTYPE at_pos); SkillType GetSkilType(SLOTCODE skill_code); //------------------------------------------------------------------------------ //! Returns: int : second //! Qualifier: ش罽(/ų) Ÿ ´. //! Parameter: SCSlot * slot //------------------------------------------------------------------------------ int GetCoolTime(SCSlot* slot); ItemUnitRenderer* m_pItemUnitRenderer; }; #endif //_YMS_AUTOBOT_GAME #endif