#ifndef _ORDERS_H_ #define _ORDERS_H_ #include #include #include "gametypes.h" #define ORDER_FORMATTER "ORDER:%c id:%u" // Type for all orders ( as a char ) enum class command_c : char { F = 'F', // Move forward one square L = 'L', // Turn left R = 'R', // Turn right A = 'A', // Attack forwards until a unit or edge of the arena is hit NUM_INVALID }; // Container for an order struct SOrder { // Base constructor makes invalid order SOrder() : unit ( unit_id_invalid ) , command( command_c::NUM_INVALID ) {} // Unit order is for unit_id_t unit; // Order command issued command_c command; // Basic operators inline bool operator==( const SOrder & rhs ) const; inline bool operator!=( const SOrder & rhs ) const { return !(*this==rhs); } }; // Simple == operator inline bool SOrder::operator== ( const SOrder & rhs ) const { return ( unit == rhs.unit ) && ( command == rhs.command); } // Typedef a vector of orders typedef std::vector COrderVector; // string <--> order conversion functions std::string GetStringFromOrder(const SOrder & order ); SOrder GetOrderFromString( const std::string& order ); #endif //_ORDERS_H_