src/network/network_type.h
author truebrain
Fri, 18 Jul 2008 10:15:16 +0000
branchnoai
changeset 11168 3842648184cd
parent 11111 1b984dab8cec
permissions -rw-r--r--
(svn r13726) [NoAI] -Add: AIVehicle::ReverseVehicle (Yexo)
10829
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
     1
/* $Id$ */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
     2
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
     3
/** @file network_internal.h Variables and function used internally. */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
     4
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
     5
#ifndef NETWORK_TYPE_H
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
     6
#define NETWORK_TYPE_H
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
     7
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
     8
#ifdef ENABLE_NETWORK
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
     9
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    10
#include "../player_type.h"
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    11
#include "../economy_type.h"
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    12
#include "core/config.h"
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    13
#include "core/game.h"
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    14
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    15
enum {
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    16
	/**
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    17
	 * How many clients can we have? Like.. MAX_PLAYERS - 1 is the amount of
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    18
	 *  players that can really play.. so.. a max of 4 spectators.. gives us..
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    19
	 *  MAX_PLAYERS + 3
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    20
	 */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    21
	MAX_CLIENTS = MAX_PLAYERS + 3,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    22
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    23
	/** Do not change this next line. It should _ALWAYS_ be MAX_CLIENTS + 1 */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    24
	MAX_CLIENT_INFO = MAX_CLIENTS + 1,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    25
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    26
	/** Maximum number of internet interfaces supported. */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    27
	MAX_INTERFACES = 9,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    28
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    29
	/** How many vehicle/station types we put over the network */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    30
	NETWORK_VEHICLE_TYPES = 5,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    31
	NETWORK_STATION_TYPES = 5,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    32
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    33
	NETWORK_SERVER_INDEX = 1,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    34
	NETWORK_EMPTY_INDEX  = 0,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    35
};
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    36
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    37
struct NetworkPlayerInfo {
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    38
	char company_name[NETWORK_NAME_LENGTH];         ///< Company name
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    39
	char password[NETWORK_PASSWORD_LENGTH];         ///< The password for the player
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    40
	Year inaugurated_year;                          ///< What year the company started in
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    41
	Money company_value;                            ///< The company value
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    42
	Money money;                                    ///< The amount of money the company has
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    43
	Money income;                                   ///< How much did the company earned last year
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    44
	uint16 performance;                             ///< What was his performance last month?
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    45
	bool use_password;                              ///< Is there a password
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    46
	uint16 num_vehicle[NETWORK_VEHICLE_TYPES];      ///< How many vehicles are there of this type?
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    47
	uint16 num_station[NETWORK_STATION_TYPES];      ///< How many stations are there of this type?
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    48
	char players[NETWORK_PLAYERS_LENGTH];           ///< The players that control this company (Name1, name2, ..)
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    49
	uint16 months_empty;                            ///< How many months the company is empty
11111
1b984dab8cec (svn r13669) [NoAI] -Fix: allow clients only to join non-AI controlled companies in multiplayer
truebrain
parents: 10829
diff changeset
    50
	bool ai;                                        ///< Is this company an AI
10829
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    51
};
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    52
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    53
struct NetworkClientInfo {
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    54
	uint16 client_index;                            ///< Index of the client (same as ClientState->index)
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    55
	char client_name[NETWORK_CLIENT_NAME_LENGTH];   ///< Name of the client
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    56
	byte client_lang;                               ///< The language of the client
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    57
	PlayerID client_playas;                         ///< As which player is this client playing (PlayerID)
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    58
	uint32 client_ip;                               ///< IP-address of the client (so he can be banned)
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    59
	Date join_date;                                 ///< Gamedate the player has joined
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    60
	char unique_id[NETWORK_UNIQUE_ID_LENGTH];       ///< Every play sends an unique id so we can indentify him
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    61
};
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    62
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    63
enum NetworkPasswordType {
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    64
	NETWORK_GAME_PASSWORD,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    65
	NETWORK_COMPANY_PASSWORD,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    66
};
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    67
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    68
enum DestType {
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    69
	DESTTYPE_BROADCAST, ///< Send message/notice to all players (All)
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    70
	DESTTYPE_TEAM,      ///< Send message/notice to everyone playing the same company (Team)
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    71
	DESTTYPE_CLIENT,    ///< Send message/notice to only a certain player (Private)
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    72
};
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    73
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    74
/** Actions that can be used for NetworkTextMessage */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    75
enum NetworkAction {
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    76
	NETWORK_ACTION_JOIN,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    77
	NETWORK_ACTION_LEAVE,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    78
	NETWORK_ACTION_SERVER_MESSAGE,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    79
	NETWORK_ACTION_CHAT,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    80
	NETWORK_ACTION_CHAT_COMPANY,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    81
	NETWORK_ACTION_CHAT_CLIENT,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    82
	NETWORK_ACTION_GIVE_MONEY,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    83
	NETWORK_ACTION_NAME_CHANGE,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    84
};
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    85
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    86
enum NetworkErrorCode {
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    87
	NETWORK_ERROR_GENERAL, // Try to use this one like never
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    88
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    89
	/* Signals from clients */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    90
	NETWORK_ERROR_DESYNC,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    91
	NETWORK_ERROR_SAVEGAME_FAILED,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    92
	NETWORK_ERROR_CONNECTION_LOST,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    93
	NETWORK_ERROR_ILLEGAL_PACKET,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    94
	NETWORK_ERROR_NEWGRF_MISMATCH,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    95
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    96
	/* Signals from servers */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    97
	NETWORK_ERROR_NOT_AUTHORIZED,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    98
	NETWORK_ERROR_NOT_EXPECTED,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
    99
	NETWORK_ERROR_WRONG_REVISION,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
   100
	NETWORK_ERROR_NAME_IN_USE,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
   101
	NETWORK_ERROR_WRONG_PASSWORD,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
   102
	NETWORK_ERROR_PLAYER_MISMATCH, // Happens in CLIENT_COMMAND
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
   103
	NETWORK_ERROR_KICKED,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
   104
	NETWORK_ERROR_CHEATER,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
   105
	NETWORK_ERROR_FULL,
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
   106
};
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
   107
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
   108
#endif /* ENABLE_NETWORK */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents:
diff changeset
   109
#endif /* NETWORK_TYPE_H */