1 #include "image.h"
2 
3 #include "map/grid.h"
4 
5 static grid_u16 images;
6 static grid_u16 images_backup;
7 
map_image_at(int grid_offset)8 int map_image_at(int grid_offset)
9 {
10     return images.items[grid_offset];
11 }
12 
map_image_set(int grid_offset,int image_id)13 void map_image_set(int grid_offset, int image_id)
14 {
15     images.items[grid_offset] = image_id;
16 }
17 
map_image_backup(void)18 void map_image_backup(void)
19 {
20     map_grid_copy_u16(images.items, images_backup.items);
21 }
22 
map_image_restore(void)23 void map_image_restore(void)
24 {
25     map_grid_copy_u16(images_backup.items, images.items);
26 }
27 
map_image_restore_at(int grid_offset)28 void map_image_restore_at(int grid_offset)
29 {
30     images.items[grid_offset] = images_backup.items[grid_offset];
31 }
32 
map_image_clear(void)33 void map_image_clear(void)
34 {
35     map_grid_clear_u16(images.items);
36 }
37 
map_image_init_edges(void)38 void map_image_init_edges(void)
39 {
40     int width, height;
41     map_grid_size(&width, &height);
42     for (int x = 1; x < width; x++) {
43         images.items[map_grid_offset(x, height)] = 1;
44     }
45     for (int y = 1; y < height; y++) {
46         images.items[map_grid_offset(width, y)] = 2;
47     }
48     images.items[map_grid_offset(0, height)] = 3;
49     images.items[map_grid_offset(width, 0)] = 4;
50     images.items[map_grid_offset(width, height)] = 5;
51 }
52 
map_image_save_state(buffer * buf)53 void map_image_save_state(buffer *buf)
54 {
55     map_grid_save_state_u16(images.items, buf);
56 }
57 
map_image_load_state(buffer * buf)58 void map_image_load_state(buffer *buf)
59 {
60     map_grid_load_state_u16(images.items, buf);
61 }
62