summaryrefslogtreecommitdiff
path: root/apps/plugins/snake2.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/snake2.c')
-rw-r--r--apps/plugins/snake2.c98
1 files changed, 80 insertions, 18 deletions
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index e83e298beb..3f6db5c550 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -33,6 +33,27 @@ Head and Tail are stored
33#define WIDTH 28 33#define WIDTH 28
34#define HEIGHT 16 34#define HEIGHT 16
35 35
36/* variable button definitions */
37#if CONFIG_KEYPAD == RECORDER_PAD
38#define SNAKE2_QUIT BUTTON_OFF
39#define SNAKE2_LEVEL_UP BUTTON_UP
40#define SNAKE2_LEVEL_UP2 BUTTON_RIGHT
41#define SNAKE2_LEVEL_DOWN BUTTON_DOWN
42#define SNAKE2_LEVEL_DOWN2 BUTTON_LEFT
43#define SNAKE2_SELECT_MAZE BUTTON_F1
44#define SNAKE2_SELECT_TYPE BUTTON_F3
45#define SNAKE2_PLAYPAUSE BUTTON_PLAY
46
47#elif CONFIG_KEYPAD == ONDIO_PAD
48#define SNAKE2_QUIT BUTTON_OFF
49#define SNAKE2_LEVEL_UP BUTTON_UP
50#define SNAKE2_LEVEL_DOWN BUTTON_DOWN
51#define SNAKE2_SELECT_MAZE BUTTON_LEFT
52#define SNAKE2_SELECT_TYPE BUTTON_RIGHT
53#define SNAKE2_PLAYPAUSE BUTTON_MENU
54
55#endif
56
36static int max_levels = 0; 57static int max_levels = 0;
37static char (*level_cache)[HEIGHT][WIDTH]; 58static char (*level_cache)[HEIGHT][WIDTH];
38 59
@@ -770,24 +791,37 @@ void frame (void)
770 791
771void game_pause (void) 792void game_pause (void)
772{ 793{
794 int button;
795
773 rb->lcd_clear_display(); 796 rb->lcd_clear_display();
774 rb->lcd_putsxy(33,12,"Paused"); 797 rb->lcd_putsxy(33,12,"Paused");
775 798
776 rb->lcd_update(); 799 rb->lcd_update();
777 while (1) 800 while (1)
778 { 801 {
779 switch (rb->button_get(true)) 802 button = rb->button_get(true);
803 switch (button)
780 { 804 {
781 case BUTTON_PLAY: 805 case SNAKE2_PLAYPAUSE:
782 redraw(); 806 redraw();
783 rb->sleep(HZ/2); 807 rb->sleep(HZ/2);
784 return; 808 return;
809
810 default:
811 if (rb->default_event_handler(button)==SYS_USB_CONNECTED) {
812 dead = 1;
813 quit = 2;
814 return;
815 }
816 break;
785 } 817 }
786 } 818 }
787} 819}
788 820
789void game (void) 821void game (void)
790{ 822{
823 int button;
824
791 redraw(); 825 redraw();
792 /*main loop:*/ 826 /*main loop:*/
793 while (1) 827 while (1)
@@ -821,7 +855,8 @@ void game (void)
821 855
822 rb->sleep(HZ/speed); 856 rb->sleep(HZ/speed);
823 857
824 switch (rb->button_get(false)) 858 button = rb->button_get(false);
859 switch (button)
825 { 860 {
826 case BUTTON_UP: 861 case BUTTON_UP:
827 case BUTTON_UP | BUTTON_REPEAT: 862 case BUTTON_UP | BUTTON_REPEAT:
@@ -843,14 +878,21 @@ void game (void)
843 if (dir != EAST) set_direction(WEST); 878 if (dir != EAST) set_direction(WEST);
844 break; 879 break;
845 880
846 case BUTTON_OFF: 881 case SNAKE2_QUIT:
847 dead=1; 882 dead=1;
848 return; 883 return;
849 884
850 case BUTTON_PLAY: 885 case SNAKE2_PLAYPAUSE:
851 game_pause(); 886 game_pause();
852 break; 887 break;
853 } 888
889 default:
890 if (rb->default_event_handler(button)==SYS_USB_CONNECTED) {
891 quit = 2;
892 return;
893 }
894 break;
895 }
854 } 896 }
855} 897}
856 898
@@ -862,37 +904,42 @@ void game_init(void)
862 dead=0; 904 dead=0;
863 apple=0; 905 apple=0;
864 score=0; 906 score=0;
865 907 int button;
866 908
867 clear_board(); 909 clear_board();
868 load_level( level_from_file ); 910 load_level( level_from_file );
869 911
870 while (1) 912 while (1)
871 { 913 {
872 switch (rb->button_get(true)) 914 button=rb->button_get(true);
915 switch (button)
873 { 916 {
874 case BUTTON_RIGHT: 917 case SNAKE2_LEVEL_UP:
875 case BUTTON_UP: 918#ifdef SNAKE2_LEVEL_UP2
919 case SNAKE2_LEVEL_UP2:
920#endif
876 if (level<10) 921 if (level<10)
877 level+=1; 922 level+=1;
878 break; 923 break;
879 case BUTTON_LEFT: 924 case SNAKE2_LEVEL_DOWN:
880 case BUTTON_DOWN: 925#ifdef SNAKE2_LEVEL_DOWN2
926 case SNAKE2_LEVEL_DOWN2:
927#endif
881 if (level>1) 928 if (level>1)
882 level-=1; 929 level-=1;
883 break; 930 break;
884 case BUTTON_OFF: 931 case SNAKE2_QUIT:
885 quit=1; 932 quit=1;
886 return; 933 return;
887 break; 934 break;
888 case BUTTON_PLAY: 935 case SNAKE2_PLAYPAUSE:
889 speed = level*20; 936 speed = level*20;
890 return; 937 return;
891 break; 938 break;
892 case BUTTON_F3: 939 case SNAKE2_SELECT_TYPE:
893 if(game_type==0)game_type=1; else game_type=0; 940 if(game_type==0)game_type=1; else game_type=0;
894 break; 941 break;
895 case BUTTON_F1: 942 case SNAKE2_SELECT_MAZE:
896 943
897 level_from_file++; 944 level_from_file++;
898 if(level_from_file > num_levels) 945 if(level_from_file > num_levels)
@@ -903,6 +950,12 @@ void game_init(void)
903 load_level( level_from_file ); 950 load_level( level_from_file );
904 951
905 break; 952 break;
953 default:
954 if (rb->default_event_handler(button)==SYS_USB_CONNECTED) {
955 quit = 2;
956 return;
957 }
958 break;
906 } 959 }
907 960
908 rb->lcd_clear_display(); 961 rb->lcd_clear_display();
@@ -910,13 +963,22 @@ void game_init(void)
910 /*TODO: CENTER ALL TEXT!!!!*/ 963 /*TODO: CENTER ALL TEXT!!!!*/
911 rb->snprintf(plevel,sizeof(plevel),"Speed - %d",level); 964 rb->snprintf(plevel,sizeof(plevel),"Speed - %d",level);
912 rb->lcd_putsxy(LCD_WIDTH/2 - 30,5, plevel); 965 rb->lcd_putsxy(LCD_WIDTH/2 - 30,5, plevel);
966#if CONFIG_KEYPAD == RECORDER_PAD
913 rb->snprintf(plevel,sizeof(plevel),"F1 - Maze %d",level_from_file); 967 rb->snprintf(plevel,sizeof(plevel),"F1 - Maze %d",level_from_file);
914 rb->lcd_putsxy(18, 20, plevel); 968 rb->lcd_putsxy(18, 20, plevel);
915 if(game_type==0) 969 if(game_type==0)
916 rb->lcd_putsxy(18, 30, "F3 - Game A"); 970 rb->lcd_putsxy(18, 30, "F3 - Game A");
917 else 971 else
918 rb->lcd_putsxy(18, 30, "F3 - Game B"); 972 rb->lcd_putsxy(18, 30, "F3 - Game B");
919 973#elif CONFIG_KEYPAD == ONDIO_PAD
974 rb->snprintf(plevel,sizeof(plevel),"Left - Maze %d",level_from_file);
975 rb->lcd_putsxy(18, 20, plevel);
976 if(game_type==0)
977 rb->lcd_putsxy(12, 30, "Right - Game A");
978 else
979 rb->lcd_putsxy(12, 30, "Right - Game B");
980#endif
981
920 rb->snprintf(phscore,sizeof(phscore),"Hi Score: %d",hiscore); 982 rb->snprintf(phscore,sizeof(phscore),"Hi Score: %d",hiscore);
921 rb->lcd_putsxy(LCD_WIDTH/2 - 37,50, phscore); 983 rb->lcd_putsxy(LCD_WIDTH/2 - 37,50, phscore);
922 rb->lcd_update(); 984 rb->lcd_update();
@@ -953,7 +1015,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
953 } 1015 }
954 } 1016 }
955 1017
956 return false; 1018 return (quit==1) ? PLUGIN_OK : PLUGIN_USB_CONNECTED;
957} 1019}
958 1020
959#endif 1021#endif