tavli

annotate src/board.h @ 21:c3fbf9616dbd

slot bounds, and ray testing
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 02 Jul 2015 00:01:39 +0300
parents 16a420432aa3
children c2a2069a49ec
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@17 44
nuclear@2 45 std::vector<Object*> obj;
nuclear@17 46 Object *piece_obj;
nuclear@1 47
nuclear@7 48 Image img_wood, img_field, img_hinge;
nuclear@4 49
nuclear@1 50 bool generate();
nuclear@4 51 bool generate_textures();
nuclear@0 52
nuclear@0 53 public:
nuclear@0 54 Board();
nuclear@0 55 ~Board();
nuclear@0 56
nuclear@0 57 bool init();
nuclear@0 58 void destroy();
nuclear@0 59
nuclear@0 60 void clear();
nuclear@17 61 void setup();
nuclear@17 62
nuclear@17 63 int slot_pieces(int slot) const;
nuclear@17 64 bool move_piece(int id, int slot, bool anim = true);
nuclear@17 65
nuclear@17 66 Vector3 piece_pos(int slot, int level = 0) const;
nuclear@0 67
nuclear@21 68 int slot_hit(const Ray &ray) const;
nuclear@21 69
nuclear@0 70 void draw() const;
nuclear@0 71 };
nuclear@0 72
nuclear@0 73 #endif // BOARD_H_