1 #ifndef _skycore__level__hpp__included__
2 #define _skycore__level__hpp__included__
17 level(rom_level
& data
);
18 int16_t get_gravity() { return gravity
; }
19 int16_t get_o2_amount() { return o2_amount
; }
20 uint16_t get_fuel_amount() { return fuel_amount
; }
21 uint32_t get_palette_color(size_t idx
, bool setC24
= false)
23 return (setC24
? 0x1000000 : 0) | ((idx
< 72) ? palette
[idx
] : 0);
25 tile
at(uint32_t lpos
, uint16_t hpos
);
26 tile
at_tile(int32_t l
, int16_t h
);
27 bool collides(uint32_t lpos
, uint16_t hpos
, int16_t vpos
);
28 bool in_pipe(uint32_t lpos
, uint16_t hpos
, int16_t vpos
);
29 uint32_t finish_line() { return 65536UL * length
- 32768; }
30 uint32_t apparent_length() { return 65536UL * (length
- 3); }
37 uint16_t tiles
[32620];
42 rom_level(const std::vector
<char>& data
, size_t offset
, size_t length
);
43 int16_t get_gravity() { return gravity
; }
44 int16_t get_o2_amount() { return o2_amount
; }
45 uint16_t get_fuel_amount() { return fuel_amount
; }
46 uint16_t get_length() { return tiles
.size() / 7; }
47 uint32_t get_palette_color(size_t idx
) { return (idx
< 72) ? palette
[idx
] : 0; }
48 tile
get_tile(size_t idx
) { return (idx
< tiles
.size()) ? tiles
[idx
] : tile(); }
49 void sha256_hash(uint8_t* buffer
);
55 std::vector
<tile
> tiles
;
63 roads_lzs(const std::vector
<char>& file
);
64 roads_lzs(const roads_lzs
& l
);
65 roads_lzs
& operator=(const roads_lzs
& l
);
66 bool present(size_t idx
) { return (idx
< 31 && l
[idx
] != NULL
); }
67 rom_level
& operator[](size_t idx
) { return *l
[idx
]; }