Synchronized TTC speed setting
This commit is contained in:
parent
8c1ec4beba
commit
333a77b647
|
@ -13,14 +13,18 @@ static u8 remoteFinishedEventId[2] = { (u8)-1, (u8)-1 };
|
||||||
static u8 seqId = 0;
|
static u8 seqId = 0;
|
||||||
static u8 remoteLastSeqId = (u8)-1;
|
static u8 remoteLastSeqId = (u8)-1;
|
||||||
|
|
||||||
|
extern s16 gTTCSpeedSetting;
|
||||||
extern s16 D_80339EE0;
|
extern s16 D_80339EE0;
|
||||||
extern u8 gControlledWarp; // two-player hack
|
extern u8 gControlledWarp; // two-player hack
|
||||||
extern u8 gReceiveWarp;
|
extern u8 gReceiveWarp;
|
||||||
extern struct WarpDest gReceiveWarpDest;
|
extern struct WarpDest gReceiveWarpDest;
|
||||||
|
|
||||||
s16 saved_D_80339EE0 = 0;
|
struct SavedWarpValues {
|
||||||
struct WarpDest savedWarpNode = { 0 };
|
struct WarpDest warpDest;
|
||||||
s8 savedInWarpCheckpoint = 0;
|
s8 inWarpCheckpoint;
|
||||||
|
s16 ttcSpeedSetting;
|
||||||
|
s16 D_80339EE0;
|
||||||
|
} saved = { 0 };
|
||||||
|
|
||||||
static clock_t lastDoneEvent = 0;
|
static clock_t lastDoneEvent = 0;
|
||||||
static bool isInWarp = FALSE;
|
static bool isInWarp = FALSE;
|
||||||
|
@ -33,6 +37,7 @@ struct PacketLevelWarpData {
|
||||||
u8 controlledWarp;
|
u8 controlledWarp;
|
||||||
struct WarpDest warpDest;
|
struct WarpDest warpDest;
|
||||||
s8 inWarpCheckpoint;
|
s8 inWarpCheckpoint;
|
||||||
|
s16 ttcSpeedSetting;
|
||||||
s16 D_80339EE0;
|
s16 D_80339EE0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,16 +46,18 @@ static void populate_packet_data(struct PacketLevelWarpData* data, bool done, u8
|
||||||
data->eventId = packetEventId;
|
data->eventId = packetEventId;
|
||||||
data->done = done;
|
data->done = done;
|
||||||
data->controlledWarp = gControlledWarp;
|
data->controlledWarp = gControlledWarp;
|
||||||
data->warpDest = savedWarpNode;
|
data->warpDest = saved.warpDest;
|
||||||
data->inWarpCheckpoint = savedInWarpCheckpoint;
|
data->inWarpCheckpoint = saved.inWarpCheckpoint;
|
||||||
data->D_80339EE0 = saved_D_80339EE0;
|
data->ttcSpeedSetting = saved.ttcSpeedSetting;
|
||||||
|
data->D_80339EE0 = saved.D_80339EE0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void network_send_level_warp_begin(void) {
|
void network_send_level_warp_begin(void) {
|
||||||
isInWarp = TRUE;
|
isInWarp = TRUE;
|
||||||
savedWarpNode = sWarpDest;
|
saved.warpDest = sWarpDest;
|
||||||
savedInWarpCheckpoint = gInWarpCheckpoint;
|
saved.inWarpCheckpoint = gInWarpCheckpoint;
|
||||||
saved_D_80339EE0 = D_80339EE0;
|
saved.ttcSpeedSetting = gTTCSpeedSetting;
|
||||||
|
saved.D_80339EE0 = D_80339EE0;
|
||||||
|
|
||||||
float elapsedSinceDone = (clock() - lastDoneEvent) / CLOCKS_PER_SEC;
|
float elapsedSinceDone = (clock() - lastDoneEvent) / CLOCKS_PER_SEC;
|
||||||
gControlledWarp = (elapsedSinceDone < 1.0f)
|
gControlledWarp = (elapsedSinceDone < 1.0f)
|
||||||
|
@ -106,9 +113,10 @@ static void network_send_level_warp_done(u8 remoteEventId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_warp(void) {
|
static void do_warp(void) {
|
||||||
gReceiveWarpDest = savedWarpNode;
|
gReceiveWarpDest = saved.warpDest;
|
||||||
gInWarpCheckpoint = savedInWarpCheckpoint;
|
gInWarpCheckpoint = saved.inWarpCheckpoint;
|
||||||
D_80339EE0 = saved_D_80339EE0;
|
gTTCSpeedSetting = saved.ttcSpeedSetting;
|
||||||
|
D_80339EE0 = saved.D_80339EE0;
|
||||||
gReceiveWarp = TRUE;
|
gReceiveWarp = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,9 +155,12 @@ void network_receive_level_warp(struct Packet* p) {
|
||||||
// client initiated warp
|
// client initiated warp
|
||||||
LOG_INFO("client initiated warp!");
|
LOG_INFO("client initiated warp!");
|
||||||
gControlledWarp = !remote.controlledWarp; // two-player hack
|
gControlledWarp = !remote.controlledWarp; // two-player hack
|
||||||
savedWarpNode = remote.warpDest;
|
|
||||||
savedInWarpCheckpoint = remote.inWarpCheckpoint;
|
saved.warpDest = remote.warpDest;
|
||||||
saved_D_80339EE0 = remote.D_80339EE0;
|
saved.inWarpCheckpoint = remote.inWarpCheckpoint;
|
||||||
|
saved.ttcSpeedSetting = remote.ttcSpeedSetting;
|
||||||
|
saved.D_80339EE0 = remote.D_80339EE0;
|
||||||
|
|
||||||
do_warp();
|
do_warp();
|
||||||
network_send_level_warp_done(remote.eventId);
|
network_send_level_warp_done(remote.eventId);
|
||||||
return;
|
return;
|
||||||
|
@ -172,9 +183,12 @@ void network_receive_level_warp(struct Packet* p) {
|
||||||
// server initiated warp
|
// server initiated warp
|
||||||
LOG_INFO("server initiated warp!");
|
LOG_INFO("server initiated warp!");
|
||||||
gControlledWarp = !remote.controlledWarp; // two-player hack
|
gControlledWarp = !remote.controlledWarp; // two-player hack
|
||||||
savedWarpNode = remote.warpDest;
|
|
||||||
savedInWarpCheckpoint = remote.inWarpCheckpoint;
|
saved.warpDest = remote.warpDest;
|
||||||
saved_D_80339EE0 = remote.D_80339EE0;
|
saved.inWarpCheckpoint = remote.inWarpCheckpoint;
|
||||||
|
saved.ttcSpeedSetting = remote.ttcSpeedSetting;
|
||||||
|
saved.D_80339EE0 = remote.D_80339EE0;
|
||||||
|
|
||||||
LOG_INFO("finished event [%d]!", remote.eventId);
|
LOG_INFO("finished event [%d]!", remote.eventId);
|
||||||
do_warp();
|
do_warp();
|
||||||
network_send_level_warp_done(remote.eventId);
|
network_send_level_warp_done(remote.eventId);
|
||||||
|
|
Loading…
Reference in New Issue