tavli
annotate src/board.h @ 24:0aadb519b5ee
correct highlighting
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 08 Jul 2015 15:11:58 +0300 |
parents | c3fbf9616dbd |
children |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef BOARD_H_ |
nuclear@0 | 2 #define BOARD_H_ |
nuclear@0 | 3 |
nuclear@1 | 4 #include <vector> |
nuclear@2 | 5 #include "object.h" |
nuclear@21 | 6 #include "mesh.h" |
nuclear@4 | 7 #include "image.h" |
nuclear@0 | 8 |
nuclear@17 | 9 #define NUM_SLOTS 20 |
nuclear@17 | 10 #define PLAYER_PIECES 15 |
nuclear@17 | 11 #define MAX_PIECES (PLAYER_PIECES * 2) |
nuclear@0 | 12 |
nuclear@17 | 13 enum { MINE, OTHER }; |
nuclear@17 | 14 |
nuclear@17 | 15 class Piece { |
nuclear@17 | 16 private: |
nuclear@17 | 17 int prev_slot, prev_level; |
nuclear@17 | 18 unsigned long move_start; |
nuclear@17 | 19 |
nuclear@17 | 20 public: |
nuclear@17 | 21 int owner, slot, level; |
nuclear@17 | 22 |
nuclear@17 | 23 Piece(); |
nuclear@17 | 24 |
nuclear@17 | 25 void move_to(int slot, int level, bool anim = true); |
nuclear@17 | 26 }; |
nuclear@17 | 27 |
nuclear@21 | 28 // for slot bounds |
nuclear@21 | 29 class Quad { |
nuclear@21 | 30 public: |
nuclear@21 | 31 Triangle tri0, tri1; |
nuclear@21 | 32 |
nuclear@21 | 33 Quad(); |
nuclear@21 | 34 Quad(const Vector3 &v0, const Vector3 &v1, const Vector3 &v2, const Vector3 &v3); |
nuclear@21 | 35 |
nuclear@21 | 36 bool intersect(const Ray &ray, HitPoint *hit = 0) const; |
nuclear@21 | 37 }; |
nuclear@0 | 38 |
nuclear@0 | 39 class Board { |
nuclear@0 | 40 private: |
nuclear@17 | 41 Piece pieces[MAX_PIECES]; |
nuclear@17 | 42 int hist[NUM_SLOTS + 1]; |
nuclear@21 | 43 Quad slotbb[NUM_SLOTS]; |
nuclear@22 | 44 int slot_sel; // current slot selection |
nuclear@17 | 45 |
nuclear@2 | 46 std::vector<Object*> obj; |
nuclear@17 | 47 Object *piece_obj; |
nuclear@1 | 48 |
nuclear@22 | 49 Image img_wood, img_field, img_hinge, img_highlight; |
nuclear@4 | 50 |
nuclear@1 | 51 bool generate(); |
nuclear@4 | 52 bool generate_textures(); |
nuclear@0 | 53 |
nuclear@0 | 54 public: |
nuclear@0 | 55 Board(); |
nuclear@0 | 56 ~Board(); |
nuclear@0 | 57 |
nuclear@0 | 58 bool init(); |
nuclear@0 | 59 void destroy(); |
nuclear@0 | 60 |
nuclear@0 | 61 void clear(); |
nuclear@17 | 62 void setup(); |
nuclear@17 | 63 |
nuclear@17 | 64 int slot_pieces(int slot) const; |
nuclear@17 | 65 bool move_piece(int id, int slot, bool anim = true); |
nuclear@17 | 66 |
nuclear@17 | 67 Vector3 piece_pos(int slot, int level = 0) const; |
nuclear@0 | 68 |
nuclear@21 | 69 int slot_hit(const Ray &ray) const; |
nuclear@22 | 70 void select_slot(int idx); |
nuclear@22 | 71 int get_selected_slot() const; |
nuclear@21 | 72 |
nuclear@0 | 73 void draw() const; |
nuclear@0 | 74 }; |
nuclear@0 | 75 |
nuclear@0 | 76 #endif // BOARD_H_ |