QTfrontend/netconnectedclient.cpp
changeset 468 8403d6884707
parent 465 07eca0a2546c
child 569 4e41c9e9e4d1
equal deleted inserted replaced
467:20d36f976b25 468:8403d6884707
    21 
    21 
    22 #include <QTcpServer>
    22 #include <QTcpServer>
    23 #include <QTcpSocket>
    23 #include <QTcpSocket>
    24 #include <QStringList>
    24 #include <QStringList>
    25 
    25 
    26 #include <QDebug>
       
    27 
       
    28 extern char delimeter;
    26 extern char delimeter;
    29 
    27 
    30 HWConnectedClient::HWConnectedClient(HWNetServer* hwserver, QTcpSocket* client) :
    28 HWConnectedClient::HWConnectedClient(HWNetServer* hwserver, QTcpSocket* client) :
    31   readyToStart(false),
    29   readyToStart(false),
    32   m_hwserver(hwserver),
    30   m_hwserver(hwserver),
    68       RawSendNet(QString("ERRONEUSNICKNAME"));
    66       RawSendNet(QString("ERRONEUSNICKNAME"));
    69       throw ShouldDisconnectException();
    67       throw ShouldDisconnectException();
    70     }
    68     }
    71 
    69 
    72     client_nick=lst[1];
    70     client_nick=lst[1];
    73     qDebug() << "send connected";
       
    74     RawSendNet(QString("CONNECTED"));
    71     RawSendNet(QString("CONNECTED"));
    75     if(m_hwserver->isChiefClient(this)) {
    72     if(m_hwserver->isChiefClient(this)) {
    76       RawSendNet(QString("CONFIGASKED"));
    73       RawSendNet(QString("CONFIGASKED"));
    77     }
    74     }
    78     else {
    75     else {
    82       for(QList<QStringList>::iterator tmit=team_conf.begin(); tmit!=team_conf.end(); ++tmit) {
    79       for(QList<QStringList>::iterator tmit=team_conf.begin(); tmit!=team_conf.end(); ++tmit) {
    83 	RawSendNet(QString("ADDTEAM:")+delimeter+tmit->join(QString(delimeter)));
    80 	RawSendNet(QString("ADDTEAM:")+delimeter+tmit->join(QString(delimeter)));
    84       }
    81       }
    85       // send config
    82       // send config
    86       QMap<QString, QStringList> conf=m_hwserver->getGameCfg();
    83       QMap<QString, QStringList> conf=m_hwserver->getGameCfg();
    87       qDebug() << "Config:";
       
    88       for(QMap<QString, QStringList>::iterator it=conf.begin(); it!=conf.end(); ++it) {
    84       for(QMap<QString, QStringList>::iterator it=conf.begin(); it!=conf.end(); ++it) {
    89 	RawSendNet(QString("CONFIG_PARAM")+delimeter+it.key()+delimeter+it.value().join(QString(delimeter)));
    85 	RawSendNet(QString("CONFIG_PARAM")+delimeter+it.key()+delimeter+it.value().join(QString(delimeter)));
    90 	qDebug() << QString("CONFIG_PARAM")+delimeter+it.key()+delimeter+it.value().join(QString(delimeter));
       
    91       }
    86       }
    92     }
    87     }
    93     m_hwserver->sendNicks(this);
    88     m_hwserver->sendNicks(this);
    94     m_hwserver->sendOthers(this, QString("JOINED")+delimeter+client_nick);
    89     m_hwserver->sendOthers(this, QString("JOINED")+delimeter+client_nick);
    95     return;
    90     return;
   118   }
   113   }
   119 
   114 
   120   if(lst[0]=="CONFIG_PARAM") {
   115   if(lst[0]=="CONFIG_PARAM") {
   121     if(!m_hwserver->isChiefClient(this) || lst.size()<3) return; // error or permission denied :)
   116     if(!m_hwserver->isChiefClient(this) || lst.size()<3) return; // error or permission denied :)
   122     else m_hwserver->m_gameCfg[lst[1]]=lst.mid(2);
   117     else m_hwserver->m_gameCfg[lst[1]]=lst.mid(2);
   123     qDebug() << msg;
       
   124   }
   118   }
   125 
   119 
   126   if(lst[0]=="ADDTEAM:") {
   120   if(lst[0]=="ADDTEAM:") {
   127     if(lst.size()<14) return;
   121     if(lst.size()<14) return;
   128     lst.pop_front();
   122     lst.pop_front();
   134     // hedgehogs num count
   128     // hedgehogs num count
   135     int maxAdd=18-m_hwserver->hhnum;
   129     int maxAdd=18-m_hwserver->hhnum;
   136     if (maxAdd<=0) return; // reject command
   130     if (maxAdd<=0) return; // reject command
   137     int toAdd=maxAdd<4 ? maxAdd : 4;
   131     int toAdd=maxAdd<4 ? maxAdd : 4;
   138     m_hwserver->hhnum+=toAdd;
   132     m_hwserver->hhnum+=toAdd;
   139     qDebug() << "added " << toAdd << " hedgehogs";
       
   140     // hedgehogs num config
   133     // hedgehogs num config
   141     QString hhnumCfg=QString("CONFIG_PARAM%1HHNUM+%2+%3%1%4").arg(delimeter).arg(lst[0])\
   134     QString hhnumCfg=QString("CONFIG_PARAM%1HHNUM+%2+%3%1%4").arg(delimeter).arg(lst[0])\
   142       .arg(netTeamID)\
   135       .arg(netTeamID)\
   143       .arg(toAdd);
   136       .arg(toAdd);
   144     
   137     
   145     // creating color config for new team
   138     // creating color config for new team
   146     QString colorCfg=QString("CONFIG_PARAM%1TEAM_COLOR+%2+%3%1%4").arg(delimeter).arg(lst[0])\
   139     QString colorCfg=QString("CONFIG_PARAM%1TEAM_COLOR+%2+%3%1%4").arg(delimeter).arg(lst[0])\
   147       .arg(netTeamID)\
   140       .arg(netTeamID)\
   148       .arg(lst.takeAt(2));
   141       .arg(lst.takeAt(2));
   149     qDebug() << "color config:" << colorCfg;
       
   150 
   142 
   151     m_hwserver->m_gameCfg[colorCfg.split(delimeter)[1]]=colorCfg.split(delimeter).mid(2);
   143     m_hwserver->m_gameCfg[colorCfg.split(delimeter)[1]]=colorCfg.split(delimeter).mid(2);
   152     m_hwserver->m_gameCfg[hhnumCfg.split(delimeter)[1]]=hhnumCfg.split(delimeter).mid(2);
   144     m_hwserver->m_gameCfg[hhnumCfg.split(delimeter)[1]]=hhnumCfg.split(delimeter).mid(2);
   153     m_teamsCfg.push_back(lst);
   145     m_teamsCfg.push_back(lst);
   154 
   146 
   164     
   156     
   165     for(QMap<QString, QStringList>::iterator it=m_hwserver->m_gameCfg.begin(); it!=m_hwserver->m_gameCfg.end(); ++it) {
   157     for(QMap<QString, QStringList>::iterator it=m_hwserver->m_gameCfg.begin(); it!=m_hwserver->m_gameCfg.end(); ++it) {
   166       QStringList hhTmpList=it.key().split('+');
   158       QStringList hhTmpList=it.key().split('+');
   167       if(hhTmpList[0] == "HHNUM") {
   159       if(hhTmpList[0] == "HHNUM") {
   168 	if(hhTmpList[1]==lst[1]) {
   160 	if(hhTmpList[1]==lst[1]) {
   169 	  qDebug() << "removed " << it.value()[0].toUInt() << " hedgehogs";
       
   170 	  m_hwserver->hhnum-=it.value()[0].toUInt();
   161 	  m_hwserver->hhnum-=it.value()[0].toUInt();
   171 	  break;
   162 	  break;
   172 	}
   163 	}
   173       }
   164       }
   174     }
   165     }
   175 
   166 
   176     unsigned int netID=removeTeam(lst[1]);
   167     unsigned int netID=removeTeam(lst[1]);
   177     m_hwserver->sendOthers(this, QString("REMOVETEAM:")+delimeter+lst[1]+delimeter+QString::number(netID));
   168     m_hwserver->sendOthers(this, QString("REMOVETEAM:")+delimeter+lst[1]+delimeter+QString::number(netID));
   178     qDebug() << QString("REMOVETEAM:")+delimeter+lst[1]+delimeter+QString::number(netID);
       
   179     return;
   169     return;
   180   }
   170   }
   181 
   171 
   182   m_hwserver->sendOthers(this, msg);
   172   m_hwserver->sendOthers(this, msg);
   183 }
   173 }