Support the remaining invalid tile, which slipped into CCLXP2
This commit is contained in:
parent
537e011f2a
commit
26f9e917a8
@ -56,9 +56,9 @@ const TILE_ENCODING = {
|
|||||||
0x30: 'thinwall_se',
|
0x30: 'thinwall_se',
|
||||||
0x31: 'cloner',
|
0x31: 'cloner',
|
||||||
0x32: 'force_floor_all',
|
0x32: 'force_floor_all',
|
||||||
0x33: 'player_drowned',
|
0x33: 'bogus_player_drowned',
|
||||||
0x34: 'player_burned',
|
0x34: 'bogus_player_burned_fire',
|
||||||
//0x35: player_burned, XXX is this burned off a tile or?
|
0x35: 'bogus_player_burned',
|
||||||
0x36: 'wall_invisible', // unused
|
0x36: 'wall_invisible', // unused
|
||||||
0x37: 'wall_invisible', // unused
|
0x37: 'wall_invisible', // unused
|
||||||
0x38: 'wall_invisible', // unused
|
0x38: 'wall_invisible', // unused
|
||||||
@ -159,9 +159,10 @@ function parse_level(buf, number) {
|
|||||||
|
|
||||||
let spec = TILE_ENCODING[tile_byte];
|
let spec = TILE_ENCODING[tile_byte];
|
||||||
// TODO could be more forgiving for goofy levels doing goofy things
|
// TODO could be more forgiving for goofy levels doing goofy things
|
||||||
if (! spec)
|
if (! spec) {
|
||||||
// TODO doesn't say what level or where in the file, come on
|
let [x, y] = level.scalar_to_coords(c);
|
||||||
throw new Error(`Invalid tile byte: 0x${tile_byte.toString(16)}`);
|
throw new Error(`Invalid tile byte 0x${tile_byte.toString(16)} at (${x}, ${y}) in level ${number}`);
|
||||||
|
}
|
||||||
|
|
||||||
let name, direction;
|
let name, direction;
|
||||||
if (spec instanceof Array) {
|
if (spec instanceof Array) {
|
||||||
|
|||||||
@ -342,6 +342,18 @@ export const CC2_TILESET_LAYOUT = {
|
|||||||
south: [[4, 24], [5, 24]],
|
south: [[4, 24], [5, 24]],
|
||||||
west: [[6, 24], [7, 24]],
|
west: [[6, 24], [7, 24]],
|
||||||
},
|
},
|
||||||
|
bogus_player_drowned: {
|
||||||
|
overlay: [3, 3], // splash
|
||||||
|
base: 'water',
|
||||||
|
},
|
||||||
|
bogus_player_burned_fire: {
|
||||||
|
overlay: [2, 5], // explosion frame 3
|
||||||
|
base: 'fire',
|
||||||
|
},
|
||||||
|
bogus_player_burned: {
|
||||||
|
overlay: [2, 5], // explosion frame 3
|
||||||
|
base: 'floor',
|
||||||
|
},
|
||||||
water: [
|
water: [
|
||||||
[12, 24],
|
[12, 24],
|
||||||
[13, 24],
|
[13, 24],
|
||||||
@ -373,10 +385,6 @@ export const CC2_TILESET_LAYOUT = {
|
|||||||
[15, 29],
|
[15, 29],
|
||||||
],
|
],
|
||||||
|
|
||||||
// TODO these shouldn't loop and also seem to be more general
|
|
||||||
player_drowned: [[4, 5], [5, 5], [6, 5], [7, 5]],
|
|
||||||
player_burned: [[0, 5], [1, 5], [2, 5], [3, 5]],
|
|
||||||
|
|
||||||
// TODO handle train tracks! this is gonna be complicated.
|
// TODO handle train tracks! this is gonna be complicated.
|
||||||
railroad: [9, 10],
|
railroad: [9, 10],
|
||||||
railroad_sign: [4, 31],
|
railroad_sign: [4, 31],
|
||||||
@ -449,9 +457,9 @@ export const TILE_WORLD_TILESET_LAYOUT = {
|
|||||||
cloner: [3, 1],
|
cloner: [3, 1],
|
||||||
force_floor_all: [3, 2],
|
force_floor_all: [3, 2],
|
||||||
splash: [3, 3],
|
splash: [3, 3],
|
||||||
player_drowned: [3, 3],
|
bogus_player_drowned: [3, 3],
|
||||||
player_burned: [3, 4],
|
bogus_player_burned_fire: [3, 4],
|
||||||
player_bombed: [3, 5],
|
bogus_player_burned: [3, 5],
|
||||||
explosion: [3, 6],
|
explosion: [3, 6],
|
||||||
explosion_other: [3, 7], // TODO ???
|
explosion_other: [3, 7], // TODO ???
|
||||||
// 3, 8 unused
|
// 3, 8 unused
|
||||||
@ -573,6 +581,14 @@ export const LL_TILESET_LAYOUT = Object.assign({}, CC2_TILESET_LAYOUT, {
|
|||||||
west: [7, 33],
|
west: [7, 33],
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
bogus_player_burned_fire: {
|
||||||
|
overlay: [6, 33],
|
||||||
|
base: 'fire',
|
||||||
|
},
|
||||||
|
bogus_player_burned: {
|
||||||
|
overlay: [6, 33],
|
||||||
|
base: 'floor',
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export class Tileset {
|
export class Tileset {
|
||||||
|
|||||||
@ -1176,12 +1176,6 @@ const TILE_TYPES = {
|
|||||||
key_yellow: true,
|
key_yellow: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
player_drowned: {
|
|
||||||
draw_layer: LAYER_ACTOR,
|
|
||||||
},
|
|
||||||
player_burned: {
|
|
||||||
draw_layer: LAYER_ACTOR,
|
|
||||||
},
|
|
||||||
chip: {
|
chip: {
|
||||||
draw_layer: LAYER_ITEM,
|
draw_layer: LAYER_ITEM,
|
||||||
is_chip: true,
|
is_chip: true,
|
||||||
@ -1307,6 +1301,18 @@ const TILE_TYPES = {
|
|||||||
draw_layer: LAYER_TERRAIN,
|
draw_layer: LAYER_TERRAIN,
|
||||||
blocks_all: true,
|
blocks_all: true,
|
||||||
},
|
},
|
||||||
|
bogus_player_drowned: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
blocks_all: true,
|
||||||
|
},
|
||||||
|
bogus_player_burned_fire: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
blocks_all: true,
|
||||||
|
},
|
||||||
|
bogus_player_burned: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
blocks_all: true,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Tell them all their own names
|
// Tell them all their own names
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user