mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 20:15:17 +00:00
When client selects to save, server will save
This commit is contained in:
parent
7fbae9cc05
commit
20ab5ec9f6
4 changed files with 29 additions and 0 deletions
|
@ -346,6 +346,11 @@ static void save_file_bswap(struct SaveBuffer *buf) {
|
|||
}
|
||||
|
||||
void save_file_do_save(s32 fileIndex) {
|
||||
if (gNetworkType != NT_SERVER) {
|
||||
if (gNetworkType == NT_CLIENT) { network_send_save_file(fileIndex); }
|
||||
return;
|
||||
}
|
||||
|
||||
if (fileIndex < 0 || fileIndex >= NUM_SAVE_FILES)
|
||||
return;
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ void packet_receive(struct Packet* p) {
|
|||
case PACKET_KICK: network_receive_kick(p); break;
|
||||
case PACKET_KEEP_ALIVE: network_receive_keep_alive(p); break;
|
||||
case PACKET_LEAVING: network_receive_leaving(p); break;
|
||||
case PACKET_SAVE_FILE: network_receive_save_file(p); break;
|
||||
///
|
||||
case PACKET_CUSTOM: network_receive_custom(p); break;
|
||||
default: LOG_ERROR("received unknown packet: %d", p->buffer[0]);
|
||||
|
|
|
@ -28,6 +28,7 @@ enum PacketType {
|
|||
PACKET_KICK,
|
||||
PACKET_KEEP_ALIVE,
|
||||
PACKET_LEAVING,
|
||||
PACKET_SAVE_FILE,
|
||||
///
|
||||
PACKET_CUSTOM = 255,
|
||||
};
|
||||
|
@ -143,4 +144,8 @@ void network_receive_keep_alive(struct Packet* p);
|
|||
void network_send_leaving(u8 globalIndex);
|
||||
void network_receive_leaving(struct Packet* p);
|
||||
|
||||
// packet_save_file.c
|
||||
void network_send_save_file(s32 fileIndex);
|
||||
void network_receive_save_file(struct Packet* p);
|
||||
|
||||
#endif
|
||||
|
|
18
src/pc/network/packets/packet_save_file.c
Normal file
18
src/pc/network/packets/packet_save_file.c
Normal file
|
@ -0,0 +1,18 @@
|
|||
#include <stdio.h>
|
||||
#include "../network.h"
|
||||
#include "game/save_file.h"
|
||||
|
||||
void network_send_save_file(s32 fileIndex) {
|
||||
assert(gNetworkType == NT_CLIENT);
|
||||
struct Packet p;
|
||||
packet_init(&p, PACKET_SAVE_FILE, true);
|
||||
packet_write(&p, &fileIndex, sizeof(s32));
|
||||
network_send_to(gNetworkPlayerServer->localIndex, &p);
|
||||
}
|
||||
|
||||
void network_receive_save_file(struct Packet* p) {
|
||||
if (gNetworkType != NT_SERVER) { return; }
|
||||
s32 fileIndex = 0;
|
||||
packet_read(p, &fileIndex, sizeof(s32));
|
||||
save_file_do_save(fileIndex);
|
||||
}
|
Loading…
Reference in a new issue