/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */
#ifndef ENGINE_IF_OTHER_H
#define ENGINE_IF_OTHER_H
/*
Title: Engine Interface
*/
#include
#include "e_keys.h"
enum
{
SERVER_TICK_SPEED=50,
MAX_CLIENTS=16,
SNAP_CURRENT=0,
SNAP_PREV=1,
MASK_NONE=0,
MASK_SET,
MASK_ZERO,
SNDFLAG_LOOP=1,
SNDFLAG_POS=2,
SNDFLAG_ALL=3,
MAX_NAME_LENGTH=32
};
enum
{
SRVFLAG_PASSWORD = 0x1,
SRVFLAG_TUNED = 0x2,
SRVFLAG_MOD = 0x4
};
/*
Structure: SNAP_ITEM
*/
typedef struct
{
int type;
int id;
int datasize;
} SNAP_ITEM;
/*
Structure: CLIENT_INFO
*/
typedef struct
{
const char *name;
int latency;
} CLIENT_INFO;
typedef struct PERFORMACE_INFO_t
{
const char *name;
struct PERFORMACE_INFO_t *parent;
struct PERFORMACE_INFO_t *first_child;
struct PERFORMACE_INFO_t *next_child;
int tick;
int64 start;
int64 total;
int64 biggest;
int64 last_delta;
} PERFORMACE_INFO;
void perf_init();
void perf_next();
void perf_start(PERFORMACE_INFO *info);
void perf_end();
void perf_dump();
int gfx_init();
void gfx_shutdown();
void gfx_swap();
int gfx_window_active();
int gfx_window_open();
void gfx_set_vsync(int val);
int snd_init();
int snd_shutdown();
int snd_update();
int map_load(const char *mapname);
void map_unload();
void map_set(void *m);
/*
#include "e_if_client.h"
#include "e_if_server.h"
#include "e_if_snd.h"
#include "e_if_gfx.h"
#include "e_if_inp.h"
#include "e_if_msg.h"
#include "e_if_mod.h"*/
/*
Section: Map
*/
/*
Function: map_is_loaded
Checks if a map is loaded.
Returns:
Returns 1 if the button is pressed, otherwise 0.
*/
int map_is_loaded();
/*
Function: map_num_items
Checks the number of items in the loaded map.
Returns:
Returns the number of items. 0 if no map is loaded.
*/
int map_num_items();
/*
Function: map_find_item
Searches the map for an item.
Arguments:
type - Item type.
id - Item ID.
Returns:
Returns a pointer to the item if it exists, otherwise it returns NULL.
*/
void *map_find_item(int type, int id);
/*
Function: map_get_item
Gets an item from the loaded map from index.
Arguments:
index - Item index.
type - Pointer that recives the item type (can be NULL).
id - Pointer that recives the item id (can be NULL).
Returns:
Returns a pointer to the item if it exists, otherwise it returns NULL.
*/
void *map_get_item(int index, int *type, int *id);
/*
Function: map_get_type
Gets the index range of an item type.
Arguments:
type - Item type to search for.
start - Pointer that recives the starting index.
num - Pointer that recives the number of items.
Returns:
If the item type is not in the map, start and num will be set to 0.
*/
void map_get_type(int type, int *start, int *num);
/*
Function: map_get_data
Fetches a pointer to a raw data chunk in the map.
Arguments:
index - Index to the data to fetch.
Returns:
A pointer to the raw data, otherwise 0.
*/
void *map_get_data(int index);
/*
Function: map_get_data_swapped
TODO
Arguments:
arg1 - desc
Returns:
See Also:
*/
void *map_get_data_swapped(int index);
/*
Section: Network (Server)
*/
/*
Function: snap_new_item
Creates a new item that should be sent.
Arguments:
type - Type of the item.
id - ID of the item.
size - Size of the item.
Returns:
A pointer to the item data, otherwise 0.
Remarks:
The item data should only consist pf 4 byte integers as
they are subject to byte swapping. This means that the size
argument should be dividable by 4.
*/
void *snap_new_item(int type, int id, int size);
/*
Section:Section: Network (Client)
*/
/*
Function: snap_num_items
Check the number of items in a snapshot.
Arguments:
snapid - Snapshot ID to the data to fetch.
* SNAP_PREV for previous snapshot.
* SNAP_CUR for current snapshot.
Returns:
The number of items in the snapshot.
*/
int snap_num_items(int snapid);
/*
Function: snap_get_item
Gets an item from a snapshot.
Arguments:
snapid - Snapshot ID to the data to fetch.
* SNAP_PREV for previous snapshot.
* SNAP_CUR for current snapshot.
index - Index of the item.
item - Pointer that recives the item info.
Returns:
Returns a pointer to the item if it exists, otherwise NULL.
*/
void *snap_get_item(int snapid, int index, SNAP_ITEM *item);
/*
Function: snap_find_item
Searches a snapshot for an item.
Arguments:
snapid - Snapshot ID to the data to fetch.
* SNAP_PREV for previous snapshot.
* SNAP_CUR for current snapshot.
type - Type of the item.
id - ID of the item.
Returns:
Returns a pointer to the item if it exists, otherwise NULL.
*/
void *snap_find_item(int snapid, int type, int id);
/*
Function: snap_invalidate_item
Marks an item as invalid byt setting type and id to 0xffffffff.
Arguments:
snapid - Snapshot ID to the data to fetch.
* SNAP_PREV for previous snapshot.
* SNAP_CUR for current snapshot.
index - Index of the item.
*/
void snap_invalidate_item(int snapid, int index);
/*
Function: snap_input
Sets the input data to send to the server.
Arguments:
data - Pointer to the data.
size - Size of the data.
Remarks:
The data should only consist of 4 bytes integer as they are
subject to byte swapping.
*/
void snap_input(void *data, int size);
/*
Function: snap_set_staticsize
Tells the engine how big a specific item always will be. This
helps the engine to compress snapshots better.
Arguments:
type - Item type
size - Size of the data.
Remarks:
Size must be in a multiple of 4.
*/
void snap_set_staticsize(int type, int size);
/* message packing */
enum
{
MSGFLAG_VITAL=1,
MSGFLAG_FLUSH=2,
MSGFLAG_NORECORD=4,
MSGFLAG_RECORD=8,
MSGFLAG_NOSEND=16
};
/* message sending */
/*
Function: server_send_msg
TODO
Arguments:
arg1 - desc
Returns:
See Also:
*/
int server_send_msg(int client_id); /* client_id == -1 == broadcast */
/*
Function: client_send_msg
TODO
Arguments:
arg1 - desc
Returns:
See Also:
*/
int client_send_msg();
/* undocumented graphics stuff */
/* server snap id */
/*
Function: snap_new_id
TODO
Arguments:
arg1 - desc
Returns:
See Also:
*/
int snap_new_id();
/*
Function: snap_free_id
TODO
Arguments:
arg1 - desc
Returns:
See Also:
*/
void snap_free_id(int id);
/* other */
/*
Function: map_unload_data
TODO
Arguments:
arg1 - desc
Returns:
See Also:
*/
void map_unload_data(int index);
#endif