LiteRGSS 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/ext/LiteRGSS/Bitmap.cpp +316 -0
  3. data/ext/LiteRGSS/Bitmap.h +24 -0
  4. data/ext/LiteRGSS/BlendMode.cpp +202 -0
  5. data/ext/LiteRGSS/BlendMode.h +20 -0
  6. data/ext/LiteRGSS/CBitmap_Element.cpp +50 -0
  7. data/ext/LiteRGSS/CBitmap_Element.h +17 -0
  8. data/ext/LiteRGSS/CDrawable_Element.cpp +38 -0
  9. data/ext/LiteRGSS/CDrawable_Element.h +30 -0
  10. data/ext/LiteRGSS/CRect_Element.h +15 -0
  11. data/ext/LiteRGSS/CShaderSprite_Element.cpp +17 -0
  12. data/ext/LiteRGSS/CShaderSprite_Element.h +17 -0
  13. data/ext/LiteRGSS/CSprite_Element.cpp +15 -0
  14. data/ext/LiteRGSS/CSprite_Element.h +36 -0
  15. data/ext/LiteRGSS/CText_Element.cpp +12 -0
  16. data/ext/LiteRGSS/CText_Element.h +29 -0
  17. data/ext/LiteRGSS/CTone_Element.h +17 -0
  18. data/ext/LiteRGSS/CViewport_Element.cpp +224 -0
  19. data/ext/LiteRGSS/CViewport_Element.h +57 -0
  20. data/ext/LiteRGSS/Color.cpp +200 -0
  21. data/ext/LiteRGSS/Color.h +22 -0
  22. data/ext/LiteRGSS/Fonts.cpp +126 -0
  23. data/ext/LiteRGSS/Fonts.h +20 -0
  24. data/ext/LiteRGSS/Graphics.cpp +314 -0
  25. data/ext/LiteRGSS/Graphics.h +31 -0
  26. data/ext/LiteRGSS/Graphics.local.cpp +365 -0
  27. data/ext/LiteRGSS/Graphics.local.h +37 -0
  28. data/ext/LiteRGSS/Image.cpp +460 -0
  29. data/ext/LiteRGSS/Image.h +32 -0
  30. data/ext/LiteRGSS/Input.cpp +664 -0
  31. data/ext/LiteRGSS/Input.h +38 -0
  32. data/ext/LiteRGSS/LiteRGSS.cpp +34 -0
  33. data/ext/LiteRGSS/LiteRGSS.h +113 -0
  34. data/ext/LiteRGSS/Rect.cpp +324 -0
  35. data/ext/LiteRGSS/Rect.h +24 -0
  36. data/ext/LiteRGSS/Shader.cpp +279 -0
  37. data/ext/LiteRGSS/Shader.h +13 -0
  38. data/ext/LiteRGSS/ShaderSprite.cpp +78 -0
  39. data/ext/LiteRGSS/ShaderSprite.h +8 -0
  40. data/ext/LiteRGSS/Sprite.cpp +495 -0
  41. data/ext/LiteRGSS/Sprite.h +43 -0
  42. data/ext/LiteRGSS/Table.cpp +228 -0
  43. data/ext/LiteRGSS/Table.h +29 -0
  44. data/ext/LiteRGSS/Table32.cpp +228 -0
  45. data/ext/LiteRGSS/Table32.h +29 -0
  46. data/ext/LiteRGSS/Text.cpp +574 -0
  47. data/ext/LiteRGSS/Text.h +52 -0
  48. data/ext/LiteRGSS/Texture.hpp +735 -0
  49. data/ext/LiteRGSS/Tone.cpp +228 -0
  50. data/ext/LiteRGSS/Tone.h +22 -0
  51. data/ext/LiteRGSS/Viewport.cpp +491 -0
  52. data/ext/LiteRGSS/Viewport.h +33 -0
  53. data/ext/LiteRGSS/Yuki.cpp +29 -0
  54. data/ext/LiteRGSS/Yuki.h +8 -0
  55. data/ext/LiteRGSS/Yuki_Gif.cpp +218 -0
  56. data/ext/LiteRGSS/Yuki_Gif.h +25 -0
  57. data/ext/LiteRGSS/extconf.rb +8 -0
  58. data/ext/LiteRGSS/libnsgif.c +1169 -0
  59. data/ext/LiteRGSS/libnsgif.h +183 -0
  60. data/ext/LiteRGSS/libnsgif.hpp +184 -0
  61. data/ext/LiteRGSS/lodepng.cpp +6245 -0
  62. data/ext/LiteRGSS/lodepng.h +1769 -0
  63. data/ext/LiteRGSS/lzw.c +377 -0
  64. data/ext/LiteRGSS/lzw.h +105 -0
  65. data/ext/LiteRGSS/sf_Text2.cpp +690 -0
  66. data/ext/LiteRGSS/sf_Text2.hpp +549 -0
  67. data/ext/LiteRGSS/utils/log.h +21 -0
  68. metadata +112 -0
@@ -0,0 +1,32 @@
1
+ #ifndef L_IMAGE_HEADER
2
+ #define L_IMAGE_HEADER
3
+ #include "ruby.h"
4
+ #include <SFML/Graphics.hpp>
5
+ #include "lodepng.h"
6
+
7
+ VALUE rb_Image_Initialize(int argc, VALUE *argv, VALUE self);
8
+ VALUE rb_Image_Initialize_Copy(VALUE self, VALUE other);
9
+ VALUE rb_Image_Dispose(VALUE self);
10
+ VALUE rb_Image_Disposed(VALUE self);
11
+ VALUE rb_Image_Width(VALUE self);
12
+ VALUE rb_Image_Height(VALUE self);
13
+ VALUE rb_Image_Rect(VALUE self);
14
+ VALUE rb_Image_Copy_to_Bitmap(VALUE self, VALUE bitmap);
15
+ VALUE rb_Image_blt(VALUE self, VALUE x, VALUE y, VALUE src_image, VALUE rect);
16
+ VALUE rb_Image_blt_fast(VALUE self, VALUE x, VALUE y, VALUE src_image, VALUE rect);
17
+ VALUE rb_Image_clear_rect(VALUE self, VALUE x, VALUE y, VALUE width, VALUE height);
18
+ VALUE rb_Image_fill_rect(VALUE self, VALUE x, VALUE y, VALUE width, VALUE height, VALUE color);
19
+ VALUE rb_Image_toPNG(VALUE self);
20
+ VALUE rb_Image_toPNG_file(VALUE self, VALUE filename);
21
+ VALUE rb_Image_get_pixel(VALUE self, VALUE x, VALUE y);
22
+ VALUE rb_Image_set_pixel(VALUE self, VALUE x, VALUE y, VALUE color);
23
+ VALUE rb_Image_get_pixel_alpha(VALUE self, VALUE x, VALUE y);
24
+ VALUE rb_Image_stretch_blt(VALUE self, VALUE dest_rect, VALUE src_image, VALUE src_rect);
25
+ VALUE rb_Image_stretch_blt_fast(VALUE self, VALUE dest_rect, VALUE src_image, VALUE src_rect);
26
+ VALUE rb_Image_create_mask(VALUE self, VALUE color, VALUE alpha);
27
+ bool rb_Image_LoadLodePNG(sf::Image* img, char* str, long from_memory_size);
28
+
29
+ sf::Image* rb_Image_get_image(VALUE self);
30
+ void rb_Image_test_image(VALUE self);
31
+
32
+ #endif
@@ -0,0 +1,664 @@
1
+ #include "LiteRGSS.h"
2
+
3
+ #define L_INPUT_NUM_INGAME_KEY 17
4
+ #define L_INPUT_NUM_MOUSE_KEY 5
5
+ #define L_TRIGGER_TIME_METHOD 1
6
+ #define L_TRIGGER_COUNT_METHOD 2
7
+ #define L_TRIGGER_METHOD L_TRIGGER_COUNT_METHOD
8
+
9
+ VALUE rb_mInput = Qnil;
10
+ VALUE rb_mMouse = Qnil;
11
+ VALUE rb_mMouseKey = Qnil;
12
+ VALUE rb_mInputKey = Qnil;
13
+ VALUE rb_mMouseKeyID = Qnil;
14
+ VALUE rb_mInputKeyID = Qnil;
15
+ VALUE rb_mInputMainJoy = Qnil;
16
+ VALUE rb_mInputMainAxisX = Qnil;
17
+ VALUE rb_mInputMainAxisY = Qnil;
18
+ ID rb_mInputEach = Qnil;
19
+ /* Clocks used to detect trigger, and repeat */
20
+ #if L_TRIGGER_METHOD == L_TRIGGER_TIME_METHOD
21
+ sf::Clock L_Input_Clock[L_INPUT_NUM_INGAME_KEY];
22
+ sf::Clock L_Mouse_Clock[L_INPUT_NUM_MOUSE_KEY];
23
+ #define L_TRIGGER_RESET_Mouse(i) L_Mouse_Clock[i].restart()
24
+ #define L_TRIGGER_RESET_Input(i) L_Input_Clock[i].restart()
25
+ #define L_Trigger_Mouse(pos) L_Mouse_Clock[pos].getElapsedTime().asMicroseconds() < L_Input_threshold
26
+ #define L_Trigger_Input(pos) L_Input_Clock[pos].getElapsedTime().asMicroseconds() < L_Input_threshold
27
+ #define L_Repeat_Input(pos) long time = L_Input_Clock[pos].getElapsedTime().asMicroseconds(); \
28
+ if (time >= (L_Input_threshold * 20)) \
29
+ if((time % (L_Input_threshold * 8)) < L_Input_threshold) \
30
+ return Qtrue;
31
+ #elif L_TRIGGER_METHOD == L_TRIGGER_COUNT_METHOD
32
+ unsigned long L_Input_Count[L_INPUT_NUM_INGAME_KEY];
33
+ unsigned long L_Mouse_Count[L_INPUT_NUM_MOUSE_KEY];
34
+ #define L_TRIGGER_RESET_Mouse(i) L_Mouse_Count[i] = frame_count
35
+ #define L_TRIGGER_RESET_Input(i) L_Input_Count[i] = frame_count
36
+ #define L_Trigger_Mouse(pos) L_Mouse_Count[pos] == (frame_count - 1)
37
+ #define L_Trigger_Input(pos) L_Input_Count[pos] == (frame_count - 1)
38
+ #define L_Repeat_Input(pos) unsigned long count = (frame_count - L_Input_Count[pos]); \
39
+ if(count > (frame_rate / 2)) \
40
+ { \
41
+ count -= (frame_rate / 2); \
42
+ if ((count % (frame_rate / 6)) == 0) \
43
+ return Qtrue; \
44
+ }
45
+ #endif
46
+ bool L_Input_Press[L_INPUT_NUM_INGAME_KEY];
47
+ bool L_Mouse_Press[L_INPUT_NUM_MOUSE_KEY];
48
+ long L_Input_threshold = 0;
49
+ long L_Mouse_Wheel_Delta = 0;
50
+ double L_Mouse_Pos_X = 0;
51
+ double L_Mouse_Pos_Y = 0;
52
+ std::string L_EnteredText = std::string();
53
+
54
+ unsigned int L_Input_Get_Key_Position(VALUE hash_ids, VALUE hash_key);
55
+
56
+ void Init_Input()
57
+ {
58
+ rb_mInput = rb_define_module_under(rb_mLiteRGSS, "Input");
59
+ rb_mMouse = rb_define_module_under(rb_mLiteRGSS, "Mouse");
60
+ VALUE rb_mKeyboard = rb_define_module_under(rb_mInput, "Keyboard");
61
+ /* function definition */
62
+ rb_define_module_function(rb_mKeyboard, "press?", _rbf rb_KeyBoard_Press, 1);
63
+
64
+ rb_define_module_function(rb_mInput, "press?", _rbf rb_Input_Press, 1);
65
+ rb_define_module_function(rb_mInput, "trigger?", _rbf rb_Input_Trigger, 1);
66
+ rb_define_module_function(rb_mInput, "repeat?", _rbf rb_Input_Repeat, 1);
67
+ rb_define_module_function(rb_mInput, "released?", _rbf rb_Input_Released, 1);
68
+ rb_define_module_function(rb_mInput, "dir4", _rbf rb_Input_dir4, 0);
69
+ rb_define_module_function(rb_mInput, "dir8", _rbf rb_Input_dir8, 0);
70
+ rb_define_module_function(rb_mInput, "main_joy", _rbf rb_Input_getMainJoypad, 0);
71
+ rb_define_module_function(rb_mInput, "main_joy=", _rbf rb_Input_setMainJoypad, 1);
72
+ rb_define_module_function(rb_mInput, "x_axis", _rbf rb_Input_getMainXAxis, 0);
73
+ rb_define_module_function(rb_mInput, "x_axis=", _rbf rb_Input_setMainXAxis, 1);
74
+ rb_define_module_function(rb_mInput, "y_axis", _rbf rb_Input_getMainYAxis, 0);
75
+ rb_define_module_function(rb_mInput, "y_axis=", _rbf rb_Input_setMainYAxis, 1);
76
+ rb_define_module_function(rb_mInput, "get_text", _rbf rb_Input_getText, 0);
77
+
78
+ rb_define_module_function(rb_mMouse, "press?", _rbf rb_Mouse_Press, 1);
79
+ rb_define_module_function(rb_mMouse, "trigger?", _rbf rb_Mouse_Trigger, 1);
80
+ rb_define_module_function(rb_mMouse, "released?", _rbf rb_Mouse_Released, 1);
81
+ rb_define_module_function(rb_mMouse, "x", _rbf rb_Mouse_x, 0);
82
+ rb_define_module_function(rb_mMouse, "y", _rbf rb_Mouse_y, 0);
83
+ rb_define_module_function(rb_mMouse, "wheel", _rbf rb_Mouse_Wheel, 0);
84
+ rb_define_module_function(rb_mMouse, "wheel=", _rbf rb_Mouse_Wheel_set, 1);
85
+
86
+ /* usefull id */
87
+ rb_mInputEach = rb_intern("each_key");
88
+ /* Constants definition */
89
+ VALUE tmp, key;
90
+ rb_mMouseKey = rb_hash_new();
91
+ rb_mMouseKeyID = rb_hash_new();
92
+ rb_define_const(rb_mMouse, "Keys", rb_mMouseKey);
93
+ rb_gc_register_address(&rb_mMouseKey); // Protect the Hash from being GC'd
94
+ rb_gc_register_address(&rb_mMouseKeyID);
95
+ RHASH_SET_IFNONE(rb_mMouseKey, tmp = rb_int2inum(sf::Mouse::Button::Left));
96
+ RHASH_SET_IFNONE(rb_mMouseKeyID, LONG2FIX(0));
97
+ rb_hash_aset(rb_mMouseKey, key = rb_id2sym(rb_intern("LEFT")), tmp);
98
+ rb_hash_aset(rb_mMouseKeyID, key, LONG2FIX(0));
99
+ rb_hash_aset(rb_mMouseKey, key = rb_id2sym(rb_intern("left")), tmp);
100
+ rb_hash_aset(rb_mMouseKeyID, key, LONG2FIX(0));
101
+ rb_hash_aset(rb_mMouseKey, key = rb_id2sym(rb_intern("RIGHT")), tmp = rb_int2inum(sf::Mouse::Button::Right));
102
+ rb_hash_aset(rb_mMouseKeyID, key, LONG2FIX(1));
103
+ rb_hash_aset(rb_mMouseKey, key = rb_id2sym(rb_intern("right")), tmp);
104
+ rb_hash_aset(rb_mMouseKeyID, key, LONG2FIX(1));
105
+ rb_hash_aset(rb_mMouseKey, key = rb_id2sym(rb_intern("MIDDLE")), tmp = rb_int2inum(sf::Mouse::Button::Middle));
106
+ rb_hash_aset(rb_mMouseKeyID, key, LONG2FIX(2));
107
+ rb_hash_aset(rb_mMouseKey, key = rb_id2sym(rb_intern("middle")), tmp);
108
+ rb_hash_aset(rb_mMouseKeyID, key, LONG2FIX(2));
109
+ rb_hash_aset(rb_mMouseKey, key = rb_id2sym(rb_intern("X1")), tmp = rb_int2inum(sf::Mouse::Button::XButton1));
110
+ rb_hash_aset(rb_mMouseKeyID, key, LONG2FIX(3));
111
+ rb_hash_aset(rb_mMouseKey, key = rb_id2sym(rb_intern("x1")), tmp);
112
+ rb_hash_aset(rb_mMouseKeyID, key, LONG2FIX(3));
113
+ rb_hash_aset(rb_mMouseKey, key = rb_id2sym(rb_intern("X2")), tmp = rb_int2inum(sf::Mouse::Button::XButton2));
114
+ rb_hash_aset(rb_mMouseKeyID, key, LONG2FIX(4));
115
+ rb_hash_aset(rb_mMouseKey, key = rb_id2sym(rb_intern("x2")), tmp);
116
+ rb_hash_aset(rb_mMouseKeyID, key, LONG2FIX(4));
117
+
118
+ rb_mInputKey = rb_hash_new();
119
+ rb_mInputKeyID = rb_hash_new();
120
+ rb_define_const(rb_mInput, "Keys", rb_mInputKey);
121
+ rb_gc_register_address(&rb_mInputKey); // Protect the Hash from being GC'd
122
+ rb_gc_register_address(&rb_mInputKeyID);
123
+ RHASH_SET_IFNONE(rb_mInputKey, tmp = rb_ary_new());
124
+ RHASH_SET_IFNONE(rb_mInputKeyID, LONG2FIX(0));
125
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("A")), tmp);
126
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(0));
127
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::C));
128
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Return));
129
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Space));
130
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("B")), tmp = rb_ary_new());
131
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(1));
132
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::X));
133
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Escape));
134
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::LShift));
135
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::RShift));
136
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::BackSpace));
137
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("X")), tmp = rb_ary_new());
138
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(2));
139
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::V));
140
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::LAlt));
141
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("Y")), tmp = rb_ary_new());
142
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(3));
143
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::W));
144
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::RAlt));
145
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("L")), tmp = rb_ary_new());
146
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(4));
147
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::A));
148
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("R")), tmp = rb_ary_new());
149
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(5));
150
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::E));
151
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("L2")), tmp = rb_ary_new());
152
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(6));
153
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Num1));
154
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("R2")), tmp = rb_ary_new());
155
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(7));
156
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Num3));
157
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("L3")), tmp = rb_ary_new());
158
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(8));
159
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("R3")), tmp = rb_ary_new());
160
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(9));
161
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("START")), tmp = rb_ary_new());
162
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(10));
163
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::B));
164
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("start")), tmp);
165
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(10));
166
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("SELECT")), tmp = rb_ary_new());
167
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(11));
168
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::N));
169
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("select")), tmp);
170
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(11));
171
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("HOME")), tmp = rb_ary_new());
172
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(12));
173
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::LControl));
174
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::RControl));
175
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("home")), tmp);
176
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(12));
177
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("UP")), tmp = rb_ary_new());
178
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(13));
179
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Up));
180
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Z));
181
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Numpad8));
182
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("up")), tmp);
183
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(13));
184
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("DOWN")), tmp = rb_ary_new());
185
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(14));
186
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Down));
187
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::S));
188
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Numpad2));
189
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("down")), tmp);
190
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(14));
191
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("LEFT")), tmp = rb_ary_new());
192
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(15));
193
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Left));
194
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Q));
195
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Numpad4));
196
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("left")), tmp);
197
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(15));
198
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("RIGHT")), tmp = rb_ary_new());
199
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(16));
200
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Right));
201
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::D));
202
+ rb_ary_push(tmp, rb_int2inum(sf::Keyboard::Numpad6));
203
+ rb_hash_aset(rb_mInputKey, key = rb_id2sym(rb_intern("right")), tmp);
204
+ rb_hash_aset(rb_mInputKeyID, key, LONG2FIX(16));
205
+
206
+ rb_mInputMainJoy = LONG2FIX(0);
207
+ rb_define_const(rb_mInput, "JoyAxisX", tmp = rb_int2inum(sf::Joystick::Axis::X));
208
+ rb_mInputMainAxisX = tmp;
209
+ rb_define_const(rb_mInput, "JoyAxisY", rb_int2inum(sf::Joystick::Axis::Y));
210
+ rb_mInputMainAxisY = tmp;
211
+ rb_define_const(rb_mInput, "JoyAxisZ", rb_int2inum(sf::Joystick::Axis::Z));
212
+ rb_define_const(rb_mInput, "JoyAxisR", rb_int2inum(sf::Joystick::Axis::R));
213
+ rb_define_const(rb_mInput, "JoyAxisU", rb_int2inum(sf::Joystick::Axis::U));
214
+ rb_define_const(rb_mInput, "JoyAxisV", rb_int2inum(sf::Joystick::Axis::V));
215
+ rb_define_const(rb_mInput, "JoyAxisPovX", rb_int2inum(sf::Joystick::Axis::PovX));
216
+ rb_define_const(rb_mInput, "JoyAxisPovY", rb_int2inum(sf::Joystick::Axis::PovY));
217
+
218
+ rb_define_const(rb_mKeyboard, "A", rb_int2inum(sf::Keyboard::A));
219
+ rb_define_const(rb_mKeyboard, "B", rb_int2inum(sf::Keyboard::B));
220
+ rb_define_const(rb_mKeyboard, "C", rb_int2inum(sf::Keyboard::C));
221
+ rb_define_const(rb_mKeyboard, "D", rb_int2inum(sf::Keyboard::D));
222
+ rb_define_const(rb_mKeyboard, "E", rb_int2inum(sf::Keyboard::E));
223
+ rb_define_const(rb_mKeyboard, "F", rb_int2inum(sf::Keyboard::F));
224
+ rb_define_const(rb_mKeyboard, "G", rb_int2inum(sf::Keyboard::G));
225
+ rb_define_const(rb_mKeyboard, "H", rb_int2inum(sf::Keyboard::H));
226
+ rb_define_const(rb_mKeyboard, "I", rb_int2inum(sf::Keyboard::I));
227
+ rb_define_const(rb_mKeyboard, "J", rb_int2inum(sf::Keyboard::J));
228
+ rb_define_const(rb_mKeyboard, "K", rb_int2inum(sf::Keyboard::K));
229
+ rb_define_const(rb_mKeyboard, "L", rb_int2inum(sf::Keyboard::L));
230
+ rb_define_const(rb_mKeyboard, "M", rb_int2inum(sf::Keyboard::M));
231
+ rb_define_const(rb_mKeyboard, "N", rb_int2inum(sf::Keyboard::N));
232
+ rb_define_const(rb_mKeyboard, "O", rb_int2inum(sf::Keyboard::O));
233
+ rb_define_const(rb_mKeyboard, "P", rb_int2inum(sf::Keyboard::P));
234
+ rb_define_const(rb_mKeyboard, "Q", rb_int2inum(sf::Keyboard::Q));
235
+ rb_define_const(rb_mKeyboard, "R", rb_int2inum(sf::Keyboard::R));
236
+ rb_define_const(rb_mKeyboard, "S", rb_int2inum(sf::Keyboard::S));
237
+ rb_define_const(rb_mKeyboard, "T", rb_int2inum(sf::Keyboard::T));
238
+ rb_define_const(rb_mKeyboard, "U", rb_int2inum(sf::Keyboard::U));
239
+ rb_define_const(rb_mKeyboard, "V", rb_int2inum(sf::Keyboard::V));
240
+ rb_define_const(rb_mKeyboard, "W", rb_int2inum(sf::Keyboard::W));
241
+ rb_define_const(rb_mKeyboard, "X", rb_int2inum(sf::Keyboard::X));
242
+ rb_define_const(rb_mKeyboard, "Y", rb_int2inum(sf::Keyboard::Y));
243
+ rb_define_const(rb_mKeyboard, "Z", rb_int2inum(sf::Keyboard::Z));
244
+ rb_define_const(rb_mKeyboard, "Num0", rb_int2inum(sf::Keyboard::Num0));
245
+ rb_define_const(rb_mKeyboard, "Num1", rb_int2inum(sf::Keyboard::Num1));
246
+ rb_define_const(rb_mKeyboard, "Num2", rb_int2inum(sf::Keyboard::Num2));
247
+ rb_define_const(rb_mKeyboard, "Num3", rb_int2inum(sf::Keyboard::Num3));
248
+ rb_define_const(rb_mKeyboard, "Num4", rb_int2inum(sf::Keyboard::Num4));
249
+ rb_define_const(rb_mKeyboard, "Num5", rb_int2inum(sf::Keyboard::Num5));
250
+ rb_define_const(rb_mKeyboard, "Num6", rb_int2inum(sf::Keyboard::Num6));
251
+ rb_define_const(rb_mKeyboard, "Num7", rb_int2inum(sf::Keyboard::Num7));
252
+ rb_define_const(rb_mKeyboard, "Num8", rb_int2inum(sf::Keyboard::Num8));
253
+ rb_define_const(rb_mKeyboard, "Num9", rb_int2inum(sf::Keyboard::Num9));
254
+ rb_define_const(rb_mKeyboard, "Escape", rb_int2inum(sf::Keyboard::Escape));
255
+ rb_define_const(rb_mKeyboard, "LControl", rb_int2inum(sf::Keyboard::LControl));
256
+ rb_define_const(rb_mKeyboard, "LShift", rb_int2inum(sf::Keyboard::LShift));
257
+ rb_define_const(rb_mKeyboard, "LAlt", rb_int2inum(sf::Keyboard::LAlt));
258
+ rb_define_const(rb_mKeyboard, "LSystem", rb_int2inum(sf::Keyboard::LSystem));
259
+ rb_define_const(rb_mKeyboard, "RControl", rb_int2inum(sf::Keyboard::RControl));
260
+ rb_define_const(rb_mKeyboard, "RShift", rb_int2inum(sf::Keyboard::RShift));
261
+ rb_define_const(rb_mKeyboard, "RAlt", rb_int2inum(sf::Keyboard::RAlt));
262
+ rb_define_const(rb_mKeyboard, "RSystem", rb_int2inum(sf::Keyboard::RSystem));
263
+ rb_define_const(rb_mKeyboard, "Menu", rb_int2inum(sf::Keyboard::Menu));
264
+ rb_define_const(rb_mKeyboard, "LBracket", rb_int2inum(sf::Keyboard::LBracket));
265
+ rb_define_const(rb_mKeyboard, "RBracket", rb_int2inum(sf::Keyboard::RBracket));
266
+ rb_define_const(rb_mKeyboard, "Semicolon", rb_int2inum(sf::Keyboard::Semicolon));
267
+ rb_define_const(rb_mKeyboard, "Comma", rb_int2inum(sf::Keyboard::Comma));
268
+ rb_define_const(rb_mKeyboard, "Period", rb_int2inum(sf::Keyboard::Period));
269
+ rb_define_const(rb_mKeyboard, "Quote", rb_int2inum(sf::Keyboard::Quote));
270
+ rb_define_const(rb_mKeyboard, "Slash", rb_int2inum(sf::Keyboard::Slash));
271
+ rb_define_const(rb_mKeyboard, "Backslash", rb_int2inum(sf::Keyboard::Backslash));
272
+ rb_define_const(rb_mKeyboard, "Tilde", rb_int2inum(sf::Keyboard::Tilde));
273
+ rb_define_const(rb_mKeyboard, "Equal", rb_int2inum(sf::Keyboard::Equal));
274
+ rb_define_const(rb_mKeyboard, "Hyphen", rb_int2inum(sf::Keyboard::Hyphen));
275
+ rb_define_const(rb_mKeyboard, "Space", rb_int2inum(sf::Keyboard::Space));
276
+ rb_define_const(rb_mKeyboard, "Enter", rb_int2inum(sf::Keyboard::Enter));
277
+ rb_define_const(rb_mKeyboard, "Backspace", rb_int2inum(sf::Keyboard::Backspace));
278
+ rb_define_const(rb_mKeyboard, "Tab", rb_int2inum(sf::Keyboard::Tab));
279
+ rb_define_const(rb_mKeyboard, "PageUp", rb_int2inum(sf::Keyboard::PageUp));
280
+ rb_define_const(rb_mKeyboard, "PageDown", rb_int2inum(sf::Keyboard::PageDown));
281
+ rb_define_const(rb_mKeyboard, "End", rb_int2inum(sf::Keyboard::End));
282
+ rb_define_const(rb_mKeyboard, "Home", rb_int2inum(sf::Keyboard::Home));
283
+ rb_define_const(rb_mKeyboard, "Insert", rb_int2inum(sf::Keyboard::Insert));
284
+ rb_define_const(rb_mKeyboard, "Delete", rb_int2inum(sf::Keyboard::Delete));
285
+ rb_define_const(rb_mKeyboard, "Add", rb_int2inum(sf::Keyboard::Add));
286
+ rb_define_const(rb_mKeyboard, "Subtract", rb_int2inum(sf::Keyboard::Subtract));
287
+ rb_define_const(rb_mKeyboard, "Multiply", rb_int2inum(sf::Keyboard::Multiply));
288
+ rb_define_const(rb_mKeyboard, "Divide", rb_int2inum(sf::Keyboard::Divide));
289
+ rb_define_const(rb_mKeyboard, "Left", rb_int2inum(sf::Keyboard::Left));
290
+ rb_define_const(rb_mKeyboard, "Right", rb_int2inum(sf::Keyboard::Right));
291
+ rb_define_const(rb_mKeyboard, "Up", rb_int2inum(sf::Keyboard::Up));
292
+ rb_define_const(rb_mKeyboard, "Down", rb_int2inum(sf::Keyboard::Down));
293
+ rb_define_const(rb_mKeyboard, "Numpad0", rb_int2inum(sf::Keyboard::Numpad0));
294
+ rb_define_const(rb_mKeyboard, "Numpad1", rb_int2inum(sf::Keyboard::Numpad1));
295
+ rb_define_const(rb_mKeyboard, "Numpad2", rb_int2inum(sf::Keyboard::Numpad2));
296
+ rb_define_const(rb_mKeyboard, "Numpad3", rb_int2inum(sf::Keyboard::Numpad3));
297
+ rb_define_const(rb_mKeyboard, "Numpad4", rb_int2inum(sf::Keyboard::Numpad4));
298
+ rb_define_const(rb_mKeyboard, "Numpad5", rb_int2inum(sf::Keyboard::Numpad5));
299
+ rb_define_const(rb_mKeyboard, "Numpad6", rb_int2inum(sf::Keyboard::Numpad6));
300
+ rb_define_const(rb_mKeyboard, "Numpad7", rb_int2inum(sf::Keyboard::Numpad7));
301
+ rb_define_const(rb_mKeyboard, "Numpad8", rb_int2inum(sf::Keyboard::Numpad8));
302
+ rb_define_const(rb_mKeyboard, "Numpad9", rb_int2inum(sf::Keyboard::Numpad9));
303
+ rb_define_const(rb_mKeyboard, "F1", rb_int2inum(sf::Keyboard::F1));
304
+ rb_define_const(rb_mKeyboard, "F2", rb_int2inum(sf::Keyboard::F2));
305
+ rb_define_const(rb_mKeyboard, "F3", rb_int2inum(sf::Keyboard::F3));
306
+ rb_define_const(rb_mKeyboard, "F4", rb_int2inum(sf::Keyboard::F4));
307
+ rb_define_const(rb_mKeyboard, "F5", rb_int2inum(sf::Keyboard::F5));
308
+ rb_define_const(rb_mKeyboard, "F6", rb_int2inum(sf::Keyboard::F6));
309
+ rb_define_const(rb_mKeyboard, "F7", rb_int2inum(sf::Keyboard::F7));
310
+ rb_define_const(rb_mKeyboard, "F8", rb_int2inum(sf::Keyboard::F8));
311
+ rb_define_const(rb_mKeyboard, "F9", rb_int2inum(sf::Keyboard::F9));
312
+ rb_define_const(rb_mKeyboard, "F10", rb_int2inum(sf::Keyboard::F10));
313
+ rb_define_const(rb_mKeyboard, "F11", rb_int2inum(sf::Keyboard::F11));
314
+ rb_define_const(rb_mKeyboard, "F12", rb_int2inum(sf::Keyboard::F12));
315
+ rb_define_const(rb_mKeyboard, "F13", rb_int2inum(sf::Keyboard::F13));
316
+ rb_define_const(rb_mKeyboard, "F14", rb_int2inum(sf::Keyboard::F14));
317
+ rb_define_const(rb_mKeyboard, "F15", rb_int2inum(sf::Keyboard::F15));
318
+ rb_define_const(rb_mKeyboard, "Pause", rb_int2inum(sf::Keyboard::Pause));
319
+ }
320
+
321
+ /* Reset the clock of the Input System */
322
+ void L_Input_Reset_Clocks()
323
+ {
324
+ unsigned int i;
325
+ for(i = 0; i < L_INPUT_NUM_INGAME_KEY; i++)
326
+ {
327
+ L_TRIGGER_RESET_Input(i);
328
+ L_Input_Press[i] = false;
329
+ }
330
+ for(i = 0;i < L_INPUT_NUM_MOUSE_KEY; i++)
331
+ {
332
+ L_TRIGGER_RESET_Mouse(i);
333
+ L_Mouse_Press[i] = false;
334
+ }
335
+ }
336
+
337
+ unsigned int L_Input_Get_Key_Position(VALUE hash_ids, VALUE hash_key)
338
+ {
339
+ return rb_num2ulong(rb_hash_aref(hash_ids, hash_key));
340
+ }
341
+
342
+ /* Blocks that update the press key state */
343
+ VALUE rb_Input_KeyStateDown_Block(VALUE hash_key, VALUE id_key, int argc, VALUE* argv)
344
+ {
345
+ VALUE array = rb_hash_aref(rb_mInputKey, hash_key);
346
+ if(rb_ary_includes(array, id_key) == Qtrue)
347
+ {
348
+ unsigned int pos = L_Input_Get_Key_Position(rb_mInputKeyID, hash_key);
349
+ if(!L_Input_Press[pos])
350
+ {
351
+ L_Input_Press[pos] = true;
352
+ L_TRIGGER_RESET_Input(pos);
353
+ }
354
+ }
355
+ return Qnil;
356
+ }
357
+
358
+ VALUE rb_Input_KeyStateUp_Block(VALUE hash_key, VALUE id_key, int argc, VALUE* argv)
359
+ {
360
+ VALUE array = rb_hash_aref(rb_mInputKey, hash_key);
361
+ if(rb_ary_includes(array, id_key) == Qtrue)
362
+ {
363
+ unsigned int pos = L_Input_Get_Key_Position(rb_mInputKeyID, hash_key);
364
+ if(L_Input_Press[pos])
365
+ {
366
+ L_Input_Press[pos] = false;
367
+ L_TRIGGER_RESET_Input(pos);
368
+ }
369
+ }
370
+ return Qnil;
371
+ }
372
+
373
+ /* Update the key state when an event has been triggered */
374
+ void L_Input_Update_Key(sf::Keyboard::Key code, bool state)
375
+ {
376
+ rb_block_call(rb_mInputKey, rb_mInputEach, 0, NULL,
377
+ (rb_block_call_func_t)( state ? rb_Input_KeyStateDown_Block : rb_Input_KeyStateUp_Block),
378
+ rb_int2inum(code));
379
+ }
380
+
381
+ void L_Input_Mouse_Pos_Update(int x, int y)
382
+ {
383
+ if (x < 0)
384
+ x = -256;
385
+ L_Mouse_Pos_X = static_cast<double>(x);
386
+ L_Mouse_Pos_Y = static_cast<double>(y);
387
+ }
388
+
389
+ void L_Input_Mouse_Wheel_Update(long delta)
390
+ {
391
+ L_Mouse_Wheel_Delta += delta;
392
+ }
393
+
394
+ void L_Input_Mouse_Button_Update(long button, bool state)
395
+ {
396
+ if(button >= 0 && button < L_INPUT_NUM_MOUSE_KEY)
397
+ {
398
+ if(L_Mouse_Press[button] != state)
399
+ {
400
+ L_Mouse_Press[button] = state;
401
+ L_TRIGGER_RESET_Mouse(button);
402
+ }
403
+ }
404
+ }
405
+
406
+ void L_Input_Update_Joy(unsigned int joy_id, unsigned int key, bool state)
407
+ {
408
+ rb_block_call(rb_mInputKey, rb_mInputEach, 0, NULL,
409
+ (rb_block_call_func_t)( state ? rb_Input_KeyStateDown_Block : rb_Input_KeyStateUp_Block),
410
+ rb_int2inum(-(32 * joy_id) - key - 1));
411
+ }
412
+
413
+ void L_Input_Update_JoyPos(unsigned int joy_id, long axis, float position)
414
+ {
415
+ VALUE joypad = LONG2FIX(joy_id);
416
+ if(joypad != rb_mInputMainJoy)
417
+ return;
418
+ VALUE raxis = LONG2FIX(axis);
419
+ if(raxis == rb_mInputMainAxisX)
420
+ {
421
+ if(position < -25.0f)
422
+ if(!L_Input_Press[15])
423
+ {
424
+ L_Input_Press[15] = true;
425
+ L_TRIGGER_RESET_Input(15);
426
+ }
427
+ else if(position > 25.0f)
428
+ if(!L_Input_Press[16])
429
+ {
430
+ L_Input_Press[16] = true;
431
+ L_TRIGGER_RESET_Input(16);
432
+ }
433
+ else
434
+ {
435
+ if(L_Input_Press[16])
436
+ {
437
+ L_Input_Press[16] = false;
438
+ L_TRIGGER_RESET_Input(16);
439
+ }
440
+ if(L_Input_Press[15])
441
+ {
442
+ L_Input_Press[15] = false;
443
+ L_TRIGGER_RESET_Input(15);
444
+ }
445
+ }
446
+ }
447
+ else if(raxis == rb_mInputMainAxisY)
448
+ {
449
+ if(position < -25.0f)
450
+ if(!L_Input_Press[13])
451
+ {
452
+ L_Input_Press[13] = true;
453
+ L_TRIGGER_RESET_Input(13);
454
+ }
455
+ else if(position > 25.0f)
456
+ if(!L_Input_Press[14])
457
+ {
458
+ L_Input_Press[14] = true;
459
+ L_TRIGGER_RESET_Input(14);
460
+ }
461
+ else
462
+ {
463
+ if(L_Input_Press[14])
464
+ {
465
+ L_Input_Press[14] = false;
466
+ L_TRIGGER_RESET_Input(14);
467
+ }
468
+ if(L_Input_Press[13])
469
+ {
470
+ L_Input_Press[13] = false;
471
+ L_TRIGGER_RESET_Input(13);
472
+ }
473
+ }
474
+ }
475
+ }
476
+
477
+ void L_Input_Setusec_threshold(long usec)
478
+ {
479
+ if(usec > 1)
480
+ L_Input_threshold = usec - 100;
481
+ else
482
+ L_Input_threshold = 1;
483
+ }
484
+
485
+
486
+ VALUE rb_Input_Press(VALUE self, VALUE key_sym)
487
+ {
488
+ unsigned int pos = L_Input_Get_Key_Position(rb_mInputKeyID, key_sym);
489
+ return L_Input_Press[pos] ? Qtrue : Qfalse;
490
+ }
491
+
492
+ VALUE rb_Input_Trigger(VALUE self, VALUE key_sym)
493
+ {
494
+ unsigned int pos = L_Input_Get_Key_Position(rb_mInputKeyID, key_sym);
495
+ bool pressed = L_Input_Press[pos];
496
+ if(!pressed)
497
+ return Qfalse;
498
+ if(L_Trigger_Input(pos))
499
+ return Qtrue;
500
+ return Qfalse;
501
+ }
502
+
503
+ VALUE rb_Input_Repeat(VALUE self, VALUE key_sym)
504
+ {
505
+ unsigned int pos = L_Input_Get_Key_Position(rb_mInputKeyID, key_sym);
506
+ bool pressed = L_Input_Press[pos];
507
+ if(!pressed)
508
+ return Qfalse;
509
+ /* Trigger */
510
+ if(L_Trigger_Input(pos))
511
+ return Qtrue;
512
+ /* Repeat */
513
+ L_Repeat_Input(pos)
514
+ return Qfalse;
515
+ }
516
+
517
+ VALUE rb_Input_Released(VALUE self, VALUE key_sym)
518
+ {
519
+ unsigned int pos = L_Input_Get_Key_Position(rb_mInputKeyID, key_sym);
520
+ bool pressed = L_Input_Press[pos];
521
+ if(pressed)
522
+ return Qfalse;
523
+ if(L_Trigger_Input(pos))
524
+ return Qtrue;
525
+ return Qfalse;
526
+ }
527
+
528
+
529
+ VALUE rb_Input_dir4(VALUE self)
530
+ {
531
+ if(L_Input_Press[13])
532
+ return LONG2FIX(8);
533
+ if(L_Input_Press[14])
534
+ return LONG2FIX(2);
535
+ if(L_Input_Press[15])
536
+ return LONG2FIX(4);
537
+ if(L_Input_Press[16])
538
+ return LONG2FIX(6);
539
+ return LONG2FIX(0);
540
+ }
541
+
542
+ VALUE rb_Input_dir8(VALUE self)
543
+ {
544
+ // Up Left / Up Right / Up
545
+ if(L_Input_Press[13])
546
+ {
547
+ if(L_Input_Press[15])
548
+ return LONG2FIX(7);
549
+ else if(L_Input_Press[16])
550
+ return LONG2FIX(9);
551
+ return LONG2FIX(8);
552
+ }
553
+ // Down Left / Down Right / Down
554
+ if(L_Input_Press[14])
555
+ {
556
+ if(L_Input_Press[15])
557
+ return LONG2FIX(1);
558
+ else if(L_Input_Press[16])
559
+ return LONG2FIX(3);
560
+ return LONG2FIX(2);
561
+ }
562
+ if(L_Input_Press[15])
563
+ return LONG2FIX(4);
564
+ if(L_Input_Press[16])
565
+ return LONG2FIX(6);
566
+ return LONG2FIX(0);
567
+ }
568
+
569
+ VALUE rb_Input_setMainJoypad(VALUE self, VALUE id)
570
+ {
571
+ rb_check_type(id, T_FIXNUM);
572
+ rb_mInputMainJoy = id;
573
+ return id;
574
+ }
575
+
576
+ VALUE rb_Input_setMainXAxis(VALUE self, VALUE axis)
577
+ {
578
+ rb_check_type(axis, T_FIXNUM);
579
+ rb_mInputMainAxisX = axis;
580
+ return axis;
581
+ }
582
+
583
+ VALUE rb_Input_setMainYAxis(VALUE self, VALUE axis)
584
+ {
585
+ rb_check_type(axis, T_FIXNUM);
586
+ rb_mInputMainAxisY = axis;
587
+ return axis;
588
+ }
589
+
590
+ VALUE rb_Input_getMainJoypad(VALUE self)
591
+ {
592
+ return rb_mInputMainJoy;
593
+ }
594
+
595
+ VALUE rb_Input_getMainXAxis(VALUE self)
596
+ {
597
+ return rb_mInputMainAxisX;
598
+ }
599
+
600
+ VALUE rb_Input_getMainYAxis(VALUE self)
601
+ {
602
+ return rb_mInputMainAxisY;
603
+ }
604
+
605
+ VALUE rb_Input_getText(VALUE self)
606
+ {
607
+ if (L_EnteredText.size() > 0)
608
+ return rb_utf8_str_new_cstr(L_EnteredText.c_str());
609
+ return Qnil;
610
+ }
611
+
612
+ VALUE rb_Mouse_Press(VALUE self, VALUE key_sym)
613
+ {
614
+ unsigned int pos = L_Input_Get_Key_Position(rb_mMouseKeyID, key_sym);
615
+ return L_Mouse_Press[pos] ? Qtrue : Qfalse;
616
+ }
617
+
618
+ VALUE rb_Mouse_Trigger(VALUE self, VALUE key_sym)
619
+ {
620
+ unsigned int pos = L_Input_Get_Key_Position(rb_mMouseKeyID, key_sym);
621
+ bool pressed = L_Mouse_Press[pos];
622
+ if(!pressed)
623
+ return Qfalse;
624
+ if(L_Trigger_Mouse(pos))
625
+ return Qtrue;
626
+ return Qfalse;
627
+ }
628
+
629
+ VALUE rb_Mouse_Released(VALUE self, VALUE key_sym)
630
+ {
631
+ unsigned int pos = L_Input_Get_Key_Position(rb_mMouseKeyID, key_sym);
632
+ bool pressed = L_Mouse_Press[pos];
633
+ if(pressed)
634
+ return Qfalse;
635
+ if(L_Trigger_Mouse(pos))
636
+ return Qtrue;
637
+ return Qfalse;
638
+ }
639
+
640
+ VALUE rb_Mouse_x(VALUE self)
641
+ {
642
+ return LONG2NUM(static_cast<long>(L_Mouse_Pos_X / Graphics_Scale));
643
+ }
644
+
645
+ VALUE rb_Mouse_y(VALUE self)
646
+ {
647
+ return LONG2NUM(static_cast<long>(L_Mouse_Pos_Y / Graphics_Scale));
648
+ }
649
+
650
+ VALUE rb_Mouse_Wheel(VALUE self)
651
+ {
652
+ return LONG2NUM(L_Mouse_Wheel_Delta);
653
+ }
654
+
655
+ VALUE rb_Mouse_Wheel_set(VALUE self, VALUE val)
656
+ {
657
+ L_Mouse_Wheel_Delta = NUM2LONG(val);
658
+ return val;
659
+ }
660
+
661
+ VALUE rb_KeyBoard_Press(VALUE self, VALUE val)
662
+ {
663
+ return sf::Keyboard::isKeyPressed(static_cast<sf::Keyboard::Key>(rb_num2long(val))) ? Qtrue : Qfalse;
664
+ }