fix focus bug, change battle events

This commit is contained in:
Eduardo Bart 2012-03-29 19:46:44 -03:00
parent e0325c4c3b
commit 959d9a87b0
5 changed files with 24 additions and 29 deletions

View File

@ -23,6 +23,7 @@
#include "eventdispatcher.h"
#include <framework/core/clock.h>
#include "timer.h"
EventDispatcher g_eventDispatcher;
@ -53,10 +54,10 @@ void EventDispatcher::poll()
int count = 0;
while(m_pollEventsSize > 0) {
if(count > 50) {
static bool reported = false;
if(!reported) {
static Timer reportTimer;
if(reportTimer.running() && reportTimer.ticksElapsed() > 250) {
logError("ATTENTION the event list is not getting empty, this could be caused by some bad code");
reported = true;
reportTimer.restart();
}
break;
}

View File

@ -88,10 +88,7 @@ void UIManager::inputEvent(const InputEvent& event)
m_mouseReceiver->propagateOnMouseEvent(event.mousePos, widgetList);
for(const UIWidgetPtr& widget : widgetList) {
if(widget->isFocusable()) {
if(UIWidgetPtr parent = widget->getParent())
parent->focusChild(widget, Fw::MouseFocusReason);
}
widget->recursiveFocus(Fw::MouseFocusReason);
if(widget->onMousePress(event.mousePos, event.mouseButton))
break;
}

View File

@ -579,6 +579,18 @@ void UIWidget::focus()
parent->focusChild(asUIWidget(), Fw::ActiveFocusReason);
}
void UIWidget::recursiveFocus(Fw::FocusReason reason)
{
if(m_destroyed)
return;
if(UIWidgetPtr parent = getParent()) {
if(m_focusable)
parent->focusChild(asUIWidget(), reason);
parent->recursiveFocus(reason);
}
}
void UIWidget::lower()
{
if(m_destroyed)

View File

@ -100,6 +100,7 @@ public:
void lock();
void unlock();
void focus();
void recursiveFocus(Fw::FocusReason reason);
void lower();
void raise();
void grabMouse();

View File

@ -753,7 +753,6 @@ void Game::setChaseMode(Otc::ChaseModes chaseMode)
{
if(!canPerformGameAction())
return;
m_chaseMode = chaseMode;
m_protocolGame->sendChangeFightModes(m_fightMode, m_chaseMode, m_safeFight);
}
@ -762,7 +761,6 @@ void Game::setFightMode(Otc::FightModes fightMode)
{
if(!canPerformGameAction())
return;
m_fightMode = fightMode;
m_protocolGame->sendChangeFightModes(m_fightMode, m_chaseMode, m_safeFight);
}
@ -886,30 +884,16 @@ bool Game::canPerformGameAction()
void Game::setAttackingCreature(const CreaturePtr& creature)
{
if(m_attackingCreature) {
m_attackingCreature->hideStaticSquare();
m_attackingCreature = nullptr;
}
CreaturePtr oldCreature = m_attackingCreature;
m_attackingCreature = creature;
if(creature) {
creature->showStaticSquare(Color::red);
m_attackingCreature = creature;
}
g_lua.callGlobalField("g_game", "onAttackingCreatureChange", creature);
g_lua.callGlobalField("g_game", "onAttackingCreatureChange", creature, oldCreature);
}
void Game::setFollowingCreature(const CreaturePtr& creature)
{
if(m_followingCreature) {
m_followingCreature->hideStaticSquare();
m_followingCreature = nullptr;
}
CreaturePtr oldCreature = m_followingCreature;
m_followingCreature = creature;
if(creature) {
creature->showStaticSquare(Color::green);
m_followingCreature = creature;
}
g_lua.callGlobalField("g_game", "onFollowingCreatureChange", creature);
g_lua.callGlobalField("g_game", "onFollowingCreatureChange", creature, oldCreature);
}