From: <z-...@us...> - 2008-01-30 09:35:27
|
Revision: 7705 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=7705&view=rev Author: z-man Date: 2008-01-30 01:35:32 -0800 (Wed, 30 Jan 2008) Log Message: ----------- Hopefully a crashfix, and hopefully no reopening of old leak :) Modified Paths: -------------- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp Modified: armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp =================================================================== --- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-01-29 21:41:11 UTC (rev 7704) +++ armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-01-30 09:35:32 UTC (rev 7705) @@ -722,8 +722,6 @@ virtual void OnDestroy() { machine_ = 0; - - delete this; } private: nMachine * machine_; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2008-03-08 12:51:06
|
Revision: 8282 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8282&view=rev Author: z-man Date: 2008-03-08 04:51:07 -0800 (Sat, 08 Mar 2008) Log Message: ----------- Fixed clientside reception of server controlled vote items. Modified Paths: -------------- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp Modified: armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp =================================================================== --- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-03-08 12:49:37 UTC (rev 8281) +++ armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-03-08 12:51:07 UTC (rev 8282) @@ -201,10 +201,13 @@ if ( !DoFillFromMessage( m ) ) return false; - if ( !CheckValid( m.SenderID() ) ) - return false; + if ( sn_GetNetState() == nSERVER ) + { + if ( !CheckValid( m.SenderID() ) ) + return false; - ReBroadcast( m.SenderID() ); + ReBroadcast( m.SenderID() ); + } return true; } @@ -542,6 +545,11 @@ // checks whether the vote is a valid vote to make bool CheckValid( int senderID ) { + if ( sn_GetNetState() != nSERVER ) + { + return true; + } + // fill suggestor if ( !suggestor_ ) { @@ -819,7 +827,7 @@ { m >> description_; m >> details_; - return true; + return eVoteItem::DoFillFromMessage( m ); }; virtual void DoFillToMessage( nMessage& m ) const @@ -871,7 +879,7 @@ static void se_HandleNewServerVote( nMessage& m ) { - if ( eVoteItem::AcceptNewVote( m ) ) + if ( sn_GetNetState() != nCLIENT || eVoteItem::AcceptNewVote( m ) ) { // accept message eVoteItem* item = tNEW( eVoteItemServerControlled )(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2008-03-08 13:53:18
|
Revision: 8283 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8283&view=rev Author: z-man Date: 2008-03-08 05:53:19 -0800 (Sat, 08 Mar 2008) Log Message: ----------- Re-added VOTE_USE_SERVER_CONTROLLED_KICK config item on the client to avoid UPGRADE messages. Modified Paths: -------------- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp Modified: armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp =================================================================== --- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-03-08 12:51:07 UTC (rev 8282) +++ armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-03-08 13:53:19 UTC (rev 8283) @@ -43,6 +43,12 @@ #include "ePlayer.h" #include "eGrid.h" +#ifndef DEDICATED +// use server controlled votes (just for the client, to avoid UPGRADE messages) +static bool se_useServerControlledKick = false; +static nSettingItem< bool > se_usc( "VOTE_USE_SERVER_CONTROLLED_KICK", se_useServerControlledKick ); +#endif + // basic vote timeout value static unsigned short se_votingItemID = 0; static float se_votingTimeout = 300.0f; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2008-03-17 10:15:39
|
Revision: 8329 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8329&view=rev Author: z-man Date: 2008-03-17 03:15:44 -0700 (Mon, 17 Mar 2008) Log Message: ----------- Added missing output parameter. Modified Paths: -------------- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp Modified: armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp =================================================================== --- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-03-17 07:36:18 UTC (rev 8328) +++ armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-03-17 10:15:44 UTC (rev 8329) @@ -1607,7 +1607,7 @@ std::ifstream s; if ( Open( s, 0 ) ) { - sn_ConsoleOut( tOutput( "$vote_include_message", file_ ) ); + sn_ConsoleOut( tOutput( "$vote_include_message", file_, level_ ) ); eAccessConsoleFilter filter( level_ ); tConfItemBase::ReadFile( s ); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2008-03-19 11:07:14
|
Revision: 8350 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8350&view=rev Author: z-man Date: 2008-03-19 04:06:46 -0700 (Wed, 19 Mar 2008) Log Message: ----------- Fixed one-off error with kick vote to suspend vote transmogrification, converted epsy's TABS to spaces. Modified Paths: -------------- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp Modified: armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp =================================================================== --- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-03-19 00:55:29 UTC (rev 8349) +++ armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-03-19 11:06:46 UTC (rev 8350) @@ -578,13 +578,13 @@ return true; } - if ( se_votesSuspendTimeout > tSysTimeFloat() ) - { - sn_ConsoleOut(tOutput("$vote_rejected_voting_suspended"), + if ( se_votesSuspendTimeout > tSysTimeFloat() ) + { + sn_ConsoleOut(tOutput("$vote_rejected_voting_suspended"), senderID ); - return false; - } + return false; + } // fill suggestor if ( !suggestor_ ) @@ -1422,7 +1422,7 @@ { // check whether enough harmful votes were collected already ePlayerNetID * p = GetPlayer(); - if ( fromMenu_ && p && p->GetVoter()->HarmCount() - 1 < se_kickMinHarm ) + if ( fromMenu_ && p && p->GetVoter()->HarmCount() < se_kickMinHarm ) { // try to transfor the vote to a suspension eVoteItem * item = tNEW ( eVoteItemSuspend )( p ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2008-03-19 19:03:37
|
Revision: 8351 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8351&view=rev Author: z-man Date: 2008-03-19 12:03:27 -0700 (Wed, 19 Mar 2008) Log Message: ----------- Only clients really supporting the new votes get them now, and only they count for the totals. Undesired side effect so far: MIN_VOTERS is not taken into account properly, that still uses the total number of voters. Modified Paths: -------------- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp Modified: armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp =================================================================== --- armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-03-19 11:06:46 UTC (rev 8350) +++ armagetronad/branches/0.2.8/armagetronad/src/engine/eVoter.cpp 2008-03-19 19:03:27 UTC (rev 8351) @@ -189,13 +189,17 @@ return ret; } +static nVersionFeature serverControlledVotesBroken( 10 ); +static nVersionFeature serverControlledVotes( 15 ); + + // something to vote on class eVoteItem: public tListMember { friend class eMenuItemVote; public: // constructors/destructor - eVoteItem( void ): creationTime_( tSysTimeFloat() ), user_( 0 ), id_( ++se_votingItemID ), menuItem_( 0 ) + eVoteItem( void ): creationTime_( tSysTimeFloat() ), user_( 0 ), id_( ++se_votingItemID ), menuItem_( 0 ), total_( 0 ) { items_.Add( this ); }; @@ -253,22 +257,32 @@ } } - static nVersionFeature serverControlledVotes( 10 ); - // create messages for old and new clients tJUST_CONTROLLED_PTR< nMessage > retNew = this->CreateMessage(); tJUST_CONTROLLED_PTR< nMessage > retLegacy = this->CreateMessageLegacy(); + + // set so every voter ony gets each vote once + std::set< eVoter * > sentTo; + total_ = 0; + for ( int i = MAXCLIENTS; i > 0; --i ) { - if ( sn_Connections[ i ].socket && i != exceptTo && 0 != eVoter::GetVoter( i ) ) + eVoter * voter = eVoter::GetVoter( i ); + if ( sn_Connections[ i ].socket && i != exceptTo && 0 != voter && + sentTo.find(voter) == sentTo.end() ) { + if ( serverControlledVotes.Supported( i ) ) { + sentTo.insert(voter); retNew->Send( i ); + total_++; } else if ( retLegacy ) { + sentTo.insert(voter); retLegacy->Send( i ); + total_++; } } } @@ -474,7 +488,7 @@ { pro = voters_[1].Len(); con = voters_[0].Len(); - total = eVoter::voters_.Len(); + total = total_; } // message @@ -679,6 +693,7 @@ tArray< tCONTROLLED_PTR( eVoter ) > voters_[2]; // array of voters approving or disapproving of the vote unsigned short id_; // running id of voting item eMenuItemVote *menuItem_; // menu item + int total_; // total number of voters aware of this item eVoteItem& operator=( const eVoteItem& ); eVoteItem( const eVoteItem& ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |