You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
370 lines
8.3 KiB
370 lines
8.3 KiB
15 years ago
|
// Copyright (c) 2002-2003 Rob Kaper <cap@capsi.com>
|
||
|
//
|
||
|
// This library is free software; you can redistribute it and/or
|
||
|
// modify it under the terms of the GNU Lesser General Public
|
||
|
// License version 2.1 as published by the Free Software Foundation.
|
||
|
//
|
||
|
// This library 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
|
||
|
// Lesser General Public License for more details.
|
||
|
//
|
||
|
// You should have received a copy of the GNU Lesser General Public License
|
||
|
// along with this library; see the file COPYING.LIB. If not, write to
|
||
|
// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||
|
// Boston, MA 02110-1301, USA.
|
||
|
|
||
|
#include <iostream>
|
||
|
|
||
|
#include "atlantic_core.h"
|
||
|
|
||
|
#include "auction.h"
|
||
|
#include "configoption.h"
|
||
|
#include "estate.h"
|
||
|
#include "estategroup.h"
|
||
|
#include "game.h"
|
||
|
#include "player.h"
|
||
|
#include "trade.h"
|
||
|
|
||
|
AtlanticCore::AtlanticCore(QObject *parent, const char *name) : QObject(parent, name)
|
||
|
{
|
||
|
m_playerSelf = 0;
|
||
|
}
|
||
|
|
||
|
void AtlanticCore::reset(bool deletePermanents)
|
||
|
{
|
||
|
m_auctions.setAutoDelete(true);
|
||
|
m_auctions.clear();
|
||
|
m_auctions.setAutoDelete(false);
|
||
|
m_estates.setAutoDelete(true);
|
||
|
m_estates.clear();
|
||
|
m_estates.setAutoDelete(false);
|
||
|
m_estateGroups.setAutoDelete(true);
|
||
|
m_estateGroups.clear();
|
||
|
m_estateGroups.setAutoDelete(false);
|
||
|
m_configOptions.setAutoDelete(true);
|
||
|
m_configOptions.clear();
|
||
|
m_configOptions.setAutoDelete(false);
|
||
|
|
||
|
Trade *trade = 0;
|
||
|
for (QPtrListIterator<Trade> it(m_trades); (trade = *it) ; ++it)
|
||
|
{
|
||
|
emit removeGUI(trade);
|
||
|
trade->deleteLater();
|
||
|
}
|
||
|
m_trades.clear();
|
||
|
|
||
|
Player *player = 0;
|
||
|
for (QPtrListIterator<Player> it(m_players); (player = *it) ; ++it)
|
||
|
{
|
||
|
if (deletePermanents)
|
||
|
{
|
||
|
emit removeGUI(player);
|
||
|
player->deleteLater();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
player->setLocation(0);
|
||
|
player->setDestination(0);
|
||
|
}
|
||
|
}
|
||
|
if (deletePermanents)
|
||
|
{
|
||
|
m_players.clear();
|
||
|
m_playerSelf = 0;
|
||
|
|
||
|
Game *game = 0;
|
||
|
for (QPtrListIterator<Game> it(m_games); (game = *it) ; ++it)
|
||
|
{
|
||
|
emit removeGUI(game);
|
||
|
game->deleteLater();
|
||
|
}
|
||
|
m_games.clear();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
bool AtlanticCore::selfIsMaster() const
|
||
|
{
|
||
|
return (m_playerSelf && m_playerSelf->game() && m_playerSelf->game()->master() == m_playerSelf);
|
||
|
}
|
||
|
|
||
|
void AtlanticCore::setPlayerSelf(Player *player)
|
||
|
{
|
||
|
m_playerSelf = player;
|
||
|
}
|
||
|
|
||
|
Player *AtlanticCore::playerSelf()
|
||
|
{
|
||
|
return m_playerSelf;
|
||
|
}
|
||
|
|
||
|
QPtrList<Player> AtlanticCore::players()
|
||
|
{
|
||
|
return m_players;
|
||
|
}
|
||
|
|
||
|
Player *AtlanticCore::newPlayer(int playerId, const bool &playerSelf)
|
||
|
{
|
||
|
Player *player = new Player(playerId);
|
||
|
m_players.append(player);
|
||
|
|
||
|
if (playerSelf)
|
||
|
{
|
||
|
player->setIsSelf(playerSelf);
|
||
|
m_playerSelf = player;
|
||
|
}
|
||
|
|
||
|
emit createGUI(player);
|
||
|
|
||
|
return player;
|
||
|
}
|
||
|
|
||
|
Player *AtlanticCore::findPlayer(int playerId)
|
||
|
{
|
||
|
Player *player = 0;
|
||
|
for (QPtrListIterator<Player> it(m_players); (player = *it) ; ++it)
|
||
|
if (player->id() == playerId)
|
||
|
return player;
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
void AtlanticCore::removePlayer(Player *player)
|
||
|
{
|
||
|
m_players.remove(player);
|
||
|
emit removeGUI(player);
|
||
|
player->deleteLater();
|
||
|
}
|
||
|
|
||
|
QPtrList<Game> AtlanticCore::games()
|
||
|
{
|
||
|
return m_games;
|
||
|
}
|
||
|
|
||
|
Game *AtlanticCore::newGame(int gameId, const QString &type)
|
||
|
{
|
||
|
Game *game = new Game(gameId);
|
||
|
m_games.append(game);
|
||
|
|
||
|
if ( !type.isNull() )
|
||
|
game->setType(type);
|
||
|
|
||
|
emit createGUI(game);
|
||
|
|
||
|
return game;
|
||
|
}
|
||
|
|
||
|
Game *AtlanticCore::findGame(const QString &type)
|
||
|
{
|
||
|
Game *game = 0;
|
||
|
for (QPtrListIterator<Game> it(m_games); (game = *it) ; ++it)
|
||
|
if (game->id() == -1 && game->type() == type)
|
||
|
return game;
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
Game *AtlanticCore::findGame(int gameId)
|
||
|
{
|
||
|
if (gameId == -1)
|
||
|
return 0;
|
||
|
|
||
|
Game *game = 0;
|
||
|
for (QPtrListIterator<Game> it(m_games); (game = *it) ; ++it)
|
||
|
if (game->id() == gameId)
|
||
|
return game;
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
Game *AtlanticCore::gameSelf()
|
||
|
{
|
||
|
return( m_playerSelf ? m_playerSelf->game() : 0 );
|
||
|
}
|
||
|
|
||
|
void AtlanticCore::removeGame(Game *game)
|
||
|
{
|
||
|
m_games.remove(game);
|
||
|
emit removeGUI(game);
|
||
|
game->deleteLater();
|
||
|
}
|
||
|
|
||
|
void AtlanticCore::emitGames()
|
||
|
{
|
||
|
for (QPtrListIterator<Game> it(m_games); (*it) ; ++it)
|
||
|
emit createGUI( (*it) );
|
||
|
}
|
||
|
|
||
|
QPtrList<Estate> AtlanticCore::estates()
|
||
|
{
|
||
|
return m_estates;
|
||
|
}
|
||
|
|
||
|
Estate *AtlanticCore::newEstate(int estateId)
|
||
|
{
|
||
|
Estate *estate = new Estate(estateId);
|
||
|
m_estates.append(estate);
|
||
|
return estate;
|
||
|
}
|
||
|
|
||
|
Estate *AtlanticCore::findEstate(int estateId)
|
||
|
{
|
||
|
Estate *estate = 0;
|
||
|
for (QPtrListIterator<Estate> it(m_estates); (estate = *it) ; ++it)
|
||
|
if (estate->id() == estateId)
|
||
|
return estate;
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
Estate *AtlanticCore::estateAfter(Estate *estate)
|
||
|
{
|
||
|
Estate *eFirst = 0, *eTmp = 0;
|
||
|
bool useNext = false;
|
||
|
for (QPtrListIterator<Estate> it(m_estates); (eTmp = *it) ; ++it)
|
||
|
{
|
||
|
if (!eFirst)
|
||
|
eFirst = eTmp;
|
||
|
if (eTmp == estate)
|
||
|
useNext = true;
|
||
|
else if (useNext)
|
||
|
return eTmp;
|
||
|
}
|
||
|
return eFirst;
|
||
|
}
|
||
|
|
||
|
QPtrList<EstateGroup> AtlanticCore::estateGroups()
|
||
|
{
|
||
|
return m_estateGroups;
|
||
|
}
|
||
|
|
||
|
EstateGroup *AtlanticCore::newEstateGroup(int groupId)
|
||
|
{
|
||
|
EstateGroup *estateGroup = new EstateGroup(groupId);
|
||
|
m_estateGroups.append(estateGroup);
|
||
|
return estateGroup;
|
||
|
}
|
||
|
|
||
|
EstateGroup *AtlanticCore::findEstateGroup(int groupId)
|
||
|
{
|
||
|
EstateGroup *estateGroup = 0;
|
||
|
for (QPtrListIterator<EstateGroup> it(m_estateGroups); (estateGroup = *it) ; ++it)
|
||
|
if (estateGroup->id() == groupId)
|
||
|
return estateGroup;
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
QPtrList<Trade> AtlanticCore::trades()
|
||
|
{
|
||
|
return m_trades;
|
||
|
}
|
||
|
|
||
|
Trade *AtlanticCore::newTrade(int tradeId)
|
||
|
{
|
||
|
Trade *trade = new Trade(tradeId);
|
||
|
m_trades.append(trade);
|
||
|
|
||
|
emit createGUI(trade);
|
||
|
|
||
|
return trade;
|
||
|
}
|
||
|
|
||
|
Trade *AtlanticCore::findTrade(int tradeId)
|
||
|
{
|
||
|
Trade *trade = 0;
|
||
|
for (QPtrListIterator<Trade> it(m_trades); (trade = *it) ; ++it)
|
||
|
if (trade->tradeId() == tradeId)
|
||
|
return trade;
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
void AtlanticCore::removeTrade(Trade *trade)
|
||
|
{
|
||
|
m_trades.remove(trade);
|
||
|
emit removeGUI(trade);
|
||
|
trade->deleteLater();
|
||
|
}
|
||
|
|
||
|
QPtrList<Auction> AtlanticCore::auctions()
|
||
|
{
|
||
|
return m_auctions;
|
||
|
}
|
||
|
|
||
|
Auction *AtlanticCore::newAuction(int auctionId, Estate *estate)
|
||
|
{
|
||
|
Auction *auction = new Auction(auctionId, estate);
|
||
|
m_auctions.append(auction);
|
||
|
return auction;
|
||
|
}
|
||
|
|
||
|
void AtlanticCore::delAuction(Auction *auction)
|
||
|
{
|
||
|
m_auctions.remove(auction);
|
||
|
delete auction;
|
||
|
}
|
||
|
|
||
|
ConfigOption *AtlanticCore::newConfigOption(int configId)
|
||
|
{
|
||
|
ConfigOption *configOption = new ConfigOption(configId);
|
||
|
m_configOptions.append(configOption);
|
||
|
|
||
|
emit createGUI(configOption);
|
||
|
|
||
|
return configOption;
|
||
|
}
|
||
|
|
||
|
void AtlanticCore::removeConfigOption(ConfigOption *configOption)
|
||
|
{
|
||
|
m_configOptions.remove(configOption);
|
||
|
emit removeGUI(configOption);
|
||
|
configOption->deleteLater();
|
||
|
}
|
||
|
|
||
|
ConfigOption *AtlanticCore::findConfigOption(int configId)
|
||
|
{
|
||
|
ConfigOption *configOption = 0;
|
||
|
for (QPtrListIterator<ConfigOption> it(m_configOptions); (configOption = *it) ; ++it)
|
||
|
if (configOption->id() == configId)
|
||
|
return configOption;
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
void AtlanticCore::printDebug()
|
||
|
{
|
||
|
Player *player = 0;
|
||
|
for (QPtrListIterator<Player> it(m_players); (player = *it) ; ++it)
|
||
|
if (player == m_playerSelf)
|
||
|
std::cout << "PS: " << player->name().latin1() << ", game " << QString::number(player->game() ? player->game()->id() : -1).latin1() << std::endl;
|
||
|
else
|
||
|
std::cout << " P: " << player->name().latin1() << ", game " << QString::number(player->game() ? player->game()->id() : -1).latin1() << std::endl;
|
||
|
|
||
|
Game *game = 0;
|
||
|
for (QPtrListIterator<Game> it(m_games); (game = *it) ; ++it)
|
||
|
std::cout << " G: " << QString::number(game->id()).latin1() << ", master: " << QString::number(game->master() ? game->master()->id() : -1 ).latin1() << std::endl;
|
||
|
|
||
|
Estate *estate = 0;
|
||
|
for (QPtrListIterator<Estate> it(m_estates); (estate = *it) ; ++it)
|
||
|
std::cout << " E: " << estate->name().latin1() << std::endl;
|
||
|
|
||
|
EstateGroup *estateGroup = 0;
|
||
|
for (QPtrListIterator<EstateGroup> it(m_estateGroups); (estateGroup = *it) ; ++it)
|
||
|
std::cout << "EG: " << estateGroup->name().latin1() << std::endl;
|
||
|
|
||
|
Auction *auction = 0;
|
||
|
for (QPtrListIterator<Auction> it(m_auctions); (auction = *it) ; ++it)
|
||
|
std::cout << " A: " << QString::number(auction->auctionId()).latin1() << std::endl;
|
||
|
|
||
|
Trade *trade = 0;
|
||
|
for (QPtrListIterator<Trade> it(m_trades); (trade = *it) ; ++it)
|
||
|
std::cout << " T: " << QString::number(trade->tradeId()).latin1() << std::endl;
|
||
|
|
||
|
ConfigOption *configOption = 0;
|
||
|
for (QPtrListIterator<ConfigOption> it(m_configOptions); (configOption = *it) ; ++it)
|
||
|
std::cout << "CO:" << QString::number(configOption->id()).latin1() << " " << configOption->name().latin1() << " " << configOption->value().latin1() << std::endl;
|
||
|
}
|
||
|
|
||
|
#include "atlantic_core.moc"
|