playgui and powerup names

This commit is contained in:
RandomityGuy 2023-06-17 02:23:46 +05:30
parent ad0f5bfe67
commit 5b3da1277d
13 changed files with 249 additions and 81 deletions

View file

@ -1865,7 +1865,7 @@ class Marble extends GameObject {
}
public function useBlast() {
if (this.level.blastAmount < 0.2 || this.level.game != "ultra")
if (this.level.blastAmount < 0.25 || this.level.game != "ultra")
return;
var impulse = this.level.currentUp.multiply(Math.max(Math.sqrt(this.level.blastAmount), this.level.blastAmount) * 10);
this.applyImpulse(impulse);

View file

@ -139,6 +139,8 @@ class MarbleWorld extends Scheduler {
public var gemCount:Int = 0;
public var blastAmount:Float = 0;
var renderBlastAmount:Float = 0;
public var cursorLock:Bool = true;
var timeTravelSound:Channel;
@ -446,6 +448,7 @@ class MarbleWorld extends Scheduler {
this.bonusTime = 0;
this.outOfBounds = false;
this.blastAmount = 0;
this.renderBlastAmount = 0;
this.outOfBoundsTime = null;
this.finishTime = null;
@ -1173,9 +1176,12 @@ class MarbleWorld extends Scheduler {
function updateBlast(timestate:TimeState) {
if (this.game == "ultra") {
if (this.blastAmount < 1) {
this.blastAmount = Util.clamp(this.blastAmount + (timeState.dt / 25), 0, 1);
this.blastAmount = Util.clamp(this.blastAmount + (timeState.dt / 30), 0, 1);
this.renderBlastAmount = this.blastAmount;
} else {
this.renderBlastAmount = Math.min(this.blastAmount, timestate.dt * 0.75 + this.renderBlastAmount);
}
this.playGui.setBlastValue(this.blastAmount);
this.playGui.setBlastValue(this.renderBlastAmount);
}
}
@ -1245,7 +1251,7 @@ class MarbleWorld extends Scheduler {
// Show a notification (and play a sound) based on the gems remaining
if (this.gemCount == this.totalGems) {
string = "You have all the diamonds, head for the finish!";
string = "You have all the gems, head for the finish!";
// if (!this.rewinding)
AudioManager.playSound(ResourceLoader.getResource('data/sound/gem_all.wav', ResourceLoader.getAudio, this.soundResources));
@ -1256,13 +1262,13 @@ class MarbleWorld extends Scheduler {
// this.touchFinish(completionOfImpact);
// }
} else {
string = "You picked up a diamond. ";
string = "You picked up a gem. ";
var remaining = this.totalGems - this.gemCount;
if (remaining == 1) {
string += "Only one diamond to go!";
string += "Only one gem to go!";
} else {
string += '${remaining} diamonds to go!';
string += '${remaining} gems to go!';
}
// if (!this.rewinding)
@ -1402,7 +1408,7 @@ class MarbleWorld extends Scheduler {
if (this.gemCount < this.totalGems) {
AudioManager.playSound(ResourceLoader.getResource('data/sound/missinggems.wav', ResourceLoader.getAudio, this.soundResources));
displayAlert("You can't finish without all the diamonds!!");
displayAlert("You can't finish without all the gems!");
} else {
this.endPad.spawnFirework(this.timeState);
this.finishTime = this.timeState.clone();

View file

@ -18,6 +18,7 @@ enum HorizSizing {
Left;
Center;
Relative;
Height;
}
enum VertSizing {
@ -26,6 +27,7 @@ enum VertSizing {
Top;
Center;
Relative;
Width;
}
typedef MouseState = {
@ -40,6 +42,8 @@ class GuiControl {
var position:Vector;
var extent:Vector;
var xScale:Float = 1;
var yScale:Float = 1;
var children:Array<GuiControl> = [];
@ -130,7 +134,7 @@ class GuiControl {
if (this.parent != null) {
parentRect = this.parent.getRenderRectangle();
rect.position = parentRect.position.add(this.position.multiply(uiScaleFactor));
rect.position = parentRect.position.add(new Vector(this.position.x * uiScaleFactor * xScale, this.position.y * uiScaleFactor * yScale));
}
var scaleFactor = 1.0 / Window.getInstance().windowToPixelRatio;
@ -144,6 +148,14 @@ class GuiControl {
else
rect.extent.x = Window.getInstance().width * scaleFactor;
}
if (this.horizSizing == HorizSizing.Height) {
if (this.parent != null)
rect.extent.x = parentRect.extent.y * (this.extent.y / parent.extent.y);
else
rect.extent.x = Window.getInstance().height * scaleFactor;
}
if (this.vertSizing == VertSizing.Height) {
if (this.parent != null)
rect.extent.y = parentRect.extent.y * (this.extent.y / parent.extent.y);
@ -151,40 +163,47 @@ class GuiControl {
rect.extent.y = Window.getInstance().height * scaleFactor;
}
if (this.vertSizing == VertSizing.Width) {
if (this.parent != null)
rect.extent.y = parentRect.extent.x * (this.extent.x / parent.extent.x);
else
rect.extent.y = Window.getInstance().width * scaleFactor;
}
if (this.horizSizing == HorizSizing.Center) {
if (this.parent != null) {
rect.position.x = parentRect.position.x + parentRect.extent.x / 2 - (rect.extent.x * uiScaleFactor) / 2;
rect.extent.x *= uiScaleFactor;
rect.position.x = parentRect.position.x + parentRect.extent.x / 2 - (rect.extent.x * uiScaleFactor * xScale) / 2;
rect.extent.x *= uiScaleFactor * xScale;
}
}
if (this.vertSizing == VertSizing.Center) {
if (this.parent != null) {
rect.position.y = parentRect.position.y + parentRect.extent.y / 2 - (rect.extent.y * uiScaleFactor) / 2;
rect.extent.y *= uiScaleFactor;
rect.position.y = parentRect.position.y + parentRect.extent.y / 2 - (rect.extent.y * uiScaleFactor * yScale) / 2;
rect.extent.y *= uiScaleFactor * yScale;
}
}
if (this.horizSizing == HorizSizing.Right) {
if (this.parent != null) {
rect.position.x = parentRect.position.x + this.position.x * uiScaleFactor;
rect.extent.x *= uiScaleFactor;
rect.position.x = parentRect.position.x + this.position.x * uiScaleFactor * xScale;
rect.extent.x *= uiScaleFactor * xScale;
}
}
if (this.vertSizing == VertSizing.Bottom) {
if (this.parent != null) {
rect.position.y = parentRect.position.y + this.position.y * uiScaleFactor;
rect.extent.y *= uiScaleFactor;
rect.position.y = parentRect.position.y + this.position.y * uiScaleFactor * yScale;
rect.extent.y *= uiScaleFactor * yScale;
}
}
if (this.horizSizing == HorizSizing.Left) {
if (this.parent != null) {
rect.position.x = parentRect.position.x + parentRect.extent.x - (parent.extent.x - this.position.x) * uiScaleFactor;
rect.extent.x *= uiScaleFactor;
rect.position.x = parentRect.position.x + parentRect.extent.x - (parent.extent.x - this.position.x) * uiScaleFactor * xScale;
rect.extent.x *= uiScaleFactor * xScale;
}
}
if (this.vertSizing == VertSizing.Top) {
if (this.parent != null) {
rect.position.y = parentRect.position.y + parentRect.extent.y - (parent.extent.y - this.position.y) * uiScaleFactor;
rect.extent.y *= uiScaleFactor;
rect.position.y = parentRect.position.y + parentRect.extent.y - (parent.extent.y - this.position.y) * uiScaleFactor * yScale;
rect.extent.y *= uiScaleFactor * yScale;
}
}
if (this.parent != null) {

View file

@ -1,5 +1,6 @@
package gui;
import h3d.Matrix;
import src.ProfilerUI;
import hxd.App;
import hxd.res.Image;
@ -47,6 +48,7 @@ class PlayGui {
var gemCountNumbers:Array<GuiAnim> = [];
var gemCountSlash:GuiImage;
var gemHUD:GuiImage;
var powerupBox:GuiAnim;
var RSGOCenterText:Anim;
@ -57,12 +59,14 @@ class PlayGui {
var blastBar:GuiControl;
var blastFill:GuiImage;
var blastFillUltra:GuiImage;
var blastFrame:GuiImage;
var imageResources:Array<Resource<Image>> = [];
var textureResources:Array<Resource<Texture>> = [];
var soundResources:Array<Resource<Sound>> = [];
var playGuiCtrlOuter:GuiControl;
var playGuiCtrl:GuiControl;
var resizeEv:Void->Void;
@ -73,9 +77,11 @@ class PlayGui {
var middleMessages:Array<MiddleMessage> = [];
var totalGems:Int = 0;
public function dispose() {
if (_init) {
playGuiCtrl.dispose();
playGuiCtrlOuter.dispose();
RSGOCenterText.remove();
for (textureResource in textureResources) {
@ -95,12 +101,24 @@ class PlayGui {
public function init(scene2d:h2d.Scene, game:String) {
this.scene2d = scene2d;
this._init = true;
// Settings.uiScale = 2.25;
playGuiCtrlOuter = new GuiControl();
playGuiCtrlOuter.position = new Vector();
playGuiCtrlOuter.extent = new Vector(640, 480);
playGuiCtrlOuter.horizSizing = Width;
playGuiCtrlOuter.vertSizing = Height;
playGuiCtrl = new GuiControl();
playGuiCtrl.position = new Vector();
playGuiCtrl.extent = new Vector(640, 480);
playGuiCtrl.position = new Vector(145, 82);
var subX = 640 - (scene2d.width - 145 * 2) * 640 / scene2d.width;
var subY = 480 - (scene2d.height - 82 * 2) * 480 / scene2d.height;
playGuiCtrl.extent = new Vector(640 - subX, 480 - subY);
playGuiCtrl.horizSizing = Width;
playGuiCtrl.vertSizing = Height;
playGuiCtrlOuter.addChild(playGuiCtrl);
var numberTiles = [];
for (i in 0...10) {
@ -137,11 +155,12 @@ class PlayGui {
MarbleGame.instance.touchInput.showControls(this.playGuiCtrl, game == 'ultra');
}
playGuiCtrl.render(scene2d);
playGuiCtrlOuter.render(scene2d);
resizeEv = () -> {
var wnd = Window.getInstance();
playGuiCtrl.render(MarbleGame.canvas.scene2d);
powerupBox.position.x = wnd.width * 469.0 / 640.0;
playGuiCtrlOuter.render(MarbleGame.canvas.scene2d);
};
Window.getInstance().addResizeEvent(resizeEv);
@ -151,44 +170,64 @@ class PlayGui {
public function initTimer() {
var timerCtrl = new GuiImage(ResourceLoader.getResource('data/ui/game/timebackdrop0.png', ResourceLoader.getImage, this.imageResources).toTile());
timerCtrl.horizSizing = HorizSizing.Center;
timerCtrl.position = new Vector(215, 0);
timerCtrl.extent = new Vector(256, 64);
timerCtrl.horizSizing = Center;
timerCtrl.xScale = (scene2d.height - 82 * 2) / 480;
timerCtrl.yScale = (scene2d.height - 82 * 2) / 480;
var innerCtrl = new GuiControl();
innerCtrl.position = new Vector(26, 0);
innerCtrl.extent = new Vector(256, 64);
innerCtrl.xScale = (scene2d.height - 82 * 2) / 480;
innerCtrl.yScale = (scene2d.height - 82 * 2) / 480;
timerCtrl.addChild(innerCtrl);
timerNumbers[0].position = new Vector(20, 4);
timerNumbers[0].extent = new Vector(43, 55);
timerNumbers[0].xScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[0].yScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[1].position = new Vector(40, 4);
timerNumbers[1].extent = new Vector(43, 55);
timerNumbers[1].xScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[1].yScale = (scene2d.height - 82 * 2) / 480;
var colonCols = ResourceLoader.getResource('data/ui/game/numbers/colon.png', ResourceLoader.getImage, this.imageResources).toTile();
timerColon = new GuiImage(colonCols);
timerColon.position = new Vector(55, 4);
timerColon.extent = new Vector(43, 55);
timerColon.xScale = (scene2d.height - 82 * 2) / 480;
timerColon.yScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[2].position = new Vector(70, 4);
timerNumbers[2].extent = new Vector(43, 55);
timerNumbers[2].xScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[2].yScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[3].position = new Vector(90, 4);
timerNumbers[3].extent = new Vector(43, 55);
timerNumbers[3].xScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[3].yScale = (scene2d.height - 82 * 2) / 480;
var pointCols = ResourceLoader.getResource('data/ui/game/numbers/point.png', ResourceLoader.getImage, this.imageResources).toTile();
timerPoint = new GuiImage(pointCols);
timerPoint.position = new Vector(105, 4);
timerPoint.extent = new Vector(43, 55);
timerPoint.xScale = (scene2d.height - 82 * 2) / 480;
timerPoint.yScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[4].position = new Vector(120, 4);
timerNumbers[4].extent = new Vector(43, 55);
timerNumbers[4].xScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[4].yScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[5].position = new Vector(140, 4);
timerNumbers[5].extent = new Vector(43, 55);
timerNumbers[5].xScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[5].yScale = (scene2d.height - 82 * 2) / 480;
timerNumbers[6].position = new Vector(191, 0);
timerNumbers[6].extent = new Vector(43, 55);
@ -238,37 +277,57 @@ class PlayGui {
var gemBox = new GuiControl();
gemBox.position = new Vector(0, 0);
gemBox.extent = new Vector(300, 200);
gemBox.xScale = (scene2d.height - 82 * 2) / 480;
gemBox.yScale = (scene2d.height - 82 * 2) / 480;
var innerCtrl = new GuiControl();
innerCtrl.position = new Vector(26, 0);
innerCtrl.extent = new Vector(256, 64);
innerCtrl.xScale = (scene2d.height - 82 * 2) / 480;
innerCtrl.yScale = (scene2d.height - 82 * 2) / 480;
gemBox.addChild(innerCtrl);
gemCountNumbers[0].position = new Vector(20, 4);
gemCountNumbers[0].extent = new Vector(43, 55);
gemCountNumbers[0].xScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[0].yScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[1].position = new Vector(38, 4);
gemCountNumbers[1].extent = new Vector(43, 55);
gemCountNumbers[1].xScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[1].yScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[2].position = new Vector(56, 4);
gemCountNumbers[2].extent = new Vector(43, 55);
gemCountNumbers[2].xScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[2].yScale = (scene2d.height - 82 * 2) / 480;
gemCountSlash = new GuiImage(ResourceLoader.getResource('data/ui/game/numbers/slash.png', ResourceLoader.getImage, this.imageResources).toTile());
gemCountSlash.position = new Vector(73, 4);
gemCountSlash.extent = new Vector(43, 55);
gemCountSlash.xScale = (scene2d.height - 82 * 2) / 480;
gemCountSlash.yScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[3].position = new Vector(89, 4);
gemCountNumbers[3].extent = new Vector(43, 55);
gemCountNumbers[3].xScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[3].yScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[4].position = new Vector(107, 4);
gemCountNumbers[4].extent = new Vector(43, 55);
gemCountNumbers[4].xScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[4].yScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[5].position = new Vector(125, 4);
gemCountNumbers[5].extent = new Vector(43, 55);
gemCountNumbers[5].xScale = (scene2d.height - 82 * 2) / 480;
gemCountNumbers[5].yScale = (scene2d.height - 82 * 2) / 480;
var gemHUD = new GuiImage(ResourceLoader.getResource('data/ui/game/gem.png', ResourceLoader.getImage, this.imageResources).toTile());
gemHUD = new GuiImage(ResourceLoader.getResource('data/ui/game/gem.png', ResourceLoader.getImage, this.imageResources).toTile());
gemHUD.position = new Vector(144, 2);
gemHUD.extent = new Vector(64, 64);
gemHUD.xScale = (scene2d.height - 82 * 2) / 480;
gemHUD.yScale = (scene2d.height - 82 * 2) / 480;
innerCtrl.addChild(gemCountNumbers[0]);
innerCtrl.addChild(gemCountNumbers[1]);
@ -294,36 +353,39 @@ class PlayGui {
];
powerupBox = new GuiAnim(powerupImgs);
powerupBox.position = new Vector(469, 0);
// powerupBox.position = new Vector(469, 0);
powerupBox.position = new Vector(playGuiCtrl.extent.x - 171, 0);
powerupBox.extent = new Vector(170, 170);
powerupBox.horizSizing = Left;
powerupBox.vertSizing = Bottom;
powerupBox.xScale = (scene2d.height - 82 * 2) / 480;
powerupBox.yScale = (scene2d.height - 82 * 2) / 480;
playGuiCtrl.addChild(powerupBox);
}
function initTexts() {
var domcasual32fontdata = ResourceLoader.getFileEntry("data/font/DomCasualD.fnt");
var domcasual32b = new BitmapFont(domcasual32fontdata.entry);
@:privateAccess domcasual32b.loader = ResourceLoader.loader;
var bfont = domcasual32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel);
var arial14fontdata = ResourceLoader.getFileEntry("data/font/Arial Bold.fnt");
var arial14b = new BitmapFont(arial14fontdata.entry);
@:privateAccess arial14b.loader = ResourceLoader.loader;
var arial14 = arial14b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel);
var helpTextCtrl = new GuiControl();
helpTextCtrl.position = new Vector(0, 210);
helpTextCtrl.position = new Vector(0, playGuiCtrl.extent.y * 190 / 480);
helpTextCtrl.extent = new Vector(640, 60);
helpTextCtrl.vertSizing = Center;
helpTextCtrl.horizSizing = Width;
helpTextBackground = new GuiText(bfont);
helpTextBackground.text.textColor = 0x777777;
helpTextBackground.position = new Vector(1, 1);
helpTextBackground = new GuiText(arial14);
helpTextBackground.text.textColor = 0x000000;
helpTextBackground.position = new Vector(2, 2);
helpTextBackground.extent = new Vector(640, 14);
helpTextBackground.vertSizing = Height;
helpTextBackground.horizSizing = Width;
helpTextBackground.justify = Center;
helpTextForeground = new GuiText(bfont);
helpTextForeground.text.textColor = 0xFFFFFF;
helpTextForeground = new GuiText(arial14);
helpTextForeground.text.textColor = 0xEBEBEB;
helpTextForeground.position = new Vector(0, 0);
helpTextForeground.extent = new Vector(640, 16);
helpTextForeground.vertSizing = Height;
@ -334,21 +396,21 @@ class PlayGui {
helpTextCtrl.addChild(helpTextForeground);
var alertTextCtrl = new GuiControl();
alertTextCtrl.position = new Vector(0, 371);
alertTextCtrl.position = new Vector(0, playGuiCtrl.extent.y * 375 / 480);
alertTextCtrl.extent = new Vector(640, 105);
alertTextCtrl.vertSizing = Top;
alertTextCtrl.horizSizing = Width;
alertTextBackground = new GuiText(bfont);
alertTextBackground.text.textColor = 0x776622;
alertTextBackground.position = new Vector(1, 1);
alertTextBackground = new GuiText(arial14);
alertTextBackground.text.textColor = 0x000000;
alertTextBackground.position = new Vector(2, 2);
alertTextBackground.extent = new Vector(640, 32);
alertTextBackground.vertSizing = Height;
alertTextBackground.horizSizing = Width;
alertTextBackground.justify = Center;
alertTextForeground = new GuiText(bfont);
alertTextForeground.text.textColor = 0xffEE99;
alertTextForeground = new GuiText(arial14);
alertTextForeground.text.textColor = 0xEBEBEB;
alertTextForeground.position = new Vector(0, 0);
alertTextForeground.extent = new Vector(640, 32);
alertTextForeground.vertSizing = Height;
@ -358,8 +420,8 @@ class PlayGui {
alertTextCtrl.addChild(alertTextBackground);
alertTextCtrl.addChild(alertTextForeground);
playGuiCtrl.addChild(helpTextCtrl);
playGuiCtrl.addChild(alertTextCtrl);
playGuiCtrlOuter.addChild(helpTextCtrl);
playGuiCtrlOuter.addChild(alertTextCtrl);
}
function initFPSMeter() {
@ -388,44 +450,72 @@ class PlayGui {
function initBlastBar() {
blastBar = new GuiControl();
blastBar.position = new Vector(6, 445);
blastBar.extent = new Vector(120, 28);
blastBar.vertSizing = Top;
blastBar.position = new Vector(0, 400);
blastBar.extent = new Vector(170, 83);
blastBar.vertSizing = Bottom;
blastBar.xScale = (scene2d.height - 82 * 2) / 480;
blastBar.yScale = (scene2d.height - 82 * 2) / 480;
this.playGuiCtrl.addChild(blastBar);
blastFill = new GuiImage(ResourceLoader.getResource("data/ui/game/blastbar_bargreen.png", ResourceLoader.getImage, this.imageResources).toTile());
blastFill.position = new Vector(5, 5);
blastFill.extent = new Vector(58, 17);
blastFill.doClipping = false;
blastFill = new GuiImage(ResourceLoader.getResource("data/ui/game/powerbarMask.png", ResourceLoader.getImage, this.imageResources).toTile());
blastFill.position = new Vector(36, 38);
blastFill.extent = new Vector(100, 27);
blastFill.xScale = (scene2d.height - 82 * 2) / 480;
blastFill.yScale = (scene2d.height - 82 * 2) / 480;
var colorMat = Matrix.I();
colorMat.colorSet(0x0080FF);
blastFill.bmp.filter = new h2d.filter.ColorMatrix(colorMat);
blastBar.addChild(blastFill);
blastFrame = new GuiImage(ResourceLoader.getResource("data/ui/game/blastbar.png", ResourceLoader.getImage, this.imageResources).toTile());
blastFillUltra = new GuiImage(ResourceLoader.getResource("data/ui/game/powerbarMask.png", ResourceLoader.getImage, this.imageResources).toTile());
blastFillUltra.position = new Vector(36, 38);
blastFillUltra.extent = new Vector(100, 27);
blastFillUltra.xScale = (scene2d.height - 82 * 2) / 480;
blastFillUltra.yScale = (scene2d.height - 82 * 2) / 480;
var colorMat = Matrix.I();
colorMat.colorSet(0xC4FF00);
blastFillUltra.bmp.filter = new h2d.filter.ColorMatrix(colorMat);
blastBar.addChild(blastFillUltra);
blastFrame = new GuiImage(ResourceLoader.getResource("data/ui/game/powerbar.png", ResourceLoader.getImage, this.imageResources).toTile());
blastFrame.position = new Vector(0, 0);
blastFrame.extent = new Vector(120, 28);
blastFrame.extent = new Vector(170, 83);
blastFrame.xScale = (scene2d.height - 82 * 2) / 480;
blastFrame.yScale = (scene2d.height - 82 * 2) / 480;
blastBar.addChild(blastFrame);
}
var blastValue:Float = 0;
public function setBlastValue(value:Float) {
if (value <= 1) {
if (blastFill.extent.y == 16) { // Was previously charged
blastFrame.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar.png", ResourceLoader.getImage, this.imageResources).toTile();
}
var oldVal = blastFill.extent.x;
blastFill.extent = new Vector(Util.lerp(0, 110, value), 17);
if (oldVal < 22 && blastFill.extent.x >= 22) {
blastFill.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar_bargreen.png", ResourceLoader.getImage, this.imageResources).toTile();
var oldVal = blastValue;
blastValue = value;
blastFill.bmp.tile.setSize(Util.lerp(0, 75, value), 20);
blastFill.bmp.scaleX = value;
// blastFill.extent = new Vector(Util.lerp(0, 100, value), 27);
if (oldVal < 0.25 && value >= 0.25) {
var colorMat = cast(blastFill.bmp.filter, h2d.filter.ColorMatrix);
colorMat.matrix.colorSet(0x0080FF);
MarbleGame.instance.touchInput.blastbutton.setEnabled(true);
}
if (oldVal >= 22 && blastFill.extent.x < 22) {
blastFill.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar_bargray.png", ResourceLoader.getImage, this.imageResources).toTile();
if (oldVal >= 0.25 && value < 0.25) {
var colorMat = cast(blastFill.bmp.filter, h2d.filter.ColorMatrix);
colorMat.matrix.colorSet(0xCDD2D7);
MarbleGame.instance.touchInput.blastbutton.setEnabled(false);
}
blastFillUltra.bmp.visible = false;
} else {
blastFill.extent = new Vector(0, 16); // WE will just use this extra number to store whether it was previously charged or not
blastFrame.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar_charged.png", ResourceLoader.getImage, this.imageResources).toTile();
blastFillUltra.bmp.visible = true;
var fillPercent = (value - 1) * 6;
blastFillUltra.bmp.tile.setSize(Util.lerp(0, 75, fillPercent), 20);
blastFillUltra.bmp.scaleX = fillPercent;
MarbleGame.instance.touchInput.blastbutton.setEnabled(true);
}
this.blastBar.render(scene2d);
}
public function setHelpTextOpacity(value:Float) {
@ -472,17 +562,70 @@ class PlayGui {
}
}
public function resizeGemCounter(total:Int) {
if (total >= 100) {
// 3 digits
gemCountNumbers[0].anim.visible = true;
gemCountNumbers[1].anim.visible = true;
gemCountNumbers[2].anim.visible = true;
gemCountNumbers[3].anim.visible = true;
gemCountNumbers[4].anim.visible = true;
gemCountNumbers[5].anim.visible = true;
gemCountNumbers[0].position.x = 20;
gemCountNumbers[1].position.x = 38;
gemCountNumbers[2].position.x = 56;
gemCountNumbers[3].position.x = 89;
gemCountNumbers[4].position.x = 107;
gemCountNumbers[5].position.x = 125;
gemCountSlash.position.x = 73;
gemHUD.position.x = 144;
} else if (total >= 10) {
// 2 digits
gemCountNumbers[0].anim.visible = false;
gemCountNumbers[1].anim.visible = true;
gemCountNumbers[2].anim.visible = true;
gemCountNumbers[3].anim.visible = false;
gemCountNumbers[4].anim.visible = true;
gemCountNumbers[5].anim.visible = true;
gemCountNumbers[2].position.x = 32;
gemCountNumbers[5].position.x = 83;
gemCountNumbers[1].position.x = 14;
gemCountNumbers[4].position.x = 65;
gemCountSlash.position.x = 49;
gemHUD.position.x = 101;
} else {
// 1 digit
gemCountNumbers[0].anim.visible = false;
gemCountNumbers[1].anim.visible = false;
gemCountNumbers[2].anim.visible = true;
gemCountNumbers[3].anim.visible = false;
gemCountNumbers[4].anim.visible = false;
gemCountNumbers[5].anim.visible = true;
gemCountNumbers[2].position.x = 8;
gemCountNumbers[5].position.x = 41;
gemCountSlash.position.x = 25;
gemHUD.position.x = 59;
}
gemHUD.parent.render(scene2d, @:privateAccess gemHUD.parent.parent._flow);
}
public function formatGemCounter(collected:Int, total:Int) {
if (total == 0) {
for (number in gemCountNumbers) {
number.anim.visible = false;
}
gemCountSlash.bmp.visible = false;
gemHUD.bmp.visible = false;
} else {
for (number in gemCountNumbers) {
number.anim.visible = true;
if (totalGems != total) {
resizeGemCounter(total);
totalGems = total;
}
gemCountSlash.bmp.visible = true;
gemHUD.bmp.visible = true;
}
var totalHundredths = Math.floor(total / 100);

View file

@ -14,7 +14,7 @@ class AntiGravity extends PowerUp {
this.isCollideable = false;
this.isTSStatic = false;
this.identifier = "AntiGravity";
this.pickUpName = "Gravity Defier";
this.pickUpName = "a Gravity Modifier";
this.autoUse = true;
this.useInstancing = true;
this.animateSubObjectOpacities = true;

View file

@ -13,7 +13,7 @@ class Blast extends PowerUp {
this.isTSStatic = false;
this.showSequences = true;
this.identifier = "Blast";
this.pickUpName = "Blast PowerUp";
this.pickUpName = "a Blast powerup";
this.ambientRotate = false;
this.autoUse = true;
}
@ -32,7 +32,7 @@ class Blast extends PowerUp {
}
public function use(timeState:TimeState) {
this.level.blastAmount = 1.03;
this.level.blastAmount = 1.2;
}
override function postProcessMaterial(matName:String, material:h3d.mat.Material) {

View file

@ -23,10 +23,10 @@ class EasterEgg extends PowerUp {
if (!found) {
Settings.easterEggs.set(this.level.mission.path, this.level.timeState.currentAttemptTime);
this.pickupSound = ResourceLoader.getResource("data/sound/easter_egg.wav", ResourceLoader.getAudio, this.soundResources);
this.customPickupMessage = "You found an Easter Egg!";
this.customPickupMessage = "You picked up an Easter Egg!";
} else {
this.pickupSound = ResourceLoader.getResource("data/sound/easterfound.wav", ResourceLoader.getAudio, this.soundResources);
this.customPickupMessage = "You already found this Easter Egg.";
this.customPickupMessage = "You picked up an Easter Egg!.";
}
return true;

View file

@ -16,7 +16,7 @@ class Helicopter extends PowerUp {
this.isTSStatic = false;
this.showSequences = false;
this.identifier = "Helicopter";
this.pickUpName = "Helicopter PowerUp";
this.pickUpName = "a Gyrocopter powerup";
}
public override function init(level:MarbleWorld, onFinish:Void->Void) {

View file

@ -15,7 +15,7 @@ class MegaMarble extends PowerUp {
this.isTSStatic = false;
this.showSequences = true;
this.identifier = "MegaMarble";
this.pickUpName = "Mega Marble PowerUp";
this.pickUpName = "a Mega-Marble powerup";
}
public override function init(level:MarbleWorld, onFinish:Void->Void) {

View file

@ -41,7 +41,7 @@ abstract class PowerUp extends DtsObject {
if (customPickupMessage != null)
this.level.displayAlert(customPickupMessage);
else
this.level.displayAlert('You picked up a ${this.pickUpName}!');
this.level.displayAlert('You picked up ${this.pickUpName}!');
if (this.element.showhelponpickup == "1" && !this.autoUse)
this.level.displayHelp('Press <func:bind mousefire> to use the ${this.pickUpName}!');

View file

@ -42,7 +42,7 @@ class SuperJump extends PowerUp {
this.isCollideable = false;
this.isTSStatic = false;
this.identifier = "SuperJump";
this.pickUpName = "Jump Boost PowerUp";
this.pickUpName = "a Super Jump powerup";
this.showSequences = false;
sjEmitterParticleData = new ParticleData();
sjEmitterParticleData.identifier = "superJumpParticle";

View file

@ -47,7 +47,7 @@ class SuperSpeed extends PowerUp {
this.isCollideable = false;
this.isTSStatic = false;
this.identifier = "SuperSpeed";
this.pickUpName = "Speed Booster PowerUp";
this.pickUpName = "a Super Speed powerup";
this.useInstancing = true;
ssEmitterParticleData = new ParticleData();
ssEmitterParticleData.identifier = "superSpeedParticle";

View file

@ -24,7 +24,7 @@ class TimeTravel extends PowerUp {
this.timeBonus = -MisParser.parseNumber(element.timepenalty) / 1000;
}
this.pickUpName = '${this.timeBonus} second Time ${this.timeBonus >= 0 ? 'Modifier' : 'Penalty'}';
this.pickUpName = '${this.timeBonus} seconds of Time Travel ${this.timeBonus >= 0 ? 'bonus' : 'Penalty'}';
this.cooldownDuration = 1e8;
this.useInstancing = true;
this.autoUse = true;