fix the console rendering

This commit is contained in:
RandomityGuy 2023-05-13 23:09:52 +05:30
parent b198dfb6bd
commit fca333a7e6
5 changed files with 27 additions and 19 deletions

View file

@ -593,19 +593,23 @@ class MarbleWorld extends Scheduler {
return; // We will update state manually return; // We will update state manually
if (this.timeState.currentAttemptTime < 0.5) { if (this.timeState.currentAttemptTime < 0.5) {
this.playGui.setCenterText('none'); this.playGui.setCenterText('none');
this.marble.mode = Start;
} }
if ((this.timeState.currentAttemptTime >= 0.5) && (this.timeState.currentAttemptTime < 2)) { if ((this.timeState.currentAttemptTime >= 0.5) && (this.timeState.currentAttemptTime < 2)) {
this.playGui.setCenterText('ready'); this.playGui.setCenterText('ready');
this.marble.mode = Start;
} }
if ((this.timeState.currentAttemptTime >= 2) && (this.timeState.currentAttemptTime < 3.5)) { if ((this.timeState.currentAttemptTime >= 2) && (this.timeState.currentAttemptTime < 3.5)) {
this.playGui.setCenterText('set'); this.playGui.setCenterText('set');
this.marble.mode = Start;
} }
if ((this.timeState.currentAttemptTime >= 3.5) && (this.timeState.currentAttemptTime < 5.5)) { if ((this.timeState.currentAttemptTime >= 3.5) && (this.timeState.currentAttemptTime < 5.5)) {
this.playGui.setCenterText('go'); this.playGui.setCenterText('go');
this.marble.mode = Play; this.marble.mode = Play;
} }
if (this.timeState.currentAttemptTime >= 5.5) { if (this.timeState.currentAttemptTime >= 5.5 && this.finishTime == null) {
this.playGui.setCenterText('none'); this.playGui.setCenterText('none');
this.marble.mode = Play;
} }
} }
@ -991,12 +995,12 @@ class MarbleWorld extends Scheduler {
if (Key.isDown(Settings.controlsSettings.rewind) && Settings.optionsSettings.rewindEnabled && !this.isWatching) { if (Key.isDown(Settings.controlsSettings.rewind) && Settings.optionsSettings.rewindEnabled && !this.isWatching) {
this.rewinding = true; this.rewinding = true;
} else { } else {
this.rewinding = false; if (Key.isReleased(Settings.controlsSettings.rewind) && this.rewinding) {
if (Key.isReleased(Settings.controlsSettings.rewind)) {
if (this.isRecording) { if (this.isRecording) {
this.replay.spliceReplay(timeState.currentAttemptTime); this.replay.spliceReplay(timeState.currentAttemptTime);
} }
} }
this.rewinding = false;
} }
if (!this.isWatching) { if (!this.isWatching) {

View file

@ -84,7 +84,7 @@ class ConsoleDlg extends GuiControl {
bord.position = new Vector(0, 350); bord.position = new Vector(0, 350);
bord.extent = new Vector(640, 18); bord.extent = new Vector(640, 18);
bord.horizSizing = Width; bord.horizSizing = Width;
consoleContent.addChild(bord); this.addChild(bord);
consoleInput = new GuiTextInput(arial14); consoleInput = new GuiTextInput(arial14);
consoleInput.position = new Vector(1, 351); consoleInput.position = new Vector(1, 351);
@ -96,7 +96,7 @@ class ConsoleDlg extends GuiControl {
consoleInput.text.selectionColor.set(1, 1, 1); consoleInput.text.selectionColor.set(1, 1, 1);
consoleInput.text.selectionTile = h2d.Tile.fromColor(0x808080, 0, hxd.Math.ceil(consoleInput.text.font.lineHeight)); consoleInput.text.selectionTile = h2d.Tile.fromColor(0x808080, 0, hxd.Math.ceil(consoleInput.text.font.lineHeight));
consoleContent.addChild(consoleInput); this.addChild(consoleInput);
onConsoleEntry = (e) -> { onConsoleEntry = (e) -> {
var txt = '[${e.time}] ${StringTools.htmlEscape(e.text)}<br/>'; var txt = '[${e.time}] ${StringTools.htmlEscape(e.text)}<br/>';

View file

@ -17,7 +17,7 @@ class GuiConsoleScrollCtrl extends GuiControl {
var maxScrollY:Float; var maxScrollY:Float;
var scrollBarY:h2d.Object; var scrollBarY:h2d.Object;
var scrollTrack:Bitmap; var scrollTrack:GuiImage;
var scrollTopTile:Tile; var scrollTopTile:Tile;
var scrollBottomTile:Tile; var scrollBottomTile:Tile;
@ -57,6 +57,10 @@ class GuiConsoleScrollCtrl extends GuiControl {
var scrollDownPressedTile = scrollBar.sub(19, 19, 18, 17); var scrollDownPressedTile = scrollBar.sub(19, 19, 18, 17);
var scrollUpDisabledTile = scrollBar.sub(38, 1, 18, 17); var scrollUpDisabledTile = scrollBar.sub(38, 1, 18, 17);
var scrollDownDisabledTile = scrollBar.sub(38, 19, 18, 17); var scrollDownDisabledTile = scrollBar.sub(38, 19, 18, 17);
this._manualScroll = true;
this.scrollTrack = new GuiImage(scrollTrackTile);
this.addChild(this.scrollTrack);
scrollUpButton = new GuiButton([scrollUpTile, scrollUpTile, scrollUpPressedTile, scrollUpDisabledTile]); scrollUpButton = new GuiButton([scrollUpTile, scrollUpTile, scrollUpPressedTile, scrollUpDisabledTile]);
scrollUpButton.position = new Vector(0, 0); scrollUpButton.position = new Vector(0, 0);
@ -117,7 +121,6 @@ class GuiConsoleScrollCtrl extends GuiControl {
}); });
} }
}; };
this.scrollTrack = new Bitmap(scrollTrackTile);
} }
public function setScrollMax(max:Float) { public function setScrollMax(max:Float) {
@ -132,26 +135,25 @@ class GuiConsoleScrollCtrl extends GuiControl {
public override function getRenderRectangle():Rect { public override function getRenderRectangle():Rect {
var rrec = super.getRenderRectangle(); var rrec = super.getRenderRectangle();
rrec.scroll.y = scrollY * this.maxScrollY / (rrec.extent.y - 34 * Settings.uiScale); // rrec.scroll.y = scrollY * this.maxScrollY / (rrec.extent.y - 34 * Settings.uiScale);
return rrec; return rrec;
} }
public override function render(scene2d:Scene) { public override function render(scene2d:Scene) {
this.dirty = true; this.dirty = true;
this.scrollTrack.position = new Vector(extent.x - 18 * Settings.uiScale, 0);
this.scrollTrack.extent = new Vector(18, this.extent.y);
scrollUpButton.position = new Vector(this.extent.x - 18, 0); scrollUpButton.position = new Vector(this.extent.x - 18, 0);
scrollDownButton.position = new Vector(this.extent.x - 18, this.extent.y - 17); scrollDownButton.position = new Vector(this.extent.x - 18, this.extent.y - 17);
if (scene2d.contains(scrollTrack))
scene2d.removeChild(scrollTrack);
if (scene2d.contains(scrollBarY)) if (scene2d.contains(scrollBarY))
scene2d.removeChild(scrollBarY); scene2d.removeChild(scrollBarY);
if (scene2d.contains(clickInteractive)) if (scene2d.contains(clickInteractive))
scene2d.removeChild(clickInteractive); scene2d.removeChild(clickInteractive);
scene2d.addChild(scrollTrack);
scene2d.addChild(scrollBarY); scene2d.addChild(scrollBarY);
scene2d.addChild(clickInteractive); scene2d.addChild(clickInteractive);
@ -169,13 +171,13 @@ class GuiConsoleScrollCtrl extends GuiControl {
} }
scrollBarY.visible = true; scrollBarY.visible = true;
this.scrollTrack.setPosition(renderRect.position.x + renderRect.extent.x - 18 * Settings.uiScale, renderRect.position.y); // this.scrollTrack.setPosition(renderRect.position.x + renderRect.extent.x - 18 * Settings.uiScale, renderRect.position.y);
var scrollExtentY = renderRect.extent.y - 34 * Settings.uiScale; var scrollExtentY = renderRect.extent.y - 34 * Settings.uiScale;
var scrollBarYSize = (scrollExtentY * scrollExtentY / (maxScrollY * Settings.uiScale - 34 * Settings.uiScale)); var scrollBarYSize = (scrollExtentY * scrollExtentY / (maxScrollY * Settings.uiScale - 34 * Settings.uiScale));
this.scrollTrack.scaleY = renderRect.extent.y; this.scrollTrack.bmp.scaleY = renderRect.extent.y;
this.scrollY = Util.clamp(scrollY, 0, scrollExtentY - scrollBarYSize * Settings.uiScale); this.scrollY = Util.clamp(scrollY, 0, scrollExtentY - scrollBarYSize * Settings.uiScale);
@ -222,6 +224,8 @@ class GuiConsoleScrollCtrl extends GuiControl {
} }
for (c in this.children) { for (c in this.children) {
if (c == this.scrollTrack || c == this.scrollUpButton || c == this.scrollDownButton)
continue;
c.onScroll(0, scrollY * (this.maxScrollY - 34 * Settings.uiScale) / scrollExtentY); c.onScroll(0, scrollY * (this.maxScrollY - 34 * Settings.uiScale) / scrollExtentY);
} }
} }
@ -229,7 +233,6 @@ class GuiConsoleScrollCtrl extends GuiControl {
public override function dispose() { public override function dispose() {
super.dispose(); super.dispose();
this.scrollBarY.remove(); this.scrollBarY.remove();
this.scrollTrack.remove();
this.clickInteractive.remove(); this.clickInteractive.remove();
} }
@ -244,9 +247,6 @@ class GuiConsoleScrollCtrl extends GuiControl {
public override function onRemove() { public override function onRemove() {
super.onRemove(); super.onRemove();
if (MarbleGame.canvas.scene2d.contains(scrollTrack)) {
MarbleGame.canvas.scene2d.removeChild(scrollTrack); // Refresh "layer"
}
if (MarbleGame.canvas.scene2d.contains(scrollBarY)) { if (MarbleGame.canvas.scene2d.contains(scrollBarY)) {
MarbleGame.canvas.scene2d.removeChild(scrollBarY); // Refresh "layer" MarbleGame.canvas.scene2d.removeChild(scrollBarY); // Refresh "layer"
} }

View file

@ -100,7 +100,7 @@ class RewindFrame {
c.blastAmt = blastAmt; c.blastAmt = blastAmt;
c.oobState = { c.oobState = {
oob: oobState.oob, oob: oobState.oob,
timeState: oobState.timeState.clone() timeState: oobState.timeState != null ? oobState.timeState.clone() : null
}; };
c.checkpointState = { c.checkpointState = {
currentCheckpoint: checkpointState.currentCheckpoint != null ? { currentCheckpoint: checkpointState.currentCheckpoint != null ? {
@ -113,5 +113,6 @@ class RewindFrame {
checkpointUp: checkpointState.checkpointUp != null ? checkpointState.checkpointUp.clone() : null, checkpointUp: checkpointState.checkpointUp != null ? checkpointState.checkpointUp.clone() : null,
checkpointBlast: checkpointState.checkpointBlast, checkpointBlast: checkpointState.checkpointBlast,
}; };
return c;
} }
} }

View file

@ -239,6 +239,9 @@ class RewindManager {
var topFrame = frames[frames.length - 1]; var topFrame = frames[frames.length - 1];
while (topFrame.timeState.currentAttemptTime > absTime) { while (topFrame.timeState.currentAttemptTime > absTime) {
if (frames.length == 1) {
return frames[0];
}
frames.pop(); frames.pop();
if (frames.length == 0) if (frames.length == 0)
return null; return null;