1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
/**
** Servemsg.h - Server msgs.
** NOTE: This is for inclusion by both client and server.
**
** Written: 5/3/2001 - JSF
**/
#ifndef INCL_SERVEMSG
#define INCL_SERVEMSG 1
/*
Copyright (C) 2000-2002 The Exult Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
* An entry sent between client and server will have the following format:
*
Bytes Description
0-1 Magic.
2-3 Length of the data, low-byte first.
4 Message type. Defined below.
5- Data.
*/
namespace Exult_server
{
const unsigned short magic = 0xf381;
const int maxlength = 600; // Big enough to hold a 'terrain'.
const int hdrlength = 5;
const int version = 0; // Sent with 'info' message.
enum Msg_type
{
say = 0, // For testing. Data is text.
obj = 1, // Generic object.
egg = 2, // Egg_object.
npc = 3, // Editing an NPC.
user_responded = 4, // User performed requested action.
cancel = 5, // Cancel operation.
info = 6, // Game info. request/response. See
// Game_info_xxx in objserial.h.
write_map = 7, // Save map.
read_map = 8, // Read map.
map_editing_mode = 9, // 1 to turn it on, 0 for off.
tile_grid = 10, // 1 to show grid, 0 for off.
edit_lift = 11, // Lift passed: 0-13.
reload_usecode = 12, // Reload patched usecode.
locate_terrain = 13, // Locate desired chunk terrain.
swap_terrain = 14, // Swap two terrains.
insert_terrain = 15, // Insert new chunk terrain.
delete_terrain = 16, // Delete (unused) terrain.
send_terrain = 17, // Send 512-byte terrain to client.
terrain_editing_mode = 18, // 1 to turn on, 0 for off, -1 to undo.
set_edit_shape = 19, // Set shape/frame to 'paint' with.
view_pos = 20, // Tile loc., size, scale of what's
// shown in gamewin. Sent both ways.
set_edit_mode = 21, // Move(0), paint(1), select(2).
combo_pick = 22, // Sending shape to add to combo.
hide_lift = 23, // Lift passed: 1-16.
reload_shapes = 24, // Reload a .vga file.
unused_shapes = 25, // Find unused shapes in game.
locate_shape = 26, // Find shape in world.
cut = 27, // Cut/copy.
paste = 28, // ... from clipboard.
select_status = 29, // Flags: selection, clipboard avail.
npc_info = 30, // Get #NPC's, first unused.
edit_selected = 31, // Edit selected object.
set_edit_chunknum = 32, // Set chunk# to paint with.
game_pos = 33, // Returns tx, ty, tz of main char.
usecode_debugging = 128
};
// I/O routines:
int Send_data
(
int socket,
Msg_type id,
unsigned char *data = 0, // For just sending id.
int datalen = 0
);
int Receive_data
(
int& socket, // Closed, set to -1 if disconnected.
Msg_type& id, // ID returned.
unsigned char *data,
int datalen
);
// Wait for given ms for a response. return false if no response
bool wait_for_response(int socket, int ms);
}// Exult_server namespace.
#endif /* INCL_SERVEMSG */
|