Map Tiled Horizontal and Vertical flip flags onto GTE equivalents
This commit is contained in:
parent
232f94d30e
commit
1492ac3b36
|
@ -386,7 +386,7 @@ App_TileMapBG0
|
|||
dw 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41
|
||||
dw 41,41,56,21,21,21,21,59,41,41,41,41,41,41,41,41
|
||||
dw 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41
|
||||
dw 41,41,57,2147483705,41,41,41,41,41,41,41,41,41,41,41,41
|
||||
dw 41,41,57,569,41,41,41,41,41,41,41,41,41,41,41,41
|
||||
dw 41,41,41,41,41,41,41,41,15,16,17,18,41,41,41,41
|
||||
dw 41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22
|
||||
dw 41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22
|
||||
|
@ -402,7 +402,7 @@ App_TileMapBG0
|
|||
dw 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41
|
||||
dw 41,56,21,62,21,21,62,21,59,41,41,41,41,41,41,41
|
||||
dw 41,41,41,41,41,41,41,41,42,43,42,43,42,43,41,41
|
||||
dw 41,56,21,62,2147483704,41,41,41,41,41,41,41,41,41,41,41
|
||||
dw 41,56,21,62,568,41,41,41,41,41,41,41,41,41,41,41
|
||||
dw 42,43,41,41,41,41,41,41,19,20,21,22,41,41,41,41
|
||||
dw 41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22
|
||||
dw 41,41,41,41,42,43,42,43,41,41,41,41,19,20,21,22
|
||||
|
@ -418,7 +418,7 @@ App_TileMapBG0
|
|||
dw 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41
|
||||
dw 56,21,21,21,21,21,21,21,21,59,41,41,41,41,41,41
|
||||
dw 41,41,41,41,41,41,41,44,45,45,45,45,45,45,46,41
|
||||
dw 56,21,21,21,21,2147483704,41,41,41,41,41,41,41,41,41,44
|
||||
dw 56,21,21,21,21,568,41,41,41,41,41,41,41,41,41,44
|
||||
dw 45,45,46,41,41,41,41,41,19,20,21,22,41,41,41,41
|
||||
dw 41,41,41,41,41,41,41,41,41,41,41,41,19,20,21,22
|
||||
dw 41,41,41,44,45,45,45,45,46,41,41,41,19,20,21,22
|
||||
|
|
|
@ -219,7 +219,7 @@ function emitLayerData(sb, layer) {
|
|||
const chunks = [];
|
||||
const tileIDs = layer.data;
|
||||
for (let i = 0; i < tileIDs.length; i += N) {
|
||||
chunks.push(tileIDs.slice(i, i + N))
|
||||
chunks.push(tileIDs.slice(i, i + N).map(t => convertTileID(t)))
|
||||
}
|
||||
// Tiled starts numbering its tiles at 1. This is OK since Tile 0 is reserved in
|
||||
// GTE, also
|
||||
|
@ -228,4 +228,29 @@ function emitLayerData(sb, layer) {
|
|||
}
|
||||
|
||||
return sb;
|
||||
}
|
||||
|
||||
/**
|
||||
* Map the bit flags used in Tiled to compatible values in GTE
|
||||
*/
|
||||
function convertTileID(tileId) {
|
||||
const GTE_VFLIP_BIT = 0x0400;
|
||||
const GTE_HFLIP_BIT = 0x0200;
|
||||
const TILED_VFLIP_BIT = 0x40000000;
|
||||
const TILED_HFLIP_BIT = 0x80000000;
|
||||
const TILED_DFLIP_BIT = 0x20000000;
|
||||
|
||||
// We don't support the flipped diagonally flag or tile values greater than 511
|
||||
if ((tileId & TILED_DFLIP_BIT) !== 0) {
|
||||
throw new Error('Diagonally flipped bits are not supported: tileId = ' + tileId.toString(16));
|
||||
}
|
||||
|
||||
const hflip = (tileId & TILED_HFLIP_BIT) !== 0;
|
||||
const vflip = (tileId & TILED_VFLIP_BIT) !== 0;
|
||||
|
||||
if ((tileId & 0x1FFFFFFF) > 511) {
|
||||
throw new Error('A maximum of 511 tiles are supported');
|
||||
}
|
||||
|
||||
return (tileId & 0x1FFFFFFF) + (hflip ? GTE_HFLIP_BIT : 0) + (vflip ? GTE_VFLIP_BIT : 0);
|
||||
}
|
Loading…
Reference in New Issue