Stardew Engine
Loading...
Searching...
No Matches
Game2DLayerNetwork.h File Reference

Networking layer specific to game 2d layer. More...

#include <stdbool.h>
#include "IntTypes.h"
Include dependency graph for Game2DLayerNetwork.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  TilemapEdit
 
struct  UserGame2DRPC
 An RPC implemented by a users game. More...
 
struct  AdjustNetID_RPC
 
struct  CreateEntity_RPC
 
struct  DeleteEntity_RPC
 

Typedefs

typedef void(* RPCMessageConstructorFn) (struct BinarySerializer *pBS, void *pRPCStruct)
 callback to construct an rpc message of a given type, pRPCStruct is a struct containing relevant data to construct your rpc message
 
typedef void(* RPCMessageHandlerFn) (struct BinarySerializer *pBS, struct GameLayer2DData *pData, int client)
 callback to handle an RPC message, to be read from the binary serializer, passed Game2DLayerData* so the RPC can do stuff
 
typedef void(* PacketExtensionNoArgsFn) (struct BinarySerializer *)
 

Enumerations

enum  G2DPacketType { G2DPacket_RequestLevelData , G2DPacket_LevelDataResponseData , G2DPacket_RPC , G2DPacket_WorldState }
 
enum  Game2DRPCType { G2DRPC_CreateEntity , G2DRPC_DestroyEntity , G2DRPC_AdjustNetworkID , G2DRPC_LastEngineRPC }
 

Functions

void G2D_RegisterUserRPC (struct UserGame2DRPC *rpc)
 Register a user RPC, call once at startup, call in order your games rpc types appear in the enum.
 
void G2D_Extend_RequestLevelDataMessage (PacketExtensionNoArgsFn fn)
 extend the packet that the client sends to request level data from the server. By default tile maps and serialized entities are included, this callback is called before this Game2DLayer managed level data is serialized - see WfNetwork.c
 
void G2D_Enqueue_RequestLevelData ()
 TODO: should really be static to this file, probably.
 
enum G2DPacketType G2D_ParsePacket (u8 *pPacket, u8 **pOutBody, int *outHeaderSize)
 
void G2D_Enqueue_Worldstate_Packet (struct GameLayer2DData *pData, int clientI)
 Enqueue a packet that will cause all entities with bSerializeInNetworkUpdate == true to be saved into a packet, the serializer context will be SCTX_NetworkUpdate.
 
enum Game2DRPCType G2D_ParseRPCPacket (u8 *packet, u8 **pOutBody)
 
void G2D_DoRPC (struct GameFrameworkLayer *pLayer, struct GameLayer2DData *pData, u8 *pRPCData, int client)
 do RPCs, call once a packet has been confirmed as a G2DPacket_RPC, call on both client and server
 
void G2D_PollNetworkQueueClient (struct GameFrameworkLayer *pLayer, float deltaT)
 
void G2D_PollNetworkQueueServer (struct GameFrameworkLayer *pLayer, float deltaT)
 
void G2D_SendRPC (int client, enum Game2DRPCType type, void *pRPCData)
 Send an RPC.
 
struct Entity2DG2D_FindEntityWithNetID (struct Entity2DCollection *pCollection, int netID)
 try to find the entity with a given net ID
 
bool G2D_IsClientConnected (int i)
 call from the game thread if you're the server to determine if a client is connected
 

Detailed Description

Networking layer specific to game 2d layer.

Typedef Documentation

◆ PacketExtensionNoArgsFn

typedef void(* PacketExtensionNoArgsFn) (struct BinarySerializer *)

◆ RPCMessageConstructorFn

typedef void(* RPCMessageConstructorFn) (struct BinarySerializer *pBS, void *pRPCStruct)

callback to construct an rpc message of a given type, pRPCStruct is a struct containing relevant data to construct your rpc message

◆ RPCMessageHandlerFn

typedef void(* RPCMessageHandlerFn) (struct BinarySerializer *pBS, struct GameLayer2DData *pData, int client)

callback to handle an RPC message, to be read from the binary serializer, passed Game2DLayerData* so the RPC can do stuff

Enumeration Type Documentation

◆ G2DPacketType

Enumerator
G2DPacket_RequestLevelData 
G2DPacket_LevelDataResponseData 
G2DPacket_RPC 
G2DPacket_WorldState 

◆ Game2DRPCType

Enumerator
G2DRPC_CreateEntity 
G2DRPC_DestroyEntity 
G2DRPC_AdjustNetworkID 
G2DRPC_LastEngineRPC 

Function Documentation

◆ G2D_DoRPC()

void G2D_DoRPC ( struct GameFrameworkLayer pLayer,
struct GameLayer2DData pData,
u8 pRPCData,
int  client 
)

do RPCs, call once a packet has been confirmed as a G2DPacket_RPC, call on both client and server

Parameters
pData
pRPCData
clientthe number of the client who has sent the RPC, or -1 if the server has sent it and you are a client

◆ G2D_Enqueue_RequestLevelData()

void G2D_Enqueue_RequestLevelData ( )

TODO: should really be static to this file, probably.

◆ G2D_Enqueue_Worldstate_Packet()

void G2D_Enqueue_Worldstate_Packet ( struct GameLayer2DData pData,
int  clientI 
)

Enqueue a packet that will cause all entities with bSerializeInNetworkUpdate == true to be saved into a packet, the serializer context will be SCTX_NetworkUpdate.

Parameters
pDataThe Game2dLayer
clientIThe client index to send to - only relevant if you're the server

◆ G2D_Extend_RequestLevelDataMessage()

void G2D_Extend_RequestLevelDataMessage ( PacketExtensionNoArgsFn  fn)

extend the packet that the client sends to request level data from the server. By default tile maps and serialized entities are included, this callback is called before this Game2DLayer managed level data is serialized - see WfNetwork.c

Parameters
fncallback to call

◆ G2D_FindEntityWithNetID()

struct Entity2D * G2D_FindEntityWithNetID ( struct Entity2DCollection pCollection,
int  netID 
)

try to find the entity with a given net ID

Parameters
pCollectioncollection to search
netIDnetID to search for
Returns
NULL if not found

◆ G2D_IsClientConnected()

bool G2D_IsClientConnected ( int  i)

call from the game thread if you're the server to determine if a client is connected

Parameters
i
Returns

◆ G2D_ParsePacket()

enum G2DPacketType G2D_ParsePacket ( u8 pPacket,
u8 **  pOutBody,
int *  outHeaderSize 
)

◆ G2D_ParseRPCPacket()

enum Game2DRPCType G2D_ParseRPCPacket ( u8 packet,
u8 **  pOutBody 
)
Parameters
packet
pOutBody

◆ G2D_PollNetworkQueueClient()

void G2D_PollNetworkQueueClient ( struct GameFrameworkLayer pLayer,
float  deltaT 
)

◆ G2D_PollNetworkQueueServer()

void G2D_PollNetworkQueueServer ( struct GameFrameworkLayer pLayer,
float  deltaT 
)

◆ G2D_RegisterUserRPC()

void G2D_RegisterUserRPC ( struct UserGame2DRPC rpc)

Register a user RPC, call once at startup, call in order your games rpc types appear in the enum.

Parameters
rpc

◆ G2D_SendRPC()

void G2D_SendRPC ( int  client,
enum Game2DRPCType  type,
void *  pRPCData 
)

Send an RPC.

Parameters
clientclient to send to - send -1 if you're a client yourself
typetype of rpc to send
pRPCDataa struct appropriate to construct the rpc message - see src