File: servemsg.h

package info (click to toggle)
exult 1.2-4
  • links: PTS
  • area: contrib
  • in suites: sarge
  • size: 9,040 kB
  • ctags: 10,543
  • sloc: cpp: 99,373; sh: 8,333; ansic: 4,659; makefile: 988; yacc: 769; lex: 313; xml: 19
file content (108 lines) | stat: -rw-r--r-- 3,473 bytes parent folder | download | duplicates (8)
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 */