Some changes to Drawable, a little bug fix
[rokon:rokon.git] / src / com / stickycoding / rokon / Drawable.java
1 package com.stickycoding.rokon;\r
2 \r
3 import javax.microedition.khronos.opengles.GL10;\r
4 \r
5 import android.view.MotionEvent;\r
6 \r
7 /**\r
8  * Drawable.java\r
9  * An interface for objects which are to be in the render queue \r
10  * Confusion with Androids own Drawable class may be a potential issue, though this being an interface they cannot easily be used accidentally\r
11  *  \r
12  * @author Richard\r
13  */\r
14 public abstract interface Drawable {\r
15         \r
16         /**\r
17          * Called each time the Drawable must be rendered\r
18          * @param gl valid GL10 object in the rendering thread\r
19          */\r
20         void onDraw(GL10 gl);\r
21         \r
22         /**\r
23          * Called when the Drawable is added to a Layer\r
24          * @param layer the Layer which the Drawable has just been added to\r
25          */\r
26         void onAdd(Layer layer);\r
27         \r
28         /**\r
29          * Called when the Drawable is removed from a Layer\r
30          */\r
31         void onRemove();\r
32         \r
33         /**\r
34          * Called on each loop, before rendering calls\r
35          */\r
36         void onUpdate();\r
37         \r
38         /**\r
39          * Determines whether the object is active on a Scene, or has been removed and should be ignored\r
40          * \r
41          * @return TRUE if the object is alive, FALSE otherwise\r
42          */\r
43         boolean isAlive();\r
44         \r
45         \r
46         /**\r
47          * Determines whether the object is visible in the current screen\r
48          * \r
49          * @return TRUE if visible, FALSE otherwise\r
50          */\r
51         boolean isOnScreen();\r
52         \r
53         /**\r
54          * Determines whether the object is touchable, and therefore should raise an event\r
55          * \r
56          * @return TRUE if touchable, FALSE otherwise\r
57          */\r
58         boolean isTouchable();\r
59         \r
60         /**\r
61          * Fetches the name for this Drawable\r
62          * \r
63          * @return NULL if not set\r
64          */\r
65         String getName();\r
66         \r
67         /**\r
68          * Fetches the X coordinate of a Drawable\r
69          * \r
70          * @return x-coordinate of Drawable\r
71          */\r
72         float getX();\r
73         \r
74         /**\r
75          * Fetches the Y coordinate of a Drawable\r
76          * \r
77          * @return y-coordinate of Drawable\r
78          */\r
79         float getY();\r
80         \r
81         /**\r
82          * Fetches the width of a Drawable\r
83          * \r
84          * @return width of Drawable\r
85          */\r
86         float getWidth();\r
87         \r
88         /**\r
89          * Fetches the height of a Drawable\r
90          * \r
91          * @return height of Drawable\r
92          */\r
93         float getHeight();\r
94         \r
95 \r
96         /**\r
97          * Triggered when a touch is pressed down on this Drawable\r
98          * \r
99          * @param x x coordinate (in game terms)\r
100          * @param y y coordinate (in game terms)\r
101          * @param event the MotionEvent associated with the touch\r
102          * @param pointerId id of the pointer, always 0 if no multitouch present\r
103          */\r
104         void onTouchDown(float x, float y, MotionEvent event, int pointerId);\r
105 \r
106         /**\r
107          * Triggered when a touch is released on this Drawable\r
108          * \r
109          * @param x x coordinate (in game terms)\r
110          * @param y y coordinate (in game terms)\r
111          * @param event the MotionEvent associated with the touch\r
112          * @param pointerId id of the pointer, always 0 if no multitouch present\r
113          */\r
114         void onTouchUp(float x, float y, MotionEvent event, int pointerId);\r
115 \r
116         /**\r
117          * Triggered on all touch events on the Drawable\r
118          * \r
119          * @param x x coordinate (in game terms)\r
120          * @param y y coordinate (in game terms)\r
121          * @param event the MotionEvent associated with the touch\r
122          * @param pointerId id of the pointer, always 0 if no multitouch present\r
123          */\r
124         void onTouch(float x, float y, MotionEvent event, int pointerId);\r
125         \r
126         /**\r
127          * Triggered when a touch is moved on this Drawable\r
128          * \r
129          * @param x x coordinate (in game terms)\r
130          * @param y y coordinate (in game terms)\r
131          * @param event the MotionEvent associated with the touch\r
132          * @param pointerId id of the pointer, always 0 if no multitouch present\r
133          */\r
134         void onTouchMove(float x, float y, MotionEvent event, int pointerId);\r
135 \r
136 }\r