SuperTuxKart
|
Classes | |
struct | Action |
Public Member Functions | |
GameProtocol () | |
Constructor. | |
virtual bool | notifyEventAsynchronous (Event *event) OVERRIDE |
Called when a message from a remote GameProtocol is received. | |
virtual void | update (int ticks) OVERRIDE |
Called by the protocol listener, synchronously with the main loop. | |
void | sendActions () |
Synchronous update - will send all commands collected during the last frame (and could optional only send messages every N frames). | |
void | controllerAction (int kart_id, PlayerAction action, int value, int val_l, int val_r) |
Called from the local kart controller when an action (like steering, acceleration, ...) was triggered. | |
void | startNewState () |
Called by the server before assembling a new message containing the full state of the race to be sent to a client. | |
void | addState (BareNetworkString *buffer) |
Called by a server to add data to the current state. | |
void | sendState () |
Called when the last state information has been added and the message can be sent to the clients. | |
void | finalizeState (std::vector< std::string > &cur_rewinder) |
Called by a server to finalize the current state, which add updated names of rewinder using to the beginning of state buffer. | |
void | sendItemEventConfirmation (int ticks) |
Sends a confirmation to the server that all item events up to 'ticks' have been received. | |
virtual void | undo (BareNetworkString *buffer) OVERRIDE |
Called from the RewindManager when rolling back. | |
virtual void | rewind (BareNetworkString *buffer) OVERRIDE |
Called from the RewindManager after a rollback to replay the stored events. | |
virtual void | setup () OVERRIDE |
Called when the protocol is going to start. | |
virtual void | asynchronousUpdate () OVERRIDE |
Called by the protocol listener as often as possible. | |
NetworkString * | getState () const |
Returns the NetworkString in which a state was saved. | |
std::unique_lock< std::mutex > | acquireWorldDeletingMutex () const |
![]() | |
Protocol (ProtocolType type) | |
Constructor Sets the basic protocol parameters, as the callback object and the protocol type. | |
virtual | ~Protocol () |
Destructor. | |
virtual void | setup ()=0 |
Called when the protocol is going to start. | |
virtual void | update (int ticks)=0 |
Called by the protocol listener, synchronously with the main loop. | |
virtual void | asynchronousUpdate ()=0 |
Called by the protocol listener as often as possible. | |
NetworkString * | getNetworkString (size_t capacity=16) const |
functions to check incoming data easily | |
bool | checkDataSize (Event *event, unsigned int minimum_size) |
Checks if the message has at least the specified size, and if not prints a warning message including the message content. | |
void | sendMessageToPeers (NetworkString *message, bool reliable=true) |
Sends a message to all validated peers in game, encrypt the message if needed. | |
void | sendMessageToPeersInServer (NetworkString *message, bool reliable=true) |
Sends a message to all validated peers in server, encrypt the message if needed. | |
void | sendToServer (NetworkString *message, bool reliable=true) |
Sends a message from a client to the server. | |
virtual void | requestStart () |
Starts a request in the protocol manager to start this protocol. | |
virtual void | requestTerminate () |
Submits a request to the ProtocolManager to terminate this protocol. | |
virtual bool | notifyEvent (Event *event) |
Notify a protocol matching the Event type of that event. | |
virtual bool | notifyEventAsynchronous (Event *event) |
Notify a protocol matching the Event type of that event. | |
ProtocolType | getProtocolType () const |
Method to get a protocol's type. | |
void | setHandleConnections (bool b) |
Sets if this protocol should receive connection events. | |
void | setHandleDisconnections (bool b) |
Sets if this protocol should receive disconnection events. | |
virtual bool | handleConnects () const |
Return true if this protocol should be informed about connects. | |
virtual bool | handleDisconnects () const |
Return true if this protocol should be informed about disconnects. | |
![]() | |
EventRewinder () | |
Constructor. | |
virtual | ~EventRewinder () |
Destructor. | |
virtual void | undo (BareNetworkString *buffer)=0 |
Called when an event needs to be undone. | |
virtual void | rewind (BareNetworkString *buffer)=0 |
Called when an event needs to be replayed. | |
Static Public Member Functions | |
static std::shared_ptr< GameProtocol > | createInstance () |
static bool | emptyInstance () |
static std::shared_ptr< GameProtocol > | lock () |
Private Types | |
enum | { GP_CONTROLLER_ACTION , GP_STATE , GP_ITEM_UPDATE , GP_ITEM_CONFIRMATION , GP_ADJUST_TIME } |
The type of game events to be forwarded to the server. | |
Private Member Functions | |
void | handleControllerAction (Event *event) |
Called when a controller event is received - either on the server from a client, or on a client from the server. | |
void | handleState (Event *event) |
Called when a new full state is received form the server. | |
void | handleAdjustTime (Event *event) |
void | handleItemEventConfirmation (Event *event) |
Handles an item even confirmation from a client. | |
std::tuple< uint8_t, uint16_t, uint16_t, uint16_t > | compressAction (const Action &a) |
std::tuple< PlayerAction, int, int, int > | decompressAction (uint8_t w, uint16_t x, uint16_t y, uint16_t z) |
Private Attributes | |
std::mutex | m_world_deleting_mutex |
NetworkString * | m_data_to_send |
A network string that collects all information from the server to be sent next. | |
std::vector< int8_t > | m_adjust_time |
The server might request that the world clock of a client is adjusted to reduce number of rollbacks. | |
std::vector< Action > | m_all_actions |
NetworkItemManager * | m_network_item_manager |
Static Private Attributes | |
static std::weak_ptr< GameProtocol > | m_game_protocol [PT_COUNT] |
Additional Inherited Members | |
![]() | |
ProtocolType | m_type |
The type of the protocol. | |
bool | m_handle_connections |
True if this protocol should receive connection events. | |
bool | m_handle_disconnections |
TRue if this protocol should recceiver disconnection events. | |
GameProtocol::GameProtocol | ( | ) |
Constructor.
Allocates the buffer for events to send to the server.
void GameProtocol::addState | ( | BareNetworkString * | buffer | ) |
Called by a server to add data to the current state.
The data in buffer is copied, so the data can be freed after this call/.
buffer | Adds the data in the buffer to the current state. |
|
inlinevirtual |
void GameProtocol::controllerAction | ( | int | kart_id, |
PlayerAction | action, | ||
int | value, | ||
int | val_l, | ||
int | val_r | ||
) |
Called from the local kart controller when an action (like steering, acceleration, ...) was triggered.
It sends a message with the new info to the server and informs the rewind manager to store the event.
Kart | id that triggered the action. |
action | Which action was triggered. |
value | New value for the given action. |
void GameProtocol::finalizeState | ( | std::vector< std::string > & | cur_rewinder | ) |
Called by a server to finalize the current state, which add updated names of rewinder using to the beginning of state buffer.
cur_rewinder | List of current rewinder using. |
|
private |
Called when a controller event is received - either on the server from a client, or on a client from the server.
It sorts the event into the RewindManager's network event queue. The server will also send this event immediately to all clients (except to the original sender).
|
private |
Handles an item even confirmation from a client.
Once it has been confirmed that all clients have received certain events, those can be deleted and do not need to be sent again.
event | The data from the client. |
|
virtual |
Called when a message from a remote GameProtocol is received.
Reimplemented from Protocol.
|
virtual |
Called from the RewindManager after a rollback to replay the stored events.
buffer | Pointer to the saved state information. |
Implements EventRewinder.
void GameProtocol::sendItemEventConfirmation | ( | int | ticks | ) |
Sends a confirmation to the server that all item events up to 'ticks' have been received.
ticks | Up to which time in ticks the item events have been received. |
|
inlinevirtual |
|
virtual |
Called from the RewindManager when rolling back.
buffer | Pointer to the saved state information. |
Implements EventRewinder.
|
virtual |
Called by the protocol listener, synchronously with the main loop.
Must be re-defined.
Implements Protocol.