bool SecondarySkillBar::QueueEventProcessing(void) { Display & display = Display::Get(); Cursor & cursor = Cursor::Get(); LocalEvent & le = LocalEvent::Get(); const Point & cu = le.GetMouseCursor(); bool modify = false; if(!(pos & cu) || !skills) return false; u8 ii = GetIndexFromCoord(cu); const Sprite & sprite_skill = AGG::GetICN((use_mini_sprite ? ICN::MINISS : ICN::SECSKILL), 0); const Rect tile(pos.x + (ii * (sprite_skill.w() + interval)), pos.y, sprite_skill.w(), sprite_skill.h()); if(ii < skills->size()) { Skill::Secondary & skill = skills->at(ii); if(skill.isValid()) { if(le.MouseClickLeft(tile)) { cursor.Hide(); Dialog::SecondarySkillInfo(skill, true); cursor.Show(); display.Flip(); } else if(le.MousePressRight(tile)) { if(can_change) { skill.Reset(); modify = true; } else { cursor.Hide(); Dialog::SecondarySkillInfo(skill, false); cursor.Show(); display.Flip(); } } } } else if(ii < MAXSECONDARYSKILL) { if(can_change && le.MouseClickLeft(tile)) { Skill::Secondary alt = Dialog::SelectSecondarySkill(); if(alt.isValid() && skills) { skills->AddSkill(alt); modify = true; } } } return modify; }