dusk/src/client/client.h

66 lines
1.2 KiB
C

/**
* Copyright (c) 2025 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#pragma once
#include "client/networked/networkedclient.h"
#include "packet/packetqueue.h"
typedef enum {
CLIENT_TYPE_NETWORKED,
CLIENT_TYPE_SINGLE_PLAYER,
} clienttype_t;
typedef enum {
CLIENT_STATE_DISCONNECTED,
CLIENT_STATE_CONNECTING,
CLIENT_STATE_CONNECTED,
CLIENT_STATE_DISCONNECTING,
} clientstate_t;
typedef struct clientconnect_s {
clienttype_t type;
union {
networkedclientconnect_t networked;
};
} clientconnect_t;
typedef struct client_s {
clientstate_t state;
clienttype_t type;
packetqueue_t packetQueue;
union {
networkedclient_t networked;
};
} client_t;
extern client_t CLIENT;
/**
* Initializes the client.
*
* @return Error code indicating success or failure.
*/
void clientInit();
/**
* Connects to a server.
*
* @param connect Connection information.
* @return Error code indicating success or failure.
*/
errorret_t clientConnect(const clientconnect_t connect);
/**
* Disconnects the client from the server.
*/
void clientDisconnect();
/**
* Cleans up the client resources.
*/
void clientDispose();