annotate src/main.c @ 13:c188e9603faf

misc: add basic documentation files
author David Demelier <markand@malikania.fr>
date Tue, 07 Jan 2020 21:34:03 +0100
parents c91c3272101b
children bc1fdff76775
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
1
03f6d572fd17 core: implement basic drawing, closes #2438
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
19 #include <stdio.h>
03f6d572fd17 core: implement basic drawing, closes #2438
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
20
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
21 #include "animation.h"
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
22 #include "font.h"
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
23 #include "clock.h"
4
cd58eabb7fb4 core: implement basic images, closes #2441
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
24 #include "image.h"
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
25 #include "sprite.h"
4
cd58eabb7fb4 core: implement basic images, closes #2441
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
26 #include "texture.h"
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
27 #include "window.h"
5
b5c649b6367b core: implement sprites, closes #2440
David Demelier <markand@malikania.fr>
parents: 4
diff changeset
28
b5c649b6367b core: implement sprites, closes #2440
David Demelier <markand@malikania.fr>
parents: 4
diff changeset
29 #include <SDL.h>
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
30 #include <SDL_ttf.h>
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
31 #include <SDL_image.h>
0
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 int
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 main(int argc, char **argv)
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 {
1
03f6d572fd17 core: implement basic drawing, closes #2438
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
36 (void)argc;
03f6d572fd17 core: implement basic drawing, closes #2438
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
37 (void)argv;
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
38 SDL_Init(SDL_INIT_VIDEO);
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
39 TTF_Init();
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
40 IMG_Init(IMG_INIT_PNG);
0
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
42 struct texture *logo, *label;
5
b5c649b6367b core: implement sprites, closes #2440
David Demelier <markand@malikania.fr>
parents: 4
diff changeset
43 struct sprite sprite;
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
44 struct clock clock;
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
45 struct font *font;
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
46 struct animation animation;
0
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
4
cd58eabb7fb4 core: implement basic images, closes #2441
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
48 window_init("Molko's Adventure", 640, 480);
cd58eabb7fb4 core: implement basic images, closes #2441
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
49 window_set_color(0x667788ff);
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
50
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
51 clock_start(&clock);
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
52
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
53 logo = image_openf("E:\\dev\\molko\\explosion.png");
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
54 font = font_openf("E:\\dev\\molko\\DejaVuSans.ttf", 10);
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
55
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
56 if (!logo || !font) {
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
57 printf("%s\n", SDL_GetError());
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
58 exit(1);
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
59 }
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
60
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
61 label = font_render(font, "Hello World", 0xffffffff);
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
62 sprite_init(&sprite, logo, 256, 256);
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
63 animation_init(&animation, &sprite, 20);
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
64
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
65 setvbuf(stdout, NULL, _IONBF, 0);
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
66
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
67 while (!animation_is_complete(&animation)) {
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
68 uint64_t ticks = clock_elapsed(&clock);
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
69
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
70 clock_start(&clock);
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
71
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
72 SDL_Event ev;
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
73 while (SDL_PollEvent(&ev)) {
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
74 switch (ev.type) {
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
75 case SDL_QUIT:
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
76 return 0;
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
77 }
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
78 }
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
79
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
80 animation_update(&animation, ticks);
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
81 window_clear();
10
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
82 texture_draw(label, 30, 30);
c91c3272101b core: implement fonts, closes #2444
David Demelier <markand@malikania.fr>
parents: 7
diff changeset
83 animation_draw(&animation, 10, 10);
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
84 window_present();
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
85 SDL_Delay(50);
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
86 }
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
87
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
88 #if 0
4
cd58eabb7fb4 core: implement basic images, closes #2441
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
89 window_set_color(0xffffffff);
cd58eabb7fb4 core: implement basic images, closes #2441
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
90 window_draw_line(50, 50, 100, 100);
cd58eabb7fb4 core: implement basic images, closes #2441
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
91 window_draw_point(60, 60);
cd58eabb7fb4 core: implement basic images, closes #2441
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
92 window_draw_rectangle(true, 20, 20, 70, 10);
5
b5c649b6367b core: implement sprites, closes #2440
David Demelier <markand@malikania.fr>
parents: 4
diff changeset
93 logo = image_openf("E:\\Charactervector.png");
b5c649b6367b core: implement sprites, closes #2440
David Demelier <markand@malikania.fr>
parents: 4
diff changeset
94 sprite_init(&sprite, logo, 65, 100);
b5c649b6367b core: implement sprites, closes #2440
David Demelier <markand@malikania.fr>
parents: 4
diff changeset
95 sprite_draw(&sprite, 1, 2, 400, 400);
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents: 5
diff changeset
96 #endif
0
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
1
03f6d572fd17 core: implement basic drawing, closes #2438
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
98 return 0;
0
efcc908bca21 core: implement basic windowing, closes #2437
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 }