# HG changeset patch # User unc0rr # Date 1227627790 0 # Node ID 43742041c211a37aea7c3b5a65e5fce100e6e063 # Parent a5bafdafb39422c3836e083083b9b68b91a0f1f6 - Don't send 'Bad param' msg, as the only reason of it is just some lag - Show quit reason message diff -r a5bafdafb394 -r 43742041c211 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Mon Nov 24 21:47:59 2008 +0000 +++ b/QTfrontend/hwform.cpp Tue Nov 25 15:43:10 2008 +0000 @@ -443,6 +443,8 @@ hwnet = new HWNewNet(config, ui.pageNetGame->pGameCFG, ui.pageNetGame->pNetTeamsWidget); + connect(hwnet, SIGNAL(showMessage(const QString &)), this, SLOT(ShowErrorMessage(const QString &)), Qt::QueuedConnection); + connect(hwnet, SIGNAL(AskForRunGame()), this, SLOT(CreateNetGame())); connect(hwnet, SIGNAL(Connected()), this, SLOT(NetConnected())); connect(hwnet, SIGNAL(EnteredGame()), this, SLOT(NetGameEnter())); diff -r a5bafdafb394 -r 43742041c211 QTfrontend/newnetclient.cpp --- a/QTfrontend/newnetclient.cpp Mon Nov 24 21:47:59 2008 +0000 +++ b/QTfrontend/newnetclient.cpp Tue Nov 25 15:43:10 2008 +0000 @@ -334,7 +334,10 @@ return; } emit nickRemoved(lst[1]); - emit chatStringFromNet(QString(tr("*** %1 left")).arg(lst[1])); + if (lst.size() < 3) + emit chatStringFromNet(QString(tr("*** %1 left")).arg(lst[1])); + else + emit chatStringFromNet(QString(tr("*** %1 left (%2)")).arg(lst[1], lst[2])); return; } @@ -439,6 +442,16 @@ return; } + if (lst[0] == "BYE") { + if (lst.size() < 2) + { + qWarning("Net: Bad BYE message"); + return; + } + emit showMessage(HWNewNet::tr("Quit reason: ") + lst[1]); + return; + } + qWarning() << "Net: Unknown message:" << lst; } diff -r a5bafdafb394 -r 43742041c211 QTfrontend/newnetclient.h --- a/QTfrontend/newnetclient.h Mon Nov 24 21:47:59 2008 +0000 +++ b/QTfrontend/newnetclient.h Tue Nov 25 15:43:10 2008 +0000 @@ -113,6 +113,7 @@ void serverMessage(const QString &); void setReadyStatus(const QString & nick, bool isReady); + void showMessage(const QString &); public slots: void ToggleReady(); diff -r a5bafdafb394 -r 43742041c211 netserver/HWProto.hs --- a/netserver/HWProto.hs Mon Nov 24 21:47:59 2008 +0000 +++ b/netserver/HWProto.hs Tue Nov 25 15:43:10 2008 +0000 @@ -46,7 +46,6 @@ answerCannotCreateRoom = answerClientOnly ["WARNING", "Cannot create more rooms"] answerAbandoned = answerOthersRoom ["BYE", "Room abandoned"] -answerQuitInform nick = answerOthersRoom ["LEFT", nick] answerChatString nick msg = answerOthersRoom ["CHAT_STRING", nick, msg] answerAddTeam team = answerOthersRoom $ teamToNet team answerRemoveTeam teamName = answerOthersRoom ["REMOVE_TEAM", teamName] @@ -54,6 +53,11 @@ answerHHNum teamName hhNumber = answerOthersRoom ["HH_NUM", teamName, show hhNumber] answerTeamColor teamName newColor = answerOthersRoom ["TEAM_COLOR", teamName, newColor] answerConfigParam paramName paramStrs = answerOthersRoom $ "CONFIG_PARAM" : paramName : paramStrs +answerQuitInform nick msg = + if not $ null msg then + answerOthersRoom ["LEFT", nick, msg] + else + answerOthersRoom ["LEFT", nick] answerJoined nick = answerSameRoom ["JOINED", nick] answerRunGame = answerSameRoom ["RUN_GAME"] @@ -101,7 +105,7 @@ else if isMaster client then (noChangeClients, removeRoom (room client), (answerQuit msg) ++ answerAbandoned) -- core disconnects clients on ROOMABANDONED answer else - (noChangeClients, modifyRoom clRoom{teams = othersTeams, playersIn = (playersIn clRoom) - 1, readyPlayers = newReadyPlayers}, (answerQuit msg) ++ (answerQuitInform $ nick client) ++ answerRemoveClientTeams) + (noChangeClients, modifyRoom clRoom{teams = othersTeams, playersIn = (playersIn clRoom) - 1, readyPlayers = newReadyPlayers}, (answerQuit msg) ++ (answerQuitInform (nick client) msg) ++ answerRemoveClientTeams) where clRoom = roomByName (room client) rooms answerRemoveClientTeams = concatMap (\tn -> answerOthersRoom ["REMOVE_TEAM", teamname tn]) clientTeams @@ -251,7 +255,7 @@ (noChangeClients, noChangeRooms, answerNotMaster) else if hhNumber < 1 || hhNumber > 8 || noSuchTeam || hhNumber > (canAddNumber + (hhnum team)) then - (noChangeClients, noChangeRooms, answerBadParam) + (noChangeClients, noChangeRooms, []) else (noChangeClients, modifyRoom $ modifyTeam clRoom team{hhnum = hhNumber}, answerHHNum teamName hhNumber) where @@ -267,7 +271,7 @@ (noChangeClients, noChangeRooms, answerNotMaster) else if noSuchTeam then - (noChangeClients, noChangeRooms, answerBadParam) + (noChangeClients, noChangeRooms, []) else (noChangeClients, modifyRoom $ modifyTeam clRoom team{teamcolor = newColor}, answerTeamColor teamName newColor) where @@ -278,7 +282,7 @@ handleCmd_inRoom client _ rooms ["REMOVE_TEAM", teamName] = if noSuchTeam then - (noChangeClients, noChangeRooms, answerBadParam) + (noChangeClients, noChangeRooms, []) else if not $ nick client == teamowner team then (noChangeClients, noChangeRooms, answerNotOwner)