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

View File

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

View File

@ -579,6 +579,18 @@ void UIWidget::focus()
parent->focusChild(asUIWidget(), Fw::ActiveFocusReason); 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() void UIWidget::lower()
{ {
if(m_destroyed) if(m_destroyed)

View File

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

View File

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