about summary refs log tree commit diff
path: root/src/game/client/components/voting.cpp
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2011-03-25 12:06:45 +0100
committeroy <Tom_Adams@web.de>2011-03-25 12:06:45 +0100
commit6ece07ee74b8b179d0a66c781a57344bcd75d3d5 (patch)
treea6b6f2512a871814cb6b96013311371e84e47cef /src/game/client/components/voting.cpp
parent359b806e959fbdced610c2d84d1e12dfe7b58a7e (diff)
downloadzcatch-6ece07ee74b8b179d0a66c781a57344bcd75d3d5.tar.gz
zcatch-6ece07ee74b8b179d0a66c781a57344bcd75d3d5.zip
added force_vote command
Diffstat (limited to 'src/game/client/components/voting.cpp')
-rw-r--r--src/game/client/components/voting.cpp49
1 files changed, 19 insertions, 30 deletions
diff --git a/src/game/client/components/voting.cpp b/src/game/client/components/voting.cpp
index 808b6669..6e00a5d5 100644
--- a/src/game/client/components/voting.cpp
+++ b/src/game/client/components/voting.cpp
@@ -31,48 +31,37 @@ void CVoting::Callvote(const char *pType, const char *pValue, const char *pReaso
 	Client()->SendPackMsg(&Msg, MSGFLAG_VITAL);
 }
 
-void CVoting::CallvoteKick(int ClientID, const char *pReason)
+void CVoting::CallvoteKick(int ClientID, const char *pReason, bool ForceVote)
 {
-	char aBuf[32];
-	str_format(aBuf, sizeof(aBuf), "%d", ClientID);
-	Callvote("kick", aBuf, pReason);
-}
-
-void CVoting::CallvoteOption(int OptionId, const char *pReason)
-{
-	CVoteOption *pOption = m_pFirst;
-	while(pOption && OptionId >= 0)
+	if(ForceVote)
 	{
-		if(OptionId == 0)
-		{
-			Callvote("option", pOption->m_aDescription, pReason);
-			break;
-		}
-		
-		OptionId--;
-		pOption = pOption->m_pNext;
+		char aBuf[128];
+		str_format(aBuf, sizeof(aBuf), "force_vote kick %d %s", ClientID, pReason);
+		Client()->Rcon(aBuf);
 	}
-}
-
-// TODO: fix these two
-void CVoting::ForcevoteKick(int ClientID, const char *pReason)
-{
-	char aBuf[32];
-	if(pReason[0])
-		str_format(aBuf, sizeof(aBuf), "kick %d %s", ClientID, pReason);
 	else
-		str_format(aBuf, sizeof(aBuf), "kick %d", ClientID);
-	Client()->Rcon(aBuf);
+	{
+		char aBuf[32];
+		str_format(aBuf, sizeof(aBuf), "%d", ClientID);
+		Callvote("kick", aBuf, pReason);
+	}
 }
 
-void CVoting::ForcevoteOption(int OptionId, const char *pReason)
+void CVoting::CallvoteOption(int OptionId, const char *pReason, bool ForceVote)
 {
 	CVoteOption *pOption = m_pFirst;
 	while(pOption && OptionId >= 0)
 	{
 		if(OptionId == 0)
 		{
-			Client()->Rcon(pOption->m_aDescription);
+			if(ForceVote)
+			{
+				char aBuf[128];
+				str_format(aBuf, sizeof(aBuf), "force_vote option \"%s\" %s", pOption->m_aDescription, pReason);
+				Client()->Rcon(aBuf);
+			}
+			else
+				Callvote("option", pOption->m_aDescription, pReason);
 			break;
 		}