rubidium@8254: /* $Id$ */ rubidium@8254: rubidium@10207: /** @file company_type.h Types related to companies. */ rubidium@8254: rubidium@10207: #ifndef COMPANY_TYPE_H rubidium@10207: #define COMPANY_TYPE_H rubidium@8254: rubidium@8263: #include "core/enum_type.hpp" rubidium@8263: rubidium@8254: /** rubidium@10207: * Enum for all companies/owners. rubidium@8254: */ rubidium@8254: enum Owner { rubidium@10207: /* All companies below MAX_COMPANIES are playable rubidium@10207: * companies, above, they are special, computer controlled 'companies' */ rubidium@10207: OWNER_BEGIN = 0x00, ///< First owner rubidium@10207: COMPANY_FIRST = 0x00, ///< First company, same as owner rubidium@10207: MAX_COMPANIES = 0x08, ///< Maximum number of companies rubidium@8254: OWNER_TOWN = 0x0F, ///< A town owns the tile, or a town is expanding rubidium@8254: OWNER_NONE = 0x10, ///< The tile has no ownership rubidium@8254: OWNER_WATER = 0x11, ///< The tile/execution is done by "water" rubidium@8254: OWNER_END, ///< Last + 1 owner rubidium@8254: INVALID_OWNER = 0xFF, ///< An invalid owner rubidium@10207: INVALID_COMPANY = 0xFF, ///< An invalid company rubidium@8254: rubidium@10207: /* 'Fake' companies used for networks */ rubidium@10207: COMPANY_INACTIVE_CLIENT = 253, ///< The client is joining rubidium@10207: COMPANY_NEW_COMPANY = 254, ///< The client wants a new company rubidium@10207: COMPANY_SPECTATOR = 255, ///< The client is spectating rubidium@8254: }; rubidium@8254: DECLARE_POSTFIX_INCREMENT(Owner); rubidium@8254: rubidium@9645: enum { rubidium@9913: MAX_LENGTH_PRESIDENT_NAME_BYTES = 31, ///< The maximum length of a president name in bytes including '\0' rubidium@9913: MAX_LENGTH_PRESIDENT_NAME_PIXELS = 94, ///< The maximum length of a president name in pixels rubidium@9913: MAX_LENGTH_COMPANY_NAME_BYTES = 31, ///< The maximum length of a company name in bytes including '\0' rubidium@9913: MAX_LENGTH_COMPANY_NAME_PIXELS = 150, ///< The maximum length of a company name in pixels rubidium@9645: }; rubidium@9645: rubidium@8254: /** Define basic enum properties */ rubidium@8254: template <> struct EnumPropsT : MakeEnumPropsT {}; rubidium@8254: typedef TinyEnumT OwnerByte; rubidium@8254: rubidium@10207: typedef Owner CompanyID; rubidium@10207: typedef OwnerByte CompanyByte; rubidium@8254: rubidium@10207: typedef uint8 CompanyMask; rubidium@9709: rubidium@10207: struct Company; rubidium@10207: typedef uint32 CompanyManagerFace; ///< Company manager face bits, info see in company_manager_face.h rubidium@8254: rubidium@10207: #endif /* COMPANY_TYPE_H */