annotate src/main.c @ 49:a8c7db56ccb0

core: backed out changeset 55869b5e4761 We don't need properties because we will generate them in the map.
author David Demelier <markand@malikania.fr>
date Fri, 17 Jan 2020 12:09:30 +0100
parents f053a9f38c0e
children f581a78c8e78
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.c -- Molko's Adventure
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
39
9d1421c09dfb core: add more utilities to improve code simplicity
David Demelier <markand@malikania.fr>
parents: 36
diff changeset
19 #include "clock.h"
9d1421c09dfb core: add more utilities to improve code simplicity
David Demelier <markand@malikania.fr>
parents: 36
diff changeset
20 #include "error.h"
9d1421c09dfb core: add more utilities to improve code simplicity
David Demelier <markand@malikania.fr>
parents: 36
diff changeset
21 #include "event.h"
45
e10fd1b6323f core: implement splashscreen, closes #2458 @1h
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
22 #include "game.h"
47
f053a9f38c0e core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
23 #include "image.h"
f053a9f38c0e core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
24 #include "map.h"
f053a9f38c0e core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
25 #include "map_state.h"
45
e10fd1b6323f core: implement splashscreen, closes #2458 @1h
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
26 #include "splashscreen.h"
47
f053a9f38c0e core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
27 #include "sprite.h"
36
798baf7f3ec0 core: implement sys_data* functions for Windows
David Demelier <markand@malikania.fr>
parents: 35
diff changeset
28 #include "sys.h"
47
f053a9f38c0e core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
29 #include "util.h"
39
9d1421c09dfb core: add more utilities to improve code simplicity
David Demelier <markand@malikania.fr>
parents: 36
diff changeset
30 #include "window.h"
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
31
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
32 #define WINDOW_WIDTH 1280
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
33 #define WINDOW_HEIGHT 720
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
34
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
35 static void
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
36 init(void)
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
37 {
47
f053a9f38c0e core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
38 struct map map;
f053a9f38c0e core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
39
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
40 if (!sys_init())
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
41 error_fatal();
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
42 if (!window_init("Molko's Adventure", WINDOW_WIDTH, WINDOW_HEIGHT))
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
43 error_fatal();
45
e10fd1b6323f core: implement splashscreen, closes #2458 @1h
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
44
e10fd1b6323f core: implement splashscreen, closes #2458 @1h
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
45 /* Default state is splash screen */
e10fd1b6323f core: implement splashscreen, closes #2458 @1h
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
46 game_switch(&splashscreen_state);
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
47 }
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
48
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
49 static void
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
50 run(void)
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
51 {
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
52 union event ev;
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
53 struct clock clock;
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
54
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
55 clock_start(&clock);
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
56
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
57 for (;;) {
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 45
diff changeset
58 unsigned int elapsed = clock_elapsed(&clock);
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
59
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
60 clock_start(&clock);
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
61
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
62 while (event_poll(&ev)) {
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
63 /* TODO: this must be handled by states. */
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
64 if (ev.type == EVENT_QUIT)
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
65 return;
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
66
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
67 game_handle(&ev);
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
68 }
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
69
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
70 game_update(elapsed);
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
71 game_draw();
47
f053a9f38c0e core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
72
f053a9f38c0e core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
73 if ((elapsed = clock_elapsed(&clock)) < 20)
f053a9f38c0e core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
74 delay(20 - elapsed);
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
75 }
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
76 }
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
77
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
78 static void
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
79 close(void)
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
80 {
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
81 window_close();
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
82 sys_close();
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
83 }
36
798baf7f3ec0 core: implement sys_data* functions for Windows
David Demelier <markand@malikania.fr>
parents: 35
diff changeset
84
0
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 int
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 main(int argc, char **argv)
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 {
1
03f6d572fd17 core: implement basic drawing, closes #2438
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
88 (void)argc;
03f6d572fd17 core: implement basic drawing, closes #2438
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
89 (void)argv;
19
bc1fdff76775 core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
90
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
91 init();
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
92 run();
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
93 close();
36
798baf7f3ec0 core: implement sys_data* functions for Windows
David Demelier <markand@malikania.fr>
parents: 35
diff changeset
94
1
03f6d572fd17 core: implement basic drawing, closes #2438
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
95 return 0;
0
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 }