Misc netplay cleanup.
This commit is contained in:
parent
d0f05291e7
commit
011bcfee34
|
@ -265,7 +265,7 @@ void CWII_IPC_HLE_WiiMote::ExecuteL2capCmd(u8* _pData, u32 _Size)
|
|||
_dbg_assert_msg_(WII_IPC_WIIMOTE, DoesChannelExist(pHeader->dcid), "L2CAP: SendACLPacket to unknown channel %i", pHeader->dcid);
|
||||
CChannelMap::iterator itr= m_Channel.find(pHeader->dcid);
|
||||
|
||||
const int number = NetPlay_GetWiimoteNum(m_ConnectionHandle & 0xFF);
|
||||
const int number = m_ConnectionHandle & 0xFF;
|
||||
|
||||
if (itr != m_Channel.end())
|
||||
{
|
||||
|
|
|
@ -56,7 +56,6 @@ public:
|
|||
void ReceiveL2capData(u16 scid, const void* _pData, u32 _Size); // From wiimote
|
||||
|
||||
int NetPlay_GetWiimoteNum(int _number);
|
||||
bool NetPlay_WiimoteInput(int _number, u16 _channelID, const void* _pData, u32& _Size);
|
||||
|
||||
void EventConnectionAccepted();
|
||||
void EventDisconnect();
|
||||
|
|
|
@ -263,7 +263,7 @@ unsigned int NetPlayClient::OnData(sf::Packet& packet)
|
|||
delete[] data;
|
||||
|
||||
// trusting server for good map value (>=0 && <4)
|
||||
// add to pad buffer
|
||||
// add to wiimote buffer
|
||||
m_wiimote_buffer[(unsigned)map].Push(nw);
|
||||
}
|
||||
break;
|
||||
|
@ -455,13 +455,6 @@ bool NetPlayClient::StartGame(const std::string &path)
|
|||
{
|
||||
std::lock_guard<std::recursive_mutex> lkg(m_crit.game);
|
||||
|
||||
//wtf?
|
||||
if (m_target_buffer_size > 100)
|
||||
{
|
||||
m_target_buffer_size = 20;
|
||||
NOTICE_LOG(NETPLAY,"WHYYYYYYYYYYYY");
|
||||
}
|
||||
|
||||
// tell server i started the game
|
||||
sf::Packet spac;
|
||||
spac << (MessageId)NP_MSG_START_GAME;
|
||||
|
@ -487,12 +480,6 @@ bool NetPlayClient::StartGame(const std::string &path)
|
|||
// boot game
|
||||
m_dialog->BootGame(path);
|
||||
|
||||
// temporary
|
||||
//NetWiimote nw;
|
||||
//for (unsigned int i = 0; i<4; ++i)
|
||||
//for (unsigned int f = 0; f<2; ++f)
|
||||
//m_wiimote_buffer[i].Push(nw);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -584,7 +571,7 @@ bool NetPlayClient::WiimoteUpdate(int _number, u8* data, u8 size)
|
|||
// in game mapping for this local wiimote
|
||||
unsigned int in_game_num = m_local_player->wiimote_map[_number];
|
||||
|
||||
// does this local pad map in game?
|
||||
// does this local wiimote map in game?
|
||||
if (in_game_num < 4)
|
||||
{
|
||||
static u8 previousSize = 0;
|
||||
|
@ -595,7 +582,6 @@ bool NetPlayClient::WiimoteUpdate(int _number, u8* data, u8 size)
|
|||
m_wiimote_buffer[_number].Clear();
|
||||
}
|
||||
|
||||
//m_wiimote_input[in_game_num].data.resize(m_wiimote_input[_number].size + 1);
|
||||
m_wiimote_input[in_game_num].data.assign(data, data + size);
|
||||
m_wiimote_input[in_game_num].size = size;
|
||||
while (m_wiimote_buffer[in_game_num].Size() <= m_target_buffer_size)
|
||||
|
@ -623,15 +609,19 @@ bool NetPlayClient::WiimoteUpdate(int _number, u8* data, u8 size)
|
|||
// This is either a desync, or the reporting mode changed. No way to really be sure...
|
||||
if (size != nw.size)
|
||||
{
|
||||
u8 tries = 0;
|
||||
// Clear the buffer and wait for new input, in case it was just the reporting mode changing as expected.
|
||||
do
|
||||
{
|
||||
m_wiimote_buffer[_number].Pop(nw);
|
||||
while (!m_wiimote_buffer[_number].Pop(nw))
|
||||
{
|
||||
Common::SleepCurrentThread(1);
|
||||
if (false == m_is_running)
|
||||
return false;
|
||||
|
||||
// TODO: break if this runs too long; it probably desynced if it runs for longer than the buffer size
|
||||
}
|
||||
++tries;
|
||||
if (tries > m_target_buffer_size)
|
||||
break;
|
||||
} while (nw.size != size);
|
||||
|
||||
// If it still mismatches, it surely desynced
|
||||
|
@ -746,43 +736,6 @@ u8 CSIDevice_DanceMat::NetPlay_GetPadNum(u8 numPAD)
|
|||
return CSIDevice_GCController::NetPlay_GetPadNum(numPAD);
|
||||
}
|
||||
|
||||
// called from ---CPU--- thread
|
||||
//
|
||||
int CWII_IPC_HLE_WiiMote::NetPlay_GetWiimoteNum(int _number)
|
||||
{
|
||||
// std::lock_guard<std::mutex> lk(crit_netplay_client);
|
||||
|
||||
// if (netplay_client)
|
||||
// return netplay_client->GetPadNum(_number+4);
|
||||
// else
|
||||
return _number;
|
||||
}
|
||||
|
||||
// called from ---CPU--- thread
|
||||
// intercept wiimote input callback
|
||||
//bool CWII_IPC_HLE_WiiMote::NetPlay_WiimoteInput(int _number, u16 _channelID, const void* _pData, u32& _Size)
|
||||
bool CWII_IPC_HLE_WiiMote::NetPlay_WiimoteInput(int, u16, const void*, u32&)
|
||||
{
|
||||
std::lock_guard<std::mutex> lk(crit_netplay_client);
|
||||
|
||||
if (netplay_client)
|
||||
//{
|
||||
// if (_Size >= RPT_SIZE_HACK)
|
||||
// {
|
||||
// _Size -= RPT_SIZE_HACK;
|
||||
// return false;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// netplay_client->WiimoteInput(_number, _channelID, _pData, _Size);
|
||||
// // don't use this packet
|
||||
return true;
|
||||
// }
|
||||
//}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
bool NetPlay::IsNetPlayRunning()
|
||||
{
|
||||
return netplay_client != NULL;
|
||||
|
|
|
@ -49,6 +49,7 @@ NetPlayServer::NetPlayServer(const u16 port) : is_connected(false), m_is_running
|
|||
m_do_loop = true;
|
||||
m_selector.Add(m_socket);
|
||||
m_thread = std::thread(std::mem_fun(&NetPlayServer::ThreadFunc), this);
|
||||
m_target_buffer_size = 20;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue