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 } |