Arrow Visibility now depends on Session Slot hasData

This commit is contained in:
frutescens 2024-09-30 12:13:05 -07:00
parent 337ca0ab54
commit 8326911f36

View File

@ -84,9 +84,11 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler {
this.saveSlotSelectCallback = args[1] as SaveSlotSelectCallback; this.saveSlotSelectCallback = args[1] as SaveSlotSelectCallback;
this.saveSlotSelectContainer.setVisible(true); this.saveSlotSelectContainer.setVisible(true);
this.populateSessionSlots(); this.populateSessionSlots()
.then(() => {
this.setScrollCursor(0); this.setScrollCursor(0);
this.setCursor(0); this.setCursor(0);
});
return true; return true;
} }
@ -94,6 +96,8 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler {
processInput(button: Button): boolean { processInput(button: Button): boolean {
const ui = this.getUi(); const ui = this.getUi();
let success = false; let success = false;
let error = false; let error = false;
@ -150,18 +154,14 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler {
} else { } else {
switch (button) { switch (button) {
case Button.UP: case Button.UP:
if (this.cursor < 2) { if (this.scrollCursor === 0 && this.cursor === 2) {
this.revertSessionSlot(this.cursor);
if (this.cursor === 0) {
success = this.setCursor(this.cursor);
} else {
success = this.setCursor(this.cursor - 1);
}
} else if (this.scrollCursor === 0 && this.cursor === 2) {
this.revertSessionSlot(this.cursor); this.revertSessionSlot(this.cursor);
success = this.setScrollCursor(this.scrollCursor); success = this.setScrollCursor(this.scrollCursor);
success = this.setCursor(this.cursor-1); success = this.setCursor(this.cursor-1);
} else if (this.scrollCursor > 0) { } else if (this.cursor < 2) {
this.revertSessionSlot(this.cursor);
success = (this.cursor === 0) ? this.setCursor(this.cursor) : this.setCursor(this.cursor - 1);
} else if (this.scrollCursor) {
this.revertSessionSlot(this.scrollCursor + this.cursor); this.revertSessionSlot(this.scrollCursor + this.cursor);
success = this.setScrollCursor(this.scrollCursor - 1); success = this.setScrollCursor(this.scrollCursor - 1);
} }
@ -191,10 +191,10 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler {
return success || error; return success || error;
} }
populateSessionSlots() { async populateSessionSlots() {
for (let s = 0; s < sessionSlotCount; s++) { for (let s = 0; s < sessionSlotCount; s++) {
const sessionSlot = new SessionSlot(this.scene, s); const sessionSlot = new SessionSlot(this.scene, s);
sessionSlot.load(); await sessionSlot.load();
this.scene.add.existing(sessionSlot); this.scene.add.existing(sessionSlot);
this.sessionSlotsContainer.add(sessionSlot); this.sessionSlotsContainer.add(sessionSlot);
this.sessionSlots.push(sessionSlot); this.sessionSlots.push(sessionSlot);
@ -230,16 +230,33 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler {
const cursorBox = this.scene.add.nineslice(0, 0, "select_cursor_highlight_thick", undefined, 296, 44, 6, 6, 6, 6); const cursorBox = this.scene.add.nineslice(0, 0, "select_cursor_highlight_thick", undefined, 296, 44, 6, 6, 6, 6);
const rightArrow = this.scene.add.image(0, 0, "cursor"); const rightArrow = this.scene.add.image(0, 0, "cursor");
rightArrow.setPosition(160, 0); rightArrow.setPosition(160, 0);
rightArrow.setName("rightArrow");
this.cursorObj.add([cursorBox, rightArrow]); this.cursorObj.add([cursorBox, rightArrow]);
this.sessionSlotsContainer.add(this.cursorObj); this.sessionSlotsContainer.add(this.cursorObj);
} }
const cursorPosition = cursor + this.scrollCursor; const cursorPosition = cursor + this.scrollCursor;
this.cursorObj.setPosition(145, 26 + (cursorPosition) * 56); const cursorIncrement = cursorPosition * 56;
this.sessionSlots[cursorPosition].setPosition(-6, (cursor + this.scrollCursor) * 56); if (this.sessionSlots[cursorPosition] && this.cursorObj) {
const hasData = this.sessionSlots[cursorPosition].hasData;
if (!hasData) {
this.cursorObj.setPosition(151, 26 + cursorIncrement);
this.sessionSlots[cursorPosition].setPosition(0, cursorIncrement);
} else {
this.cursorObj.setPosition(145, 26 + cursorIncrement);
this.sessionSlots[cursorPosition].setPosition(-6, cursorIncrement);
}
this.setArrowVisibility(hasData);
}
return changed; return changed;
} }
setArrowVisibility(hasData: boolean) {
if (this.cursorObj) {
const rightArrow = this.cursorObj?.getByName("rightArrow") as Phaser.GameObjects.Image;
rightArrow.setVisible(hasData);
}
}
setScrollCursor(scrollCursor: integer): boolean { setScrollCursor(scrollCursor: integer): boolean {
const changed = scrollCursor !== this.scrollCursor; const changed = scrollCursor !== this.scrollCursor;