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_
|