summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/plugins/brickmania.c123
-rw-r--r--apps/plugins/pong.c24
2 files changed, 111 insertions, 36 deletions
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index 756b4de0ec..f3ccaad783 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -446,6 +446,20 @@ enum menu_items {
446#endif 446#endif
447 447
448 448
449#ifdef HAVE_TOUCHPAD
450#include "lib/touchscreen.h"
451
452static struct ts_mapping main_menu_items[4] =
453{
454 {MENU_ITEMXOFS, BMPYOFS_start, MENU_ITEMWIDTH, MENU_ITEMHEIGHT},
455 {MENU_ITEMXOFS, BMPYOFS_resume, MENU_ITEMWIDTH, MENU_ITEMHEIGHT},
456 {MENU_ITEMXOFS, BMPYOFS_help, MENU_ITEMWIDTH, MENU_ITEMHEIGHT},
457 {MENU_ITEMXOFS, BMPYOFS_quit, MENU_ITEMWIDTH, MENU_ITEMHEIGHT}
458};
459static struct ts_mappings main_menu = {main_menu_items, 4};
460#endif
461
462
449int levels_num = 29; 463int levels_num = 29;
450 464
451static unsigned char levels[29][8][10] = { 465static unsigned char levels[29][8][10] = {
@@ -1008,6 +1022,18 @@ int game_menu(int when)
1008 rb->lcd_update(); 1022 rb->lcd_update();
1009 1023
1010 button = rb->button_get(true); 1024 button = rb->button_get(true);
1025#ifdef HAVE_TOUCHPAD
1026 if(button & BUTTON_TOUCHPAD)
1027 {
1028 unsigned int result = touchscreen_map(&main_menu, rb->button_get_data() >> 16, rb->button_get_data() & 0xffff);
1029 if(result != (unsigned)-1 && button & BUTTON_REL)
1030 {
1031 if(cur == (signed)result)
1032 button = SELECT;
1033 cur = result;
1034 }
1035 }
1036#endif
1011 switch(button) { 1037 switch(button) {
1012 case UP: 1038 case UP:
1013 case UP | BUTTON_REPEAT: 1039 case UP | BUTTON_REPEAT:
@@ -1148,6 +1174,9 @@ int help(int when)
1148#ifdef RC_QUIT 1174#ifdef RC_QUIT
1149 case RC_QUIT: 1175 case RC_QUIT:
1150#endif 1176#endif
1177#ifdef HAVE_TOUCHPAD
1178 case BUTTON_TOUCHPAD:
1179#endif
1151 case QUIT: 1180 case QUIT:
1152 switch (game_menu(when)) { 1181 switch (game_menu(when)) {
1153 case 0: 1182 case 0:
@@ -1840,46 +1869,74 @@ int game_loop(void)
1840 button = QUIT; 1869 button = QUIT;
1841#endif 1870#endif
1842 1871
1843 move_button=rb->button_status(); 1872#ifdef HAVE_TOUCHPAD
1844#ifdef ALTRIGHT 1873 if(button & BUTTON_TOUCHPAD)
1845 button_right=((move_button & RIGHT) || (move_button & ALTRIGHT)); 1874 {
1846 button_left=((move_button & LEFT) || (move_button & ALTLEFT)); 1875 short touch_x, touch_y;
1847#else 1876 touch_x = rb->button_get_data() >> 16;
1848 button_right=((move_button & RIGHT) || (SCROLL_FWD(button))); 1877 touch_y = rb->button_get_data() & 0xffff;
1849 button_left=((move_button & LEFT) || (SCROLL_BACK(button))); 1878 if(touch_y >= PAD_POS_Y && touch_y <= PAD_POS_Y+PAD_HEIGHT)
1850#endif 1879 {
1851 if ((con_game== 1 && start_game!=1) && (button_right || button_left)) 1880 pad_pos_x += (flip_sides ? -1 : 1) * ( (touch_x-pad_pos_x-PAD_WIDTH/2) / 4 );
1852 continue; 1881
1853 if ((button_right && flip_sides==false) || 1882 if(pad_pos_x < 0)
1854 (button_left && flip_sides==true)) { 1883 pad_pos_x = 0;
1855 if (pad_pos_x+8+PAD_WIDTH > LCD_WIDTH) { 1884 else if(pad_pos_x+PAD_WIDTH > LCD_WIDTH)
1856 for(k=0;k<used_balls;k++) 1885 pad_pos_x = LCD_WIDTH-PAD_WIDTH;
1857 if (start_game==1 || ball[k].glue)
1858 ball[k].pos_x+=LCD_WIDTH-pad_pos_x-PAD_WIDTH;
1859 pad_pos_x+=LCD_WIDTH-pad_pos_x-PAD_WIDTH;
1860 }
1861 else {
1862 for(k=0;k<used_balls;k++) 1886 for(k=0;k<used_balls;k++)
1863 if ((start_game==1 || ball[k].glue)) 1887 if ((start_game==1 || ball[k].glue))
1864 ball[k].pos_x+=8; 1888 ball[k].pos_x = pad_pos_x+PAD_WIDTH/2;
1865 pad_pos_x+=8;
1866 } 1889 }
1890
1891 if(button & BUTTON_REL)
1892 button = SELECT;
1867 } 1893 }
1868 else if ((button_left && flip_sides==false) || 1894 else
1869 (button_right && flip_sides==true)) { 1895 {
1870 if (pad_pos_x-8 < 0) { 1896#endif
1871 for(k=0;k<used_balls;k++) 1897 move_button=rb->button_status();
1872 if (start_game==1 || ball[k].glue) 1898 #ifdef ALTRIGHT
1873 ball[k].pos_x-=pad_pos_x; 1899 button_right=((move_button & RIGHT) || (move_button & ALTRIGHT));
1874 pad_pos_x-=pad_pos_x; 1900 button_left=((move_button & LEFT) || (move_button & ALTLEFT));
1901 #else
1902 button_right=((move_button & RIGHT) || (SCROLL_FWD(button)));
1903 button_left=((move_button & LEFT) || (SCROLL_BACK(button)));
1904 #endif
1905 if ((con_game== 1 && start_game!=1) && (button_right || button_left))
1906 continue;
1907 if ((button_right && flip_sides==false) ||
1908 (button_left && flip_sides==true)) {
1909 if (pad_pos_x+8+PAD_WIDTH > LCD_WIDTH) {
1910 for(k=0;k<used_balls;k++)
1911 if (start_game==1 || ball[k].glue)
1912 ball[k].pos_x+=LCD_WIDTH-pad_pos_x-PAD_WIDTH;
1913 pad_pos_x+=LCD_WIDTH-pad_pos_x-PAD_WIDTH;
1914 }
1915 else {
1916 for(k=0;k<used_balls;k++)
1917 if ((start_game==1 || ball[k].glue))
1918 ball[k].pos_x+=8;
1919 pad_pos_x+=8;
1920 }
1875 } 1921 }
1876 else { 1922 else if ((button_left && flip_sides==false) ||
1877 for(k=0;k<used_balls;k++) 1923 (button_right && flip_sides==true)) {
1878 if (start_game==1 || ball[k].glue) 1924 if (pad_pos_x-8 < 0) {
1879 ball[k].pos_x-=8; 1925 for(k=0;k<used_balls;k++)
1880 pad_pos_x-=8; 1926 if (start_game==1 || ball[k].glue)
1927 ball[k].pos_x-=pad_pos_x;
1928 pad_pos_x-=pad_pos_x;
1929 }
1930 else {
1931 for(k=0;k<used_balls;k++)
1932 if (start_game==1 || ball[k].glue)
1933 ball[k].pos_x-=8;
1934 pad_pos_x-=8;
1935 }
1881 } 1936 }
1937#ifdef HAVE_TOUCHPAD
1882 } 1938 }
1939#endif
1883 1940
1884 1941
1885 switch(button) { 1942 switch(button) {
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index c7382a58b2..d5bb626f60 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -199,10 +199,9 @@ void singlepad(int x, int y, int set)
199 } 199 }
200} 200}
201 201
202static int xpos[2]={0, LCD_WIDTH-PAD_WIDTH};
202void pad(struct pong *p, int pad) 203void pad(struct pong *p, int pad)
203{ 204{
204 static int xpos[2]={0, LCD_WIDTH-PAD_WIDTH};
205
206 /* clear existing pad */ 205 /* clear existing pad */
207 singlepad(xpos[pad], p->e_pad[pad], 0); 206 singlepad(xpos[pad], p->e_pad[pad], 0);
208 207
@@ -396,12 +395,31 @@ int keys(struct pong *p)
396 static bool pause = false; 395 static bool pause = false;
397#endif 396#endif
398 397
399 int time = 4; /* number of ticks this function will loop reading keys */ 398 /* number of ticks this function will loop reading keys */
399#ifndef HAVE_TOUCHPAD
400 int time = 4;
401#else
402 int time = 1;
403#endif
400 int start = *rb->current_tick; 404 int start = *rb->current_tick;
401 int end = start + time; 405 int end = start + time;
402 406
403 while(end > *rb->current_tick) { 407 while(end > *rb->current_tick) {
404 key = rb->button_get_w_tmo(end - *rb->current_tick); 408 key = rb->button_get_w_tmo(end - *rb->current_tick);
409
410#ifdef HAVE_TOUCHPAD
411 short touch_x, touch_y;
412 if(key & BUTTON_TOUCHPAD)
413 {
414 touch_x = rb->button_get_data() >> 16;
415 touch_y = rb->button_get_data() & 0xFFFF;
416 if(touch_x >= xpos[0] && touch_x <= xpos[0]+(PAD_WIDTH*4))
417 padmove(&p->w_pad[0], touch_y-(p->e_pad[0]*2+PAD_HEIGHT)/2);
418
419 if(touch_x >= xpos[1]-(PAD_WIDTH*4) && touch_x <= xpos[1])
420 padmove(&p->w_pad[1], touch_y-(p->e_pad[1]*2+PAD_HEIGHT)/2);
421 }
422#endif
405 423
406#ifdef HAS_BUTTON_HOLD 424#ifdef HAS_BUTTON_HOLD
407 if (rb->button_hold()) 425 if (rb->button_hold())