/* * Copyright 2008 Ben Boeckel * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ // Header includes #include "ATBArena.h" // Sigbattle includes #include "ATBTimer.h" // Qt includes #include Sigbattle::ATBArena::ATBArena(Sigscript::SigmodWrapper* sigmod, QList players, const bool isWild, QObject* parent) : Arena(sigmod, players, isWild, parent) { setupBattle(); } void Sigbattle::ATBArena::handleAction(TeamMember* teamMember, TeamMember::Action action) { if (action.first == TeamMember::Skip) { m_decisions.enqueue(requestDecision(teamMember)); return; } Arena::handleAction(teamMember, action); } void Sigbattle::ATBArena::processActions() { if (!m_decisions.isEmpty()) { while (m_decisions.head().second.isFinished()) { TeamMember::RequestedAction action = m_decisions.dequeue(); handleAction(action.first, action.second.result()); } } } void Sigbattle::ATBArena::cleanUp() { delete m_atbTimer; m_atbTimer = NULL; delete m_processTicker; m_processTicker = NULL; Arena::cleanUp(); } void Sigbattle::ATBArena::setupBattle() { m_atbTimer = new ATBTimer(this, m_decisions); m_processTicker = new QTimer(this); connect(m_processTicker, SIGNAL(timeout()), this, SLOT(processActions())); m_processTicker->start(100); Arena::setupBattle(); }