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