nuclear@0: #ifndef BOARD_H_ nuclear@0: #define BOARD_H_ nuclear@0: nuclear@1: #include nuclear@2: #include "object.h" nuclear@4: #include "image.h" nuclear@0: nuclear@17: #define NUM_SLOTS 20 nuclear@17: #define PLAYER_PIECES 15 nuclear@17: #define MAX_PIECES (PLAYER_PIECES * 2) nuclear@0: nuclear@17: enum { MINE, OTHER }; nuclear@17: nuclear@17: class Piece { nuclear@17: private: nuclear@17: int prev_slot, prev_level; nuclear@17: unsigned long move_start; nuclear@17: nuclear@17: public: nuclear@17: int owner, slot, level; nuclear@17: nuclear@17: Piece(); nuclear@17: nuclear@17: void move_to(int slot, int level, bool anim = true); nuclear@17: }; nuclear@17: nuclear@0: nuclear@0: class Board { nuclear@0: private: nuclear@17: Piece pieces[MAX_PIECES]; nuclear@17: int hist[NUM_SLOTS + 1]; nuclear@17: nuclear@2: std::vector obj; nuclear@17: Object *piece_obj; nuclear@1: nuclear@7: Image img_wood, img_field, img_hinge; nuclear@4: nuclear@1: bool generate(); nuclear@4: bool generate_textures(); nuclear@0: nuclear@0: public: nuclear@0: Board(); nuclear@0: ~Board(); nuclear@0: nuclear@0: bool init(); nuclear@0: void destroy(); nuclear@0: nuclear@0: void clear(); nuclear@17: void setup(); nuclear@17: nuclear@17: int slot_pieces(int slot) const; nuclear@17: bool move_piece(int id, int slot, bool anim = true); nuclear@17: nuclear@17: Vector3 piece_pos(int slot, int level = 0) const; nuclear@0: nuclear@0: void draw() const; nuclear@0: }; nuclear@0: nuclear@0: #endif // BOARD_H_