修正通过点击切换stackElement的行为

This commit is contained in:
Zhong Yang
2022-03-24 17:24:24 +08:00
parent f76c517757
commit d462bad032
2 changed files with 14 additions and 5 deletions
+11 -4
View File
@@ -84,7 +84,8 @@ bool CUserUi::LButtonUp(CPoint point)
{
if (!CPlayerUIBase::LButtonUp(point))
{
for (const auto& element : m_stack_elements)
const auto& stack_elements{ GetStackElements() };
for (const auto& element : stack_elements)
{
UiElement::StackElement* stack_element = dynamic_cast<UiElement::StackElement*>(element.get());
if (stack_element != nullptr && stack_element->ckick_to_switch && stack_element->GetRect().PtInRect(point))
@@ -329,7 +330,7 @@ std::shared_ptr<UiElement::Element> CUserUi::BuildUiElementFromXmlNode(tinyxml2:
}
else if (item_name == "stackElement")
{
m_stack_elements.push_back(ui_element);
GetStackElements().push_back(ui_element);
UiElement::StackElement* stack_element = dynamic_cast<UiElement::StackElement*>(ui_element.get());
if (stack_element != nullptr)
{
@@ -350,6 +351,11 @@ std::shared_ptr<UiElement::Element> CUserUi::BuildUiElementFromXmlNode(tinyxml2:
return ui_element;
}
std::vector<std::shared_ptr<UiElement::Element>>& CUserUi::GetStackElements()
{
return m_stack_elements[GetUiSize()];
}
void CUserUi::LoadUi()
{
m_stack_elements.clear();
@@ -381,9 +387,10 @@ void CUserUi::LoadUi()
void CUserUi::SwitchStackElement()
{
m_draw_data.lyric_rect.SetRectEmpty();
if (!m_stack_elements.empty())
auto& stack_elements{ GetStackElements() };
if (!stack_elements.empty())
{
UiElement::StackElement* stack_element = dynamic_cast<UiElement::StackElement*>(m_stack_elements.front().get());
UiElement::StackElement* stack_element = dynamic_cast<UiElement::StackElement*>(stack_elements.front().get());
if (stack_element != nullptr)
stack_element->SwitchDisplay();
}
+3 -1
View File
@@ -26,7 +26,7 @@ private:
std::shared_ptr<UiElement::Element> m_root_ui_narrow;
std::shared_ptr<UiElement::Element> m_root_ui_small;
std::wstring m_ui_name;
std::vector<std::shared_ptr<UiElement::Element>> m_stack_elements;
std::map<CPlayerUIBase::UiSize, std::vector<std::shared_ptr<UiElement::Element>>> m_stack_elements;
public:
virtual int GetUiIndex() override;
@@ -39,6 +39,8 @@ private:
static int GetMaxUiIndex(const std::vector<std::shared_ptr<CUserUi>>& ui_list);
std::shared_ptr<UiElement::Element> BuildUiElementFromXmlNode(tinyxml2::XMLElement* xml_node); //从一个xml节点创建UiElement::Element元素及其所有子元素的对象
std::vector<std::shared_ptr<UiElement::Element>>& GetStackElements();
protected:
void LoadUi(); //从xml文件载入界面
virtual void SwitchStackElement() override;