fix few js bugs

This commit is contained in:
RandomityGuy 2023-02-15 22:45:48 +05:30
parent 6945dd4acc
commit ea2f4d790c
4 changed files with 62 additions and 4 deletions

View file

@ -185,7 +185,8 @@ class MarbleGame {
world.update(dt * Debug.timeScale);
}
if (((Key.isPressed(Key.ESCAPE) #if js && paused #end) || Gamepad.isPressed(["start"]))
&& world.finishTime == null && world._ready) {
&& world.finishTime == null
&& world._ready) {
paused = !paused;
handlePauseGame();
}

View file

@ -88,17 +88,26 @@ class Marbleland {
goldMissions.sort((x, y) -> x.title > y.title ? 1 : (x.title < y.title ? -1 : 0));
for (i in 0...goldMissions.length - 1) {
@:privateAccess goldMissions[i].next = goldMissions[i + 1];
goldMissions[i].index = i;
}
@:privateAccess goldMissions[goldMissions.length - 1].next = goldMissions[0];
goldMissions[goldMissions.length - 1].index = goldMissions.length - 1;
case 'platinum':
platinumMissions.sort((x, y) -> x.title > y.title ? 1 : (x.title < y.title ? -1 : 0));
for (i in 0...platinumMissions.length - 1) {
@:privateAccess platinumMissions[i].next = platinumMissions[i + 1];
platinumMissions[i].index = i;
}
@:privateAccess platinumMissions[platinumMissions.length - 1].next = platinumMissions[0];
platinumMissions[platinumMissions.length - 1].index = platinumMissions.length - 1;
case 'ultra':
ultraMissions.sort((x, y) -> x.title > y.title ? 1 : (x.title < y.title ? -1 : 0));
for (i in 0...ultraMissions.length - 1) {
@:privateAccess ultraMissions[i].next = ultraMissions[i + 1];
ultraMissions[i].index = i;
}
@:privateAccess ultraMissions[ultraMissions.length - 1].next = ultraMissions[0];
ultraMissions[ultraMissions.length - 1].index = ultraMissions.length - 1;
}
}

View file

@ -410,6 +410,55 @@ class ResourceLoader {
return null;
}
public static function getImagePixels(path:String) {
if (zipFilesystem.exists(path.toLowerCase())) {
if (StringTools.endsWith(path.toLowerCase(), ".bmp")) { // Handle bmp specially
var bmpContents = zipFilesystem.get(path.toLowerCase());
var bmpreader = new format.bmp.Reader(new haxe.io.BytesInput(bmpContents.getBytes()));
var bmpdata = bmpreader.read();
var bbuf = new haxe.io.BytesBuffer();
var i = 0;
while (i < bmpdata.pixels.length) {
bbuf.addByte(bmpdata.pixels.get(i));
bbuf.addByte(bmpdata.pixels.get(i + 1));
bbuf.addByte(bmpdata.pixels.get(i + 2));
bbuf.addByte(1);
i += 3;
}
var pixs = new hxd.Pixels(bmpdata.header.width, bmpdata.header.height, bbuf.getBytes(), hxd.PixelFormat.BGRA);
return pixs;
} else {
var img = new hxd.res.Image(zipFilesystem.get(path.toLowerCase()));
return img.getPixels();
}
}
if (fileSystem.exists(path)) {
if (StringTools.endsWith(path.toLowerCase(), ".bmp")) { // Handle bmp specially
var bmpContents = zipFilesystem.get(path.toLowerCase());
var bmpreader = new format.bmp.Reader(new haxe.io.BytesInput(bmpContents.getBytes()));
var bmpdata = bmpreader.read();
var bbuf = new haxe.io.BytesBuffer();
var i = 0;
while (i < bmpdata.pixels.length) {
bbuf.addByte(bmpdata.pixels.get(i));
bbuf.addByte(bmpdata.pixels.get(i + 1));
bbuf.addByte(bmpdata.pixels.get(i + 2));
bbuf.addByte(1);
i += 3;
}
var pixs = new hxd.Pixels(bmpdata.header.width, bmpdata.header.height, bbuf.getBytes(), hxd.PixelFormat.BGRA);
return pixs;
} else {
var img = loader.load(path).toImage();
return img.getPixels();
}
}
return null;
}
public static function getImage(path:String) {
#if (js || android)
path = StringTools.replace(path, "data/", "");

View file

@ -122,10 +122,9 @@ class Sky extends Object {
fnames.push("");
Console.error("Skybox image " + filenames[0] + " does not exist");
} else {
var pixels = ResourceLoader.getTexture(filenames[0]).resource.capturePixels(0, 0);
// var pixels = ResourceLoader.getTexture(filenames[0]).resource.capturePixels(0, 0);
fnames.push(filenames[0]);
// var image = ResourceLoader.getResource(filenames[0], ResourceLoader.getImage, this.imageResources).toBitmap();
// var pixels = image.getPixels();
var pixels = ResourceLoader.getImagePixels(filenames[0]);
skyboxImages.push(pixels);
}
}