mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-25 15:19:53 -06:00
maybe it'll work better this way
(go eat, Arisotura)
This commit is contained in:
@ -194,6 +194,8 @@ Player MyPlayer;
|
|||||||
u32 HostAddress;
|
u32 HostAddress;
|
||||||
bool Lag;
|
bool Lag;
|
||||||
|
|
||||||
|
int NumMirrorClients;
|
||||||
|
|
||||||
struct InputFrame
|
struct InputFrame
|
||||||
{
|
{
|
||||||
u32 FrameNum;
|
u32 FrameNum;
|
||||||
@ -232,6 +234,8 @@ bool Init()
|
|||||||
memset(Players, 0, sizeof(Players));
|
memset(Players, 0, sizeof(Players));
|
||||||
NumPlayers = 0;
|
NumPlayers = 0;
|
||||||
|
|
||||||
|
NumMirrorClients = 0;
|
||||||
|
|
||||||
for (int i = 0; i < Blob_MAX; i++)
|
for (int i = 0; i < Blob_MAX; i++)
|
||||||
{
|
{
|
||||||
Blobs[i] = nullptr;
|
Blobs[i] = nullptr;
|
||||||
@ -282,6 +286,8 @@ void StartHost(const char* playername, int port)
|
|||||||
|
|
||||||
HostAddress = 0x0100007F;
|
HostAddress = 0x0100007F;
|
||||||
|
|
||||||
|
NumMirrorClients = 0;
|
||||||
|
|
||||||
ENetAddress mirroraddr;
|
ENetAddress mirroraddr;
|
||||||
mirroraddr.host = ENET_HOST_ANY;
|
mirroraddr.host = ENET_HOST_ANY;
|
||||||
mirroraddr.port = port + 1;
|
mirroraddr.port = port + 1;
|
||||||
@ -647,7 +653,7 @@ void StartGame()
|
|||||||
SpawnMirrorInstance(Players[i]);
|
SpawnMirrorInstance(Players[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
SyncMirrorClients();
|
//SyncMirrorClients();
|
||||||
|
|
||||||
// tell remote peers to start game
|
// tell remote peers to start game
|
||||||
u8 cmd[1] = {0x04};
|
u8 cmd[1] = {0x04};
|
||||||
@ -664,7 +670,7 @@ void StartGame()
|
|||||||
// 3. load state
|
// 3. load state
|
||||||
|
|
||||||
// start game locally
|
// start game locally
|
||||||
StartLocal();
|
//StartLocal();
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartLocal()
|
void StartLocal()
|
||||||
@ -805,6 +811,8 @@ void ProcessClient()
|
|||||||
{
|
{
|
||||||
if (event.packet->dataLength != 2) break;
|
if (event.packet->dataLength != 2) break;
|
||||||
|
|
||||||
|
NumMirrorClients = 0;
|
||||||
|
|
||||||
// create mirror host
|
// create mirror host
|
||||||
ENetAddress mirroraddr;
|
ENetAddress mirroraddr;
|
||||||
mirroraddr.host = ENET_HOST_ANY;
|
mirroraddr.host = ENET_HOST_ANY;
|
||||||
@ -852,13 +860,13 @@ printf("client mirror host connecting to %08X:%d\n", mirroraddr.host, mirroraddr
|
|||||||
SpawnMirrorInstance(Players[i]);
|
SpawnMirrorInstance(Players[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
SyncMirrorClients();
|
//SyncMirrorClients();
|
||||||
printf("bourf\n");
|
printf("bourf\n");
|
||||||
// tell other mirror instances to start the game
|
// tell other mirror instances to start the game
|
||||||
//IPC::SendCommand(0xFFFF, IPC::Cmd_Start, 0, nullptr);
|
//IPC::SendCommand(0xFFFF, IPC::Cmd_Start, 0, nullptr);
|
||||||
printf("birf\n");
|
printf("birf\n");
|
||||||
// start game locally
|
// start game locally
|
||||||
StartLocal();
|
//StartLocal();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -880,13 +888,26 @@ void ProcessMirrorHost()
|
|||||||
{
|
{
|
||||||
case ENET_EVENT_TYPE_CONNECT:
|
case ENET_EVENT_TYPE_CONNECT:
|
||||||
printf("[MIRROR HOST] mirror client connected\n");
|
printf("[MIRROR HOST] mirror client connected\n");
|
||||||
|
NumMirrorClients++;
|
||||||
event.peer->data = (void*)0;
|
event.peer->data = (void*)0;
|
||||||
|
|
||||||
|
if (NumMirrorClients > NumPlayers)
|
||||||
|
{
|
||||||
|
printf("??????\n");
|
||||||
|
}
|
||||||
|
else if (NumMirrorClients == NumPlayers)
|
||||||
|
{
|
||||||
|
// all mirror clients are connected, we're ready to go
|
||||||
|
SyncMirrorClients();
|
||||||
|
StartLocal();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ENET_EVENT_TYPE_DISCONNECT:
|
case ENET_EVENT_TYPE_DISCONNECT:
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
printf("[MIRROR HOST] mirror client disconnected\n");
|
printf("[MIRROR HOST] mirror client disconnected\n");
|
||||||
|
NumMirrorClients--;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user