Skip to content

Commit

Permalink
Patch out pointer control (new method sucks but ok I guess)
Browse files Browse the repository at this point in the history
  • Loading branch information
Buggem committed Jan 26, 2025
1 parent ec132ac commit 62ecc83
Showing 1 changed file with 18 additions and 14 deletions.
32 changes: 18 additions & 14 deletions desktop_version/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,12 @@ static volatile Uint64 f_timePrev = 0;
#endif

// RPC variables
static const char* rpcArea = "";
static const char* rpcRoomname = "";

#define RPC_SAFE_BUFFER 256
// change to what you want if it suits other languages

static char rpcArea[RPC_SAFE_BUFFER] = "";
static char rpcRoomname[RPC_SAFE_BUFFER] = "";
static enum GameGamestate rpcGameState;


Expand Down Expand Up @@ -992,41 +996,41 @@ static enum LoopCode loop_begin(void)
rpcGameState = game.gamestate;
if (rpcGameState == TITLEMODE)
{
rpcArea = "Exploring the Menus";
rpcRoomname = "";
SDL_strlcpy(rpcArea, "Exploring the Menus", RPC_SAFE_BUFFER-1);
SDL_strlcpy(rpcRoomname, "", RPC_SAFE_BUFFER-1);
}
else if (rpcGameState == EDITORMODE)
{
rpcArea = "Making a Level";
rpcRoomname = "";
SDL_strlcpy(rpcArea, "Making a Level", RPC_SAFE_BUFFER-1);
SDL_strlcpy(rpcRoomname, "", RPC_SAFE_BUFFER-1);
}
else
{
rpcArea = map.currentarea(game.roomx, game.roomy);
rpcRoomname = map.roomname;
SDL_strlcpy(rpcArea, map.currentarea(game.roomx, game.roomy), RPC_SAFE_BUFFER-1);
SDL_strlcpy(rpcRoomname, map.roomname, RPC_SAFE_BUFFER-1);
}
NETWORK_setRPC(rpcArea, rpcRoomname);
}
else
{
const char *nextArea, *nextRoom;
char nextArea[RPC_SAFE_BUFFER] = "", nextRoom[RPC_SAFE_BUFFER] = "";

// Dirty fix for custom levels getting the area from Dimension VVVVVV
if (map.custommode)
{
nextArea = game.customleveltitle.c_str();
SDL_strlcpy(nextArea, game.customleveltitle.c_str(), RPC_SAFE_BUFFER-1);
}
else
{
nextArea = map.currentarea(game.roomx, game.roomy);
SDL_strlcpy(nextArea, map.currentarea(game.roomx, game.roomy), RPC_SAFE_BUFFER-1);
}
nextRoom = map.roomname;
SDL_strlcpy(nextRoom, map.roomname, RPC_SAFE_BUFFER-1);
//printf("room %s == %s, area %s == %s\n", rpcRoomname, nextRoom, rpcArea, nextArea);
if ((SDL_strcmp(rpcArea, nextArea) != 0) || (SDL_strcmp(rpcRoomname, nextRoom) != 0))
{
// FIXME BEFORE PUSHING!!: These pointers aren't safe to use and result in RPC not updating when it needs to.
rpcArea = nextArea;
rpcRoomname = nextRoom;
SDL_strlcpy(rpcArea, nextArea, RPC_SAFE_BUFFER-1);
SDL_strlcpy(rpcRoomname, nextRoom, RPC_SAFE_BUFFER-1);
NETWORK_setRPC(rpcArea, rpcRoomname);
}
}
Expand Down

0 comments on commit 62ecc83

Please sign in to comment.