#ifndef ACTION_H #define ACTION_H #include "list.h" class Action { public: //! Action types. enum Type { Pass, // discard Discard, // draw Riichi, // draw Chi, // discard Pon, // discard Kan, // draw, discard Ron, // discard Tsumo, // draw Draw // draw }; //! Action target type. enum TargetType { //! Action is targetless. None, //! Target is index in first group (concealed hand). Index, //! Target is index of group. Group }; //! Type of action. Type type; //! Target of action (if applicable). TargetType target_type; int target_offset; Action(); Action(Type ty, TargetType tt = None, int to = 0); //! Compare to another action. bool operator==(const Action& other); template void serialize(Archive & ar, const unsigned int version) { ar & type; ar & target_type; ar & target_offset; } }; //! List of actions. typedef List Actions; #endif