Files @ r9036:e33a0264e0c3
Branch filter:

Location: cpp/openttd-patchpack/source/src/player_type.h

rubidium
(svn r12855) -Codechange: do not use autoptr's for testing whether certain objects can be build, but check it directly in the pool so we do not have to call destructors in the testing phase. Stations still use the autoptr though.
/* $Id$ */

/** @file player_type.h Types related to players. */

#ifndef PLAYER_TYPE_H
#define PLAYER_TYPE_H

#include "core/enum_type.hpp"

/**
 * Enum for all players/owners.
 */
enum Owner {
	/* Player identifiers All players below MAX_PLAYERS are playable
	 * players, above, they are special, computer controlled players */
	OWNER_BEGIN     = 0x00, ///< First Owner
	PLAYER_FIRST    = 0x00, ///< First Player, same as owner
	MAX_PLAYERS     = 0x08, ///< Maximum numbe rof players
	OWNER_TOWN      = 0x0F, ///< A town owns the tile, or a town is expanding
	OWNER_NONE      = 0x10, ///< The tile has no ownership
	OWNER_WATER     = 0x11, ///< The tile/execution is done by "water"
	OWNER_END,              ///< Last + 1 owner
	INVALID_OWNER   = 0xFF, ///< An invalid owner
	INVALID_PLAYER  = 0xFF, ///< And a valid owner

	/* 'Fake' Players used for networks */
	PLAYER_INACTIVE_CLIENT = 253, ///< The client is joining
	PLAYER_NEW_COMPANY     = 254, ///< The client wants a new company
	PLAYER_SPECTATOR       = 255, ///< The client is spectating
};
DECLARE_POSTFIX_INCREMENT(Owner);

/** Define basic enum properties */
template <> struct EnumPropsT<Owner> : MakeEnumPropsT<Owner, byte, OWNER_BEGIN, OWNER_END, INVALID_OWNER> {};
typedef TinyEnumT<Owner> OwnerByte;

typedef Owner PlayerID;
typedef OwnerByte PlayerByte;

struct Player;
typedef uint32 PlayerFace; ///< player face bits, info see in player_face.h

#endif /* PLAYER_TYPE_H */