SANDAL2
A SDL2 Wrapper in C
Clickable.h
Go to the documentation of this file.
1 #ifndef CLICKABLE_SANDAL2_KLEVH
2 #define CLICKABLE_SANDAL2_KLEVH
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include <math.h>
9 #include <stdlib.h>
10 
21 typedef struct Line{
22  struct Line * next;
24  double a;
26  double b;
28  double c;
30  int side;
32 }Line;
33 
38 typedef struct Circle{
39  struct Circle * next;
41  double x;
43  double y;
45  double rY;
47  double rX;
49  double theta;
51 }Circle;
52 
57 typedef struct Clickable{
62  struct Clickable * next;
64 }Clickable;
65 
70 typedef struct{
80 
81 /* ----------------------------------------------------------
82  * Clickable
83  */
98 int addLine(Clickable * hb,double a,double b,double c,int side);
109 int addCircle(Clickable * hb,double x,double y,double rX,double rY,double theta);
119 int delLine(Clickable * hb,double a,double b,double c,int side);
130 int delCircle(Clickable * hb,double x,double y,double rX,double rY,double theta);
138 int hitClickable(Clickable * hb,double x,double y);
147 Clickable * rectangleClickable(double x1,double y1,double x2,double y2);
157 Clickable * ellipseClickable(double x,double y,double rX,double rY,double theta);
162 void freeClickable(Clickable * hb);
163 /* ---------------------------------------------------------- */
164 
165 
166 /* ----------------------------------------------------------
167  * ListClickable
168  */
185 int addClickable(ListClickable * l,Clickable * hb,int blocking);
193 int delClickable(ListClickable * l,Clickable * hb, int blocking);
223 int hitListClickable(ListClickable * l,double x,double y);
224 /* ---------------------------------------------------------- */
225 
226 #ifdef __cplusplus
227 }
228 #endif
229 
230 #endif
struct Line * next
Definition: Clickable.h:22
int delLine(Clickable *hb, double a, double b, double c, int side)
remove a line from the hitbox
Definition: Clickable.c:61
Clickable * initClickable()
Generate an empty hitbox.
Definition: Clickable.c:8
Clickable * nextClickable(ListClickable *l)
getter of the current non blocking element of the iterator and setter of the next element ...
Definition: Clickable.c:317
int initIteratorListClickableBlocking(ListClickable *l)
initialise the iterator of the list of blocking hit boxes
Definition: Clickable.c:284
double x
Definition: Clickable.h:41
double a
Definition: Clickable.h:24
int delCircle(Clickable *hb, double x, double y, double rX, double rY, double theta)
remove an ellipse from the hitbox
Definition: Clickable.c:81
double y
Definition: Clickable.h:43
ListClickable * initListClickable()
initialise an empty list of hit boxes
Definition: Clickable.c:230
Clickable * current
Definition: Clickable.h:73
int side
Definition: Clickable.h:30
Collection of hit boxes.
Definition: Clickable.h:70
int hitClickable(Clickable *hb, double x, double y)
tells if (x,y) touch the hitbox
Definition: Clickable.c:101
Represente a hit boxe which is a collection of Line (defining a convexe polygon) and Circle...
Definition: Clickable.h:57
int hitListClickable(ListClickable *l, double x, double y)
tells if (x,y) touch one of the hitboxes
Definition: Clickable.c:328
double c
Definition: Clickable.h:28
int delClickable(ListClickable *l, Clickable *hb, int blocking)
remove a hit boxe to a list of hit boxes
Definition: Clickable.c:260
double rY
Definition: Clickable.h:45
double rX
Definition: Clickable.h:47
Circle * firstC
Definition: Clickable.h:60
int addLine(Clickable *hb, double a, double b, double c, int side)
add a line to the hitbox side*(ax+by) > side*c
Definition: Clickable.c:20
double theta
Definition: Clickable.h:49
int addCircle(Clickable *hb, double x, double y, double rX, double rY, double theta)
add an ellipse to the hitbox
Definition: Clickable.c:40
Clickable * currentBlock
Definition: Clickable.h:77
void freeClickable(Clickable *hb)
free a hit boxe&#39;s memory
Definition: Clickable.c:190
Clickable * nextClickableBlocking(ListClickable *l)
getter of the current blocking element of the iterator and setter of the next element ...
Definition: Clickable.c:295
struct Circle * next
Definition: Clickable.h:39
Clickable * ellipseClickable(double x, double y, double rX, double rY, double theta)
generate an ellipse shapped Clickable
Definition: Clickable.c:177
Represente a hittable ellipse.
Definition: Clickable.h:38
Represente a line which delimitate a hittable surface from a none hittable one.
Definition: Clickable.h:21
Clickable * firstBlock
Definition: Clickable.h:75
Clickable * rectangleClickable(double x1, double y1, double x2, double y2)
generate a rectangulare shapped Clickable
Definition: Clickable.c:138
int initIteratorListClickable(ListClickable *l)
initialise the iterator of the list of non blocking hit boxes
Definition: Clickable.c:306
struct Clickable * next
Definition: Clickable.h:62
double b
Definition: Clickable.h:26
Clickable * first
Definition: Clickable.h:71
void freeListClickable(ListClickable *l)
free the memory of a list of hit boxe
Definition: Clickable.c:216
Line * firstL
Definition: Clickable.h:58
int addClickable(ListClickable *l, Clickable *hb, int blocking)
add a hit boxe to a list of hit boxes
Definition: Clickable.c:243