void SurfaceStream_TripleBuffer::SurrenderSurfaces(SharedSurface*& producer, SharedSurface*& consumer) { mIsAlive = false; producer = Surrender(mProducer); consumer = Surrender(mConsumer); if (!consumer) consumer = Surrender(mStaging); }
void CGuildWarManager::NetworkMsgParse( BYTE Protocol, void* pMsg ) { switch( Protocol ) { case MP_GUILD_WAR_NACK: { MSG_BYTE* pmsg = (MSG_BYTE*)pMsg; CObject* object = g_pUserTable->FindUser( pmsg->dwObjectID ); if( object ) { object->SendMsg( pmsg, sizeof( MSG_BYTE ) ); } break; } case MP_GUILD_WAR_DECLARE: { Declare( pMsg ); break; } case MP_GUILD_WAR_DECLARE_NACK: { break; } case MP_GUILD_WAR_DECLARE_ACCEPT: { DeclareAccept( pMsg ); break; } case MP_GUILD_WAR_DECLARE_DENY: { DeclareDeny( pMsg ); break; } case MP_GUILD_WAR_DECLARE_DENY_NOTIFY_TOMAP: { DeclareDenyNotifyToMap( pMsg ); break; } case MP_GUILD_WAR_START: { break; } case MP_GUILD_WAR_START_NOTIFY_TOMAP: { StartNotifyToMap( pMsg ); break; } case MP_GUILD_WAR_PROC: { break; } case MP_GUILD_WAR_END: { break; } case MP_GUILD_WAR_END_NOTIFY_TOMAP: { MSG_DWORD2* pmsg = (MSG_DWORD2*)pMsg; DWORD dwGuildIdxWinner = pmsg->dwData1; DWORD dwGuildIdxLoser = pmsg->dwData2; if( dwGuildIdxWinner == 0 || dwGuildIdxLoser == 0 ) return; CGuild* pGuildWinner = GUILDMGR->GetGuild( dwGuildIdxWinner ); CGuild* pGuildLoser = GUILDMGR->GetGuild( dwGuildIdxLoser ); if( pGuildWinner == NULL || pGuildLoser == NULL ) return; MSG_DWORD2 Msg; Msg.Category = MP_GUILD_WAR; Msg.Protocol = MP_GUILD_WAR_END; // send guildwinner Msg.dwData1 = 1; // 0 = lose, 1 = win Msg.dwData2 = dwGuildIdxLoser; pGuildWinner->SendMsgToAll( &Msg, sizeof(Msg) ); // send guildloser Msg.dwData1 = 0; Msg.dwData2 = dwGuildIdxWinner; pGuildLoser->SendMsgToAll( &Msg, sizeof(Msg) ); // unregist UnregistGuildWar( dwGuildIdxWinner, dwGuildIdxLoser ); // PenaltyForEndNotifyToMap( 0, dwGuildIdxLoser ); // guildfieldwarrecord UpdateGuildWarRecord( FALSE, 0, dwGuildIdxLoser ); UpdateGuildWarRecord( FALSE, 1, dwGuildIdxWinner ); // registend //RegistEnd( dwGuildIdxWinner, dwGuildIdxLoser ); break; } case MP_GUILD_WAR_SUGGESTEND: { SuggestEnd( pMsg ); break; } case MP_GUILD_WAR_SUGGESTEND_NOTIFY_TOMAP: { const MSG_DWORD2* pmsg = (MSG_DWORD2*)pMsg; CObject* object = g_pUserTable->FindUser( pmsg->dwData1 ); if( object ) { MSG_DWORD message; message.Category = MP_GUILD_WAR; message.Protocol = MP_GUILD_WAR_SUGGESTEND; message.dwData = pmsg->dwData2; object->SendMsg( &message, sizeof(message) ); } break; } case MP_GUILD_WAR_SUGGESTEND_NACK: { break; } case MP_GUILD_WAR_SUGGESTEND_ACCEPT: { SuggestEndAccept( pMsg ); break; } case MP_GUILD_WAR_SUGGESTEND_ACCEPT_NOTIFY_TOMAP: { SuggestEndAcceptNotifyToMap( pMsg ); break; } case MP_GUILD_WAR_SUGGESTEND_DENY: { SuggestEndDeny( pMsg ); break; } case MP_GUILD_WAR_SUGGESTEND_DENY_NOTIFY_TOMAP: { SuggestEndDenyNotifyToMap( pMsg ); break; } case MP_GUILD_WAR_SURRENDER: { Surrender( pMsg ); break; } case MP_GUILD_WAR_SURRENDER_NACK: { break; } case MP_GUILD_WAR_SURRENDER_NOTIFY_TOMAP: { SurrenderNotifyToMap( pMsg ); break; } case MP_GUILD_WAR_ADDMONEY_TOMAP: { AddMoneyToMap( pMsg ); break; } default: { ASSERT( 0 && "It is not defined" ); break; } } }