tavli

annotate src/board.h @ 22:c2a2069a49ec

slot highlighting, TODO blur
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 07 Jul 2015 21:56:37 +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_