1 /*         ______   ___    ___
2  *        /\  _  \ /\_ \  /\_ \
3  *        \ \ \L\ \\//\ \ \//\ \      __     __   _ __   ___
4  *         \ \  __ \ \ \ \  \ \ \   /'__`\ /'_ `\/\`'__\/ __`\
5  *          \ \ \/\ \ \_\ \_ \_\ \_/\  __//\ \L\ \ \ \//\ \L\ \
6  *           \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
7  *            \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
8  *                                           /\____/
9  *                                           \_/__/
10  *
11  *      FLI player test program for the Allegro library.
12  *
13  *      By Shawn Hargreaves.
14  *
15  *      See readme.txt for copyright information.
16  */
17 
18 
19 #include <string.h>
20 
21 #include "allegro.h"
22 
23 
24 
usage(void)25 void usage(void)
26 {
27    allegro_message("\nFLI player test program for Allegro " ALLEGRO_VERSION_STR ", " ALLEGRO_PLATFORM_STR "\n"
28 		   "By Shawn Hargreaves, " ALLEGRO_DATE_STR "\n\n"
29 		   "Usage: playfli [options] filename.(fli|flc)\n\n"
30 		   "Options:\n"
31 		   "\t'-loop' cycles the animation until a key is pressed\n"
32 		   "\t'-step' selects single-step mode\n"
33 		   "\t'-mode screen_w screen_h' sets the screen mode\n");
34 }
35 
36 
37 
38 int loop = FALSE;
39 int step = FALSE;
40 
41 
42 
key_checker(void)43 int key_checker(void)
44 {
45    if (step) {
46       if ((readkey() & 0xFF) == 27)
47 	 return 1;
48       else
49 	 return 0;
50    }
51    else {
52       if (keypressed())
53 	 return 1;
54       else
55 	 return 0;
56    }
57 }
58 
59 
60 
main(int argc,char * argv[])61 int main(int argc, char *argv[])
62 {
63    int w = 320;
64    int h = 200;
65    int c, ret;
66 
67    if (allegro_init() != 0)
68       return 1;
69 
70    if (argc < 2) {
71       usage();
72       return 1;
73    }
74 
75    for (c=1; c<argc-1; c++) {
76       if (stricmp(argv[c], "-loop") == 0)
77 	 loop = TRUE;
78       else if (stricmp(argv[c], "-step") == 0)
79 	 step = TRUE;
80       else if ((stricmp(argv[c], "-mode") == 0) && (c<argc-3)) {
81 	 w = atoi(argv[c+1]);
82 	 h = atoi(argv[c+2]);
83 	 c += 2;
84       }
85       else {
86 	 usage();
87 	 return 1;
88       }
89    }
90 
91    install_keyboard();
92    install_timer();
93 
94    if (set_gfx_mode(GFX_AUTODETECT, w, h, 0, 0) != 0) {
95       set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
96       allegro_message("Error setting graphics mode\n%s\n", allegro_error);
97       return 1;
98    }
99 
100    ret = play_fli(argv[c], screen, loop, key_checker);
101 
102    if (ret < 0) {
103       set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
104       allegro_message("Error playing FLI file\n");
105       return 1;
106    }
107 
108    return 0;
109 }
110 
111 END_OF_MAIN()
112