1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-27 22:49:25 +02:00

Easy choosing for a secondary skill in Level Up Dialog by double clicking it

This commit is contained in:
Laserlicht
2023-09-13 23:17:44 +02:00
parent f8541d0ae4
commit 03316c62bf
3 changed files with 11 additions and 2 deletions

View File

@@ -269,6 +269,12 @@ void CSelectableComponent::clickPressed(const Point & cursorPosition)
onSelect(); onSelect();
} }
void CSelectableComponent::clickDouble(const Point & cursorPosition)
{
if(onChoose)
onChoose();
}
void CSelectableComponent::init() void CSelectableComponent::init()
{ {
selected = false; selected = false;
@@ -278,7 +284,7 @@ CSelectableComponent::CSelectableComponent(const Component &c, std::function<voi
CComponent(c),onSelect(OnSelect) CComponent(c),onSelect(OnSelect)
{ {
setRedrawParent(true); setRedrawParent(true);
addUsedEvents(LCLICK | KEYBOARD); addUsedEvents(LCLICK | DOUBLECLICK | KEYBOARD);
init(); init();
} }
@@ -286,7 +292,7 @@ CSelectableComponent::CSelectableComponent(Etype Type, int Sub, int Val, ESize i
CComponent(Type,Sub,Val, imageSize),onSelect(OnSelect) CComponent(Type,Sub,Val, imageSize),onSelect(OnSelect)
{ {
setRedrawParent(true); setRedrawParent(true);
addUsedEvents(LCLICK | KEYBOARD); addUsedEvents(LCLICK | DOUBLECLICK | KEYBOARD);
init(); init();
} }

View File

@@ -77,11 +77,13 @@ class CSelectableComponent : public CComponent, public CKeyShortcut
public: public:
bool selected; //if true, this component is selected bool selected; //if true, this component is selected
std::function<void()> onSelect; //function called on selection change std::function<void()> onSelect; //function called on selection change
std::function<void()> onChoose; //function called on doubleclick
void showAll(Canvas & to) override; void showAll(Canvas & to) override;
void select(bool on); void select(bool on);
void clickPressed(const Point & cursorPosition) override; //call-in void clickPressed(const Point & cursorPosition) override; //call-in
void clickDouble(const Point & cursorPosition) override; //call-in
CSelectableComponent(Etype Type, int Sub, int Val, ESize imageSize=large, std::function<void()> OnSelect = nullptr); CSelectableComponent(Etype Type, int Sub, int Val, ESize imageSize=large, std::function<void()> OnSelect = nullptr);
CSelectableComponent(const Component & c, std::function<void()> OnSelect = nullptr); CSelectableComponent(const Component & c, std::function<void()> OnSelect = nullptr);
}; };

View File

@@ -415,6 +415,7 @@ CLevelWindow::CLevelWindow(const CGHeroInstance * hero, PrimarySkill pskill, std
for(auto & skill : skills) for(auto & skill : skills)
{ {
auto comp = std::make_shared<CSelectableComponent>(CComponent::secskill, skill, hero->getSecSkillLevel(SecondarySkill(skill))+1, CComponent::medium); auto comp = std::make_shared<CSelectableComponent>(CComponent::secskill, skill, hero->getSecSkillLevel(SecondarySkill(skill))+1, CComponent::medium);
comp->onChoose = std::bind(&CLevelWindow::close, this);
comps.push_back(comp); comps.push_back(comp);
} }