diff -r 57c2ef19f719 -r f97a7a3dc8f6 QTfrontend/team.cpp --- a/QTfrontend/team.cpp Thu Oct 05 16:33:18 2006 +0000 +++ b/QTfrontend/team.cpp Thu Oct 05 17:02:09 2006 +0000 @@ -1,201 +1,201 @@ -/* - * Hedgewars, a worms-like game - * Copyright (c) 2005, 2006 Andrey Korotaev - * - * 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; version 2 of the License - * - * 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include -#include -#include -#include "team.h" -#include "hwform.h" -#include "predefteams.h" -#include "pages.h" -#include "hwconsts.h" - -HWTeam::HWTeam(const QString & teamname) -{ - TeamName = teamname; - for (int i = 0; i < 8; i++) HHName[i].sprintf("hedgehog %d", i); - Grave = "Simple"; - Fort = "Barrelhouse"; - for(int i = 0; i < BINDS_NUMBER; i++) - { - binds[i].action = cbinds[i].action; - binds[i].strbind = cbinds[i].strbind; - } -} - -HWTeam::HWTeam(quint8 num) -{ - num %= PREDEFTEAMS_COUNT; - TeamName = QApplication::translate("teams", pteams[num].TeamName); - HHName[0] = QApplication::translate("teams", pteams[num].hh0name); - HHName[1] = QApplication::translate("teams", pteams[num].hh1name); - HHName[2] = QApplication::translate("teams", pteams[num].hh2name); - HHName[3] = QApplication::translate("teams", pteams[num].hh3name); - HHName[4] = QApplication::translate("teams", pteams[num].hh4name); - HHName[5] = QApplication::translate("teams", pteams[num].hh5name); - HHName[6] = QApplication::translate("teams", pteams[num].hh6name); - HHName[7] = QApplication::translate("teams", pteams[num].hh7name); - Grave = pteams[num].Grave; - Fort = pteams[num].Fort; - for(int i = 0; i < BINDS_NUMBER; i++) - { - binds[i].action = cbinds[i].action; - binds[i].strbind = cbinds[i].strbind; - } -} - - -bool HWTeam::LoadFromFile() -{ - QFile cfgfile(cfgdir->absolutePath() + "/" + TeamName + ".cfg"); - if (!cfgfile.open(QIODevice::ReadOnly)) return false; - QTextStream stream(&cfgfile); - stream.setCodec("UTF-8"); - QString str; - QString action; - - while (!stream.atEnd()) - { - str = stream.readLine(); - if (str.startsWith(";")) continue; - if (str.startsWith("name team ")) - { - str.remove(0, 10); - TeamName = str; - } else - if (str.startsWith("name hh")) - { - str.remove(0, 7); - long i = str.left(1).toLong(); - if ((i < 0) || (i > 7)) continue; - str.remove(0, 2); - HHName[i] = str; - } else - if (str.startsWith("grave ")) - { - str.remove(0, 6); - Grave = str; - } else - if (str.startsWith("fort ")) - { - str.remove(0, 5); - Fort = str; - } else - if (str.startsWith("bind ")) - { - str.remove(0, 5); - action = str.section(' ', 1); - str = str.section(' ', 0, 0); - str.truncate(15); - for (int i = 0; i < BINDS_NUMBER; i++) - if (action == binds[i].action) - { - binds[i].strbind = str; - break; - } - } - } - cfgfile.close(); - return true; -} - -bool HWTeam::SaveToFile() -{ - QFile cfgfile(cfgdir->absolutePath() + "/" + TeamName + ".cfg"); - if (!cfgfile.open(QIODevice::WriteOnly)) return false; - QTextStream stream(&cfgfile); - stream.setCodec("UTF-8"); - stream << "; Generated by Hedgewars, do not modify" << endl; - stream << "name team " << TeamName << endl; - for (int i = 0; i < 8; i++) - stream << "name hh" << i << " " << HHName[i] << endl; - stream << "grave " << Grave << endl; - stream << "fort " << Fort << endl; - for(int i = 0; i < BINDS_NUMBER; i++) - { - stream << "bind " << binds[i].strbind << " " << binds[i].action << endl; - } - cfgfile.close(); - return true; -} - -void HWTeam::SetToPage(HWForm * hwform) -{ - hwform->ui.pageEditTeam->TeamNameEdit->setText(TeamName); - for(int i = 0; i < 8; i++) - { - hwform->ui.pageEditTeam->HHNameEdit[i]->setText(HHName[i]); - } - hwform->ui.pageEditTeam->CBGrave->setCurrentIndex(hwform->ui.pageEditTeam->CBGrave->findText(Grave)); - hwform->ui.pageEditTeam->CBGrave_activated(Grave); - - hwform->ui.pageEditTeam->CBFort->setCurrentIndex(hwform->ui.pageEditTeam->CBFort->findText(Fort)); - hwform->ui.pageEditTeam->CBFort_activated(Fort); - - for(int i = 0; i < BINDS_NUMBER; i++) - { - hwform->ui.pageEditTeam->CBBind[i]->setCurrentIndex(hwform->ui.pageEditTeam->CBBind[i]->findText(binds[i].strbind)); - } -} - -void HWTeam::GetFromPage(HWForm * hwform) -{ - TeamName = hwform->ui.pageEditTeam->TeamNameEdit->text(); - for(int i = 0; i < 8; i++) - { - HHName[i] = hwform->ui.pageEditTeam->HHNameEdit[i]->text(); - } - - Grave = hwform->ui.pageEditTeam->CBGrave->currentText(); - Fort = hwform->ui.pageEditTeam->CBFort->currentText(); - for(int i = 0; i < 8; i++) - { - binds[i].strbind = hwform->ui.pageEditTeam->CBBind[i]->currentText(); - } -} - -QByteArray HWTeam::IPCTeamInfo() const -{ - QByteArray buf; - #define ADD(a) { \ - QByteArray strmsg = a.toUtf8(); \ - quint8 sz = strmsg.size(); \ - buf.append(QByteArray((char *)&sz, 1)); \ - buf.append(strmsg); \ - } - - ADD(QString("ename team " + TeamName)); - for (int i = 0; i < 8; i++) - ADD(QString("ename hh%1 ").arg(i).append(HHName[i])); - ADD(QString("egrave " + Grave)); - ADD(QString("efort " + Fort)); - for(int i = 0; i < BINDS_NUMBER; i++) - { - ADD(QString("ebind " + binds[i].strbind + " " + binds[i].action)); - } - #undef ADD - return buf; -} - -bool HWTeam::operator==(const HWTeam& t1) const { - return TeamName==t1.TeamName; -} - -bool HWTeam::operator<(const HWTeam& t1) const { - return TeamName + * + * 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; version 2 of the License + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include +#include +#include +#include "team.h" +#include "hwform.h" +#include "predefteams.h" +#include "pages.h" +#include "hwconsts.h" + +HWTeam::HWTeam(const QString & teamname) +{ + TeamName = teamname; + for (int i = 0; i < 8; i++) HHName[i].sprintf("hedgehog %d", i); + Grave = "Simple"; + Fort = "Barrelhouse"; + for(int i = 0; i < BINDS_NUMBER; i++) + { + binds[i].action = cbinds[i].action; + binds[i].strbind = cbinds[i].strbind; + } +} + +HWTeam::HWTeam(quint8 num) +{ + num %= PREDEFTEAMS_COUNT; + TeamName = QApplication::translate("teams", pteams[num].TeamName); + HHName[0] = QApplication::translate("teams", pteams[num].hh0name); + HHName[1] = QApplication::translate("teams", pteams[num].hh1name); + HHName[2] = QApplication::translate("teams", pteams[num].hh2name); + HHName[3] = QApplication::translate("teams", pteams[num].hh3name); + HHName[4] = QApplication::translate("teams", pteams[num].hh4name); + HHName[5] = QApplication::translate("teams", pteams[num].hh5name); + HHName[6] = QApplication::translate("teams", pteams[num].hh6name); + HHName[7] = QApplication::translate("teams", pteams[num].hh7name); + Grave = pteams[num].Grave; + Fort = pteams[num].Fort; + for(int i = 0; i < BINDS_NUMBER; i++) + { + binds[i].action = cbinds[i].action; + binds[i].strbind = cbinds[i].strbind; + } +} + + +bool HWTeam::LoadFromFile() +{ + QFile cfgfile(cfgdir->absolutePath() + "/" + TeamName + ".cfg"); + if (!cfgfile.open(QIODevice::ReadOnly)) return false; + QTextStream stream(&cfgfile); + stream.setCodec("UTF-8"); + QString str; + QString action; + + while (!stream.atEnd()) + { + str = stream.readLine(); + if (str.startsWith(";")) continue; + if (str.startsWith("name team ")) + { + str.remove(0, 10); + TeamName = str; + } else + if (str.startsWith("name hh")) + { + str.remove(0, 7); + long i = str.left(1).toLong(); + if ((i < 0) || (i > 7)) continue; + str.remove(0, 2); + HHName[i] = str; + } else + if (str.startsWith("grave ")) + { + str.remove(0, 6); + Grave = str; + } else + if (str.startsWith("fort ")) + { + str.remove(0, 5); + Fort = str; + } else + if (str.startsWith("bind ")) + { + str.remove(0, 5); + action = str.section(' ', 1); + str = str.section(' ', 0, 0); + str.truncate(15); + for (int i = 0; i < BINDS_NUMBER; i++) + if (action == binds[i].action) + { + binds[i].strbind = str; + break; + } + } + } + cfgfile.close(); + return true; +} + +bool HWTeam::SaveToFile() +{ + QFile cfgfile(cfgdir->absolutePath() + "/" + TeamName + ".cfg"); + if (!cfgfile.open(QIODevice::WriteOnly)) return false; + QTextStream stream(&cfgfile); + stream.setCodec("UTF-8"); + stream << "; Generated by Hedgewars, do not modify" << endl; + stream << "name team " << TeamName << endl; + for (int i = 0; i < 8; i++) + stream << "name hh" << i << " " << HHName[i] << endl; + stream << "grave " << Grave << endl; + stream << "fort " << Fort << endl; + for(int i = 0; i < BINDS_NUMBER; i++) + { + stream << "bind " << binds[i].strbind << " " << binds[i].action << endl; + } + cfgfile.close(); + return true; +} + +void HWTeam::SetToPage(HWForm * hwform) +{ + hwform->ui.pageEditTeam->TeamNameEdit->setText(TeamName); + for(int i = 0; i < 8; i++) + { + hwform->ui.pageEditTeam->HHNameEdit[i]->setText(HHName[i]); + } + hwform->ui.pageEditTeam->CBGrave->setCurrentIndex(hwform->ui.pageEditTeam->CBGrave->findText(Grave)); + hwform->ui.pageEditTeam->CBGrave_activated(Grave); + + hwform->ui.pageEditTeam->CBFort->setCurrentIndex(hwform->ui.pageEditTeam->CBFort->findText(Fort)); + hwform->ui.pageEditTeam->CBFort_activated(Fort); + + for(int i = 0; i < BINDS_NUMBER; i++) + { + hwform->ui.pageEditTeam->CBBind[i]->setCurrentIndex(hwform->ui.pageEditTeam->CBBind[i]->findText(binds[i].strbind)); + } +} + +void HWTeam::GetFromPage(HWForm * hwform) +{ + TeamName = hwform->ui.pageEditTeam->TeamNameEdit->text(); + for(int i = 0; i < 8; i++) + { + HHName[i] = hwform->ui.pageEditTeam->HHNameEdit[i]->text(); + } + + Grave = hwform->ui.pageEditTeam->CBGrave->currentText(); + Fort = hwform->ui.pageEditTeam->CBFort->currentText(); + for(int i = 0; i < 8; i++) + { + binds[i].strbind = hwform->ui.pageEditTeam->CBBind[i]->currentText(); + } +} + +QByteArray HWTeam::IPCTeamInfo() const +{ + QByteArray buf; + #define ADD(a) { \ + QByteArray strmsg = a.toUtf8(); \ + quint8 sz = strmsg.size(); \ + buf.append(QByteArray((char *)&sz, 1)); \ + buf.append(strmsg); \ + } + + ADD(QString("ename team " + TeamName)); + for (int i = 0; i < 8; i++) + ADD(QString("ename hh%1 ").arg(i).append(HHName[i])); + ADD(QString("egrave " + Grave)); + ADD(QString("efort " + Fort)); + for(int i = 0; i < BINDS_NUMBER; i++) + { + ADD(QString("ebind " + binds[i].strbind + " " + binds[i].action)); + } + #undef ADD + return buf; +} + +bool HWTeam::operator==(const HWTeam& t1) const { + return TeamName==t1.TeamName; +} + +bool HWTeam::operator<(const HWTeam& t1) const { + return TeamName