@bitsy/hecks
Version:
a collection of re-usable scripts for bitsy game maker
61 lines (53 loc) • 1.62 kB
JavaScript
/**
⬛
@file opaque tiles
@summary tiles which hide the player
@license MIT
@version 1.1.3
@author Sean S. LeBlanc
@description
Render the player underneath certain tiles
instead of always on top of the map.
Note: compatible with transparency hack!
HOW TO USE:
1. Copy-paste this script into a script tag after the bitsy source
2. Update the `tileIsOpaque` function below to match your needs
*/
import bitsy from "bitsy";
import {
before,
after,
inject,
} from "./helpers/kitsy-script-toolkit";
export var hackOptions = {
tileIsOpaque: function (tile) {
// return tile.name == 'wall'; // specific opaque tile
// return ['wall', 'column', 'door'].indexOf(tile.name) !== -1; // specific opaque tile list
// return tile.name && tile.name.indexOf('OPAQUE') !== -1; // opaque tile flag in name
return true; // all tiles are opaque
}
};
// track whether opaque
var opaque = false;
after("movePlayer", function () {
// check for changes
var player = bitsy.player();
var tile = bitsy.tile[bitsy.getTile(player.x, player.y)];
if (!tile) {
opaque = false;
return;
}
opaque = hackOptions.tileIsOpaque(tile);
});
// prevent player from drawing on top of opaque tiles
var room;
before("drawRoom", function () {
var player = bitsy.player();
room = player.room;
player.room = opaque ? null : room;
});
after("drawRoom", function () {
bitsy.player().room = room;
});
// draw player underneath opaque tile
inject(/(\/\/draw tiles)/, 'drawTile(getSpriteImage(player(), getRoomPal(room.id), frameIndex), player().x, player().y, context);\n$1');