Refactor controls and add random starter function
This commit is contained in:
1 parent
15c3318bd5
commit
8e6e1fd233
14 files changed
+171
-150
No files matched your search
@@ -1,5 +1,5 @@
|
||||
import { CommandPhase } from "../battle-phase";
|
||||
import BattleScene from "../battle-scene";
|
||||
import { CommandPhase } from "../battle-phases";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { getPokeballName, PokeballType } from "../pokeball";
|
||||
import { addTextObject, TextStyle } from "../text";
|
||||
import { Command } from "./command-ui-handler";
|
||||
@@ -55,17 +55,16 @@ export default class BallUiHandler extends UiHandler {
|
||||
this.setCursor(this.cursor);
|
||||
}
|
||||
|
||||
processInput(keyCode: integer) {
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
processInput(button: Button) {
|
||||
const ui = this.getUi();
|
||||
|
||||
let success = false;
|
||||
|
||||
const pokeballTypeCount = Object.keys(this.scene.pokeballCounts).length;
|
||||
|
||||
if (keyCode === keyCodes.Z || keyCode === keyCodes.X) {
|
||||
if (button === Button.ACTION || button === Button.CANCEL) {
|
||||
success = true;
|
||||
if (keyCode === keyCodes.Z && this.cursor < pokeballTypeCount) {
|
||||
if (button === Button.ACTION && this.cursor < pokeballTypeCount) {
|
||||
if (this.scene.pokeballCounts[this.cursor]) {
|
||||
(this.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.BALL, this.cursor);
|
||||
this.scene.ui.setMode(Mode.COMMAND);
|
||||
@@ -78,11 +77,11 @@ export default class BallUiHandler extends UiHandler {
|
||||
success = true;
|
||||
}
|
||||
} else {
|
||||
switch (keyCode) {
|
||||
case keyCodes.UP:
|
||||
switch (button) {
|
||||
case Button.UP:
|
||||
success = this.setCursor(this.cursor ? this.cursor - 1 : pokeballTypeCount);
|
||||
break;
|
||||
case keyCodes.DOWN:
|
||||
case Button.DOWN:
|
||||
success = this.setCursor(this.cursor < pokeballTypeCount ? this.cursor + 1 : 0);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { addTextObject, TextStyle } from "../text";
|
||||
import UI, { Mode } from "./ui";
|
||||
import * as Utils from "../utils";
|
||||
@@ -87,11 +87,10 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
|
||||
this.message.setWordWrapWidth(1780);
|
||||
}
|
||||
|
||||
processInput(keyCode: integer) {
|
||||
processInput(button: Button) {
|
||||
const ui = this.getUi();
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
if (this.awaitingActionInput) {
|
||||
if (keyCode === keyCodes.X || keyCode === keyCodes.Z) {
|
||||
if (button === Button.CANCEL || button === Button.ACTION) {
|
||||
if (this.onActionInput) {
|
||||
ui.playSelect();
|
||||
const originalOnActionInput = this.onActionInput;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { addTextObject, TextStyle } from "../text";
|
||||
import { toPokemonUpperCase } from "../utils";
|
||||
import { PartyUiMode } from "./party-ui-handler";
|
||||
@@ -46,15 +46,14 @@ export default class CommandUiHandler extends UiHandler {
|
||||
this.setCursor(this.cursor);
|
||||
}
|
||||
|
||||
processInput(keyCode: integer) {
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
processInput(button: Button) {
|
||||
const ui = this.getUi();
|
||||
|
||||
let success = false;
|
||||
|
||||
if (keyCode === keyCodes.X || keyCode === keyCodes.Z) {
|
||||
if (button === Button.CANCEL || button === Button.ACTION) {
|
||||
|
||||
if (keyCode === keyCodes.Z) {
|
||||
if (button === Button.ACTION) {
|
||||
switch (this.cursor) {
|
||||
case 0:
|
||||
ui.setMode(Mode.FIGHT);
|
||||
@@ -71,20 +70,20 @@ export default class CommandUiHandler extends UiHandler {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
switch (keyCode) {
|
||||
case keyCodes.UP:
|
||||
switch (button) {
|
||||
case Button.UP:
|
||||
if (this.cursor >= 2)
|
||||
success = this.setCursor(this.cursor - 2);
|
||||
break;
|
||||
case keyCodes.DOWN:
|
||||
case Button.DOWN:
|
||||
if (this.cursor < 2)
|
||||
success = this.setCursor(this.cursor + 2);
|
||||
break;
|
||||
case keyCodes.LEFT:
|
||||
case Button.LEFT:
|
||||
if (this.cursor % 2 === 1)
|
||||
success = this.setCursor(this.cursor - 1);
|
||||
break;
|
||||
case keyCodes.RIGHT:
|
||||
case Button.RIGHT:
|
||||
if (this.cursor % 2 === 0)
|
||||
success = this.setCursor(this.cursor + 1);
|
||||
break;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { addTextObject, TextStyle } from "../text";
|
||||
import { Mode } from "./ui";
|
||||
import UiHandler from "./uiHandler";
|
||||
@@ -51,27 +51,26 @@ export default class ConfirmUiHandler extends UiHandler {
|
||||
}
|
||||
}
|
||||
|
||||
processInput(keyCode: integer) {
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
processInput(button: Button) {
|
||||
const ui = this.getUi();
|
||||
|
||||
let success = false;
|
||||
|
||||
if (keyCode === keyCodes.Z || keyCode === keyCodes.X) {
|
||||
if (button === Button.ACTION || button === Button.CANCEL) {
|
||||
success = true;
|
||||
if (keyCode === keyCodes.X)
|
||||
if (button === Button.CANCEL)
|
||||
this.setCursor(1);
|
||||
const handler = this.cursor ? this.noHander : this.yesHandler;
|
||||
handler();
|
||||
console.log(this.cursor ? this.noHander : this.yesHandler);
|
||||
this.clear();
|
||||
} else {
|
||||
switch (keyCode) {
|
||||
case keyCodes.UP:
|
||||
switch (button) {
|
||||
case Button.UP:
|
||||
if (this.cursor)
|
||||
success = this.setCursor(0);
|
||||
break;
|
||||
case keyCodes.DOWN:
|
||||
case Button.DOWN:
|
||||
if (!this.cursor)
|
||||
success = this.setCursor(1);
|
||||
break;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { Mode } from "./ui";
|
||||
import UiHandler from "./uiHandler";
|
||||
|
||||
@@ -14,8 +14,8 @@ export default class EvolutionSceneHandler extends UiHandler {
|
||||
this.scene.fieldUI.add(this.evolutionContainer);
|
||||
}
|
||||
|
||||
processInput(keyCode: integer) {
|
||||
this.scene.ui.getMessageHandler().processInput(keyCode);
|
||||
processInput(button: Button) {
|
||||
this.scene.ui.getMessageHandler().processInput(button);
|
||||
}
|
||||
|
||||
setCursor(_cursor: integer): boolean {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { addTextObject, TextStyle } from "../text";
|
||||
import { Type } from "../type";
|
||||
import { Command } from "./command-ui-handler";
|
||||
@@ -42,14 +42,13 @@ export default class FightUiHandler extends UiHandler {
|
||||
this.displayMoves();
|
||||
}
|
||||
|
||||
processInput(keyCode: integer) {
|
||||
processInput(button: Button) {
|
||||
const ui = this.getUi();
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
|
||||
let success = false;
|
||||
|
||||
if (keyCode === keyCodes.X || keyCode === keyCodes.Z) {
|
||||
if (keyCode === keyCodes.Z) {
|
||||
if (button === Button.CANCEL || button === Button.ACTION) {
|
||||
if (button === Button.ACTION) {
|
||||
if (((this.scene as BattleScene).getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, this.cursor))
|
||||
success = true;
|
||||
} else {
|
||||
@@ -57,20 +56,20 @@ export default class FightUiHandler extends UiHandler {
|
||||
success = true;
|
||||
}
|
||||
} else {
|
||||
switch (keyCode) {
|
||||
case keyCodes.UP:
|
||||
switch (button) {
|
||||
case Button.UP:
|
||||
if (this.cursor >= 2)
|
||||
success = this.setCursor(this.cursor - 2);
|
||||
break;
|
||||
case keyCodes.DOWN:
|
||||
case Button.DOWN:
|
||||
if (this.cursor < 2)
|
||||
success = this.setCursor(this.cursor + 2);
|
||||
break;
|
||||
case keyCodes.LEFT:
|
||||
case Button.LEFT:
|
||||
if (this.cursor % 2 === 1)
|
||||
success = this.setCursor(this.cursor - 1);
|
||||
break;
|
||||
case keyCodes.RIGHT:
|
||||
case Button.RIGHT:
|
||||
if (this.cursor % 2 === 0)
|
||||
success = this.setCursor(this.cursor + 1);
|
||||
break;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { ModifierTier, ModifierType } from "../modifier";
|
||||
import { getPokeballAtlasKey, PokeballType } from "../pokeball";
|
||||
import { addTextObject, TextStyle } from "../text";
|
||||
@@ -87,8 +87,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler {
|
||||
});
|
||||
}
|
||||
|
||||
processInput(keyCode: integer) {
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
processInput(button: Button) {
|
||||
const ui = this.getUi();
|
||||
|
||||
if (!this.awaitingActionInput)
|
||||
@@ -96,7 +95,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler {
|
||||
|
||||
let success = false;
|
||||
|
||||
if (keyCode === keyCodes.Z) {
|
||||
if (button === Button.ACTION) {
|
||||
success = true;
|
||||
if (this.onActionInput) {
|
||||
const originalOnActionInput = this.onActionInput;
|
||||
@@ -104,7 +103,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler {
|
||||
this.onActionInput = null;
|
||||
originalOnActionInput(this.cursor);
|
||||
}
|
||||
} else if (keyCode === keyCodes.X) {
|
||||
} else if (button === Button.CANCEL) {
|
||||
success = true;
|
||||
if (this.onActionInput) {
|
||||
const originalOnActionInput = this.onActionInput;
|
||||
@@ -113,12 +112,12 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler {
|
||||
originalOnActionInput(-1);
|
||||
}
|
||||
} else {
|
||||
switch (keyCode) {
|
||||
case keyCodes.LEFT:
|
||||
switch (button) {
|
||||
case Button.LEFT:
|
||||
if (this.cursor)
|
||||
success = this.setCursor(this.cursor - 1);
|
||||
break;
|
||||
case keyCodes.RIGHT:
|
||||
case Button.RIGHT:
|
||||
if (this.cursor < this.options.length - 1)
|
||||
success = this.setCursor(this.cursor + 1);
|
||||
break;
|
||||
|
||||
+17
-18
@@ -1,5 +1,5 @@
|
||||
import { CommandPhase } from "../battle-phases";
|
||||
import BattleScene from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { PlayerPokemon } from "../pokemon";
|
||||
import { addTextObject, TextStyle } from "../text";
|
||||
import { Command } from "./command-ui-handler";
|
||||
@@ -123,15 +123,14 @@ export default class PartyUiHandler extends MessageUiHandler {
|
||||
: PartyUiHandler.FilterAll;
|
||||
}
|
||||
|
||||
processInput(keyCode: integer) {
|
||||
processInput(button: Button) {
|
||||
const ui = this.getUi();
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
|
||||
if (this.pendingPrompt)
|
||||
return;
|
||||
|
||||
if (this.awaitingActionInput) {
|
||||
if (keyCode === keyCodes.Z || keyCode === keyCodes.X) {
|
||||
if (button === Button.ACTION || button === Button.CANCEL) {
|
||||
if (this.onActionInput) {
|
||||
ui.playSelect();
|
||||
const originalOnActionInput = this.onActionInput;
|
||||
@@ -146,7 +145,7 @@ export default class PartyUiHandler extends MessageUiHandler {
|
||||
let success = false;
|
||||
|
||||
if (this.optionsMode) {
|
||||
if (keyCode === keyCodes.Z) {
|
||||
if (button === Button.ACTION) {
|
||||
const option = this.options[this.optionsCursor];
|
||||
if (option === PartyOption.SHIFT || option === PartyOption.SEND_OUT || option === PartyOption.APPLY) {
|
||||
let filterResult: string = this.selectFilter(this.scene.getParty()[this.cursor]);
|
||||
@@ -175,32 +174,32 @@ export default class PartyUiHandler extends MessageUiHandler {
|
||||
ui.playSelect();
|
||||
ui.setModeWithoutClear(Mode.SUMMARY, this.scene.getParty()[this.cursor]).then(() => this.clearOptions());
|
||||
} else if (option === PartyOption.CANCEL)
|
||||
this.processInput(keyCodes.X);
|
||||
} else if (keyCode === keyCodes.X) {
|
||||
this.processInput(Button.CANCEL);
|
||||
} else if (button === Button.CANCEL) {
|
||||
this.clearOptions();
|
||||
ui.playSelect();
|
||||
}
|
||||
else {
|
||||
switch (keyCode) {
|
||||
case keyCodes.UP:
|
||||
switch (button) {
|
||||
case Button.UP:
|
||||
success = this.setCursor(this.optionsCursor ? this.optionsCursor - 1 : this.options.length - 1);
|
||||
break;
|
||||
case keyCodes.DOWN:
|
||||
case Button.DOWN:
|
||||
success = this.setCursor(this.optionsCursor < this.options.length - 1 ? this.optionsCursor + 1 : 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (keyCode === keyCodes.Z) {
|
||||
if (button === Button.ACTION) {
|
||||
if (this.cursor < 6) {
|
||||
this.showOptions();
|
||||
ui.playSelect();
|
||||
} else if (this.partyUiMode === PartyUiMode.FAINT_SWITCH)
|
||||
ui.playError();
|
||||
else
|
||||
this.processInput(keyCodes.X);
|
||||
this.processInput(Button.CANCEL);
|
||||
return;
|
||||
} else if (keyCode === keyCodes.X) {
|
||||
} else if (button === Button.CANCEL) {
|
||||
if (this.partyUiMode !== PartyUiMode.FAINT_SWITCH) {
|
||||
if (this.selectCallback) {
|
||||
const selectCallback = this.selectCallback;
|
||||
@@ -217,18 +216,18 @@ export default class PartyUiHandler extends MessageUiHandler {
|
||||
|
||||
const slotCount = this.partySlots.length;
|
||||
|
||||
switch (keyCode) {
|
||||
case keyCodes.UP:
|
||||
switch (button) {
|
||||
case Button.UP:
|
||||
success = this.setCursor(this.cursor ? this.cursor < 6 ? this.cursor - 1 : slotCount - 1 : 6);
|
||||
break;
|
||||
case keyCodes.DOWN:
|
||||
case Button.DOWN:
|
||||
success = this.setCursor(this.cursor < 6 ? this.cursor < slotCount - 1 ? this.cursor + 1 : 6 : 0);
|
||||
break;
|
||||
case keyCodes.LEFT:
|
||||
case Button.LEFT:
|
||||
if (this.cursor && this.cursor < 6)
|
||||
success = this.setCursor(0);
|
||||
break;
|
||||
case keyCodes.RIGHT:
|
||||
case Button.RIGHT:
|
||||
if (!this.cursor)
|
||||
success = this.setCursor(this.lastCursor < 6 ? this.lastCursor || 1 : 1);
|
||||
break;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { allSpecies } from "../pokemon-species";
|
||||
import { Mode } from "./ui";
|
||||
import UiHandler from "./uiHandler";
|
||||
@@ -41,14 +41,13 @@ export default class StarterSelectUiHandler extends UiHandler {
|
||||
this.setCursor(0);
|
||||
}
|
||||
|
||||
processInput(keyCode: integer) {
|
||||
processInput(button: Button) {
|
||||
const ui = this.getUi();
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
|
||||
let success = false;
|
||||
|
||||
if (keyCode === keyCodes.Z) {
|
||||
} else if (keyCode === keyCodes.X) {
|
||||
if (button === Button.ACTION) {
|
||||
} else if (button === Button.CANCEL) {
|
||||
} else {
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { Mode } from "./ui";
|
||||
import UiHandler from "./uiHandler";
|
||||
import * as Utils from "../utils";
|
||||
@@ -170,17 +170,16 @@ export default class SummaryUiHandler extends UiHandler {
|
||||
}
|
||||
}
|
||||
|
||||
processInput(keyCode: integer) {
|
||||
processInput(button: Button) {
|
||||
if (this.transitioning)
|
||||
return;
|
||||
|
||||
const ui = this.getUi();
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
|
||||
let success = false;
|
||||
|
||||
if (this.moveSelect) {
|
||||
if (keyCode === keyCodes.Z) {
|
||||
if (button === Button.ACTION) {
|
||||
if (this.moveCursor < this.pokemon.moveset.length) {
|
||||
if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE)
|
||||
this.moveSelectFunction(this.moveCursor);
|
||||
@@ -213,37 +212,37 @@ export default class SummaryUiHandler extends UiHandler {
|
||||
}
|
||||
success = true;
|
||||
} else if (this.moveCursor === 4)
|
||||
this.processInput(keyCodes.X);
|
||||
this.processInput(Button.CANCEL);
|
||||
else
|
||||
ui.playError();
|
||||
} else if (keyCode === keyCodes.X) {
|
||||
} else if (button === Button.CANCEL) {
|
||||
this.hideMoveSelect();
|
||||
success = true;
|
||||
} else {
|
||||
switch (keyCode) {
|
||||
case keyCodes.UP:
|
||||
switch (button) {
|
||||
case Button.UP:
|
||||
success = this.setCursor(this.moveCursor ? this.moveCursor - 1 : 4);
|
||||
break;
|
||||
case keyCodes.DOWN:
|
||||
case Button.DOWN:
|
||||
success = this.setCursor(this.moveCursor < 4 ? this.moveCursor + 1 : 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (keyCode === keyCodes.Z) {
|
||||
if (button === Button.ACTION) {
|
||||
if (this.cursor === Page.MOVES) {
|
||||
this.showMoveSelect();
|
||||
success = true;
|
||||
}
|
||||
} else if (keyCode === keyCodes.X) {
|
||||
} else if (button === Button.CANCEL) {
|
||||
ui.setMode(Mode.PARTY);
|
||||
success = true;
|
||||
} else {
|
||||
const pages = Utils.getEnumValues(Page);
|
||||
switch (keyCode) {
|
||||
case keyCodes.UP:
|
||||
case keyCodes.DOWN:
|
||||
const isDown = keyCode === keyCodes.DOWN;
|
||||
switch (button) {
|
||||
case Button.UP:
|
||||
case Button.DOWN:
|
||||
const isDown = button === Button.DOWN;
|
||||
const party = this.scene.getParty();
|
||||
const partyMemberIndex = party.indexOf(this.pokemon);
|
||||
if ((isDown && partyMemberIndex < party.length - 1) || (!isDown && partyMemberIndex)) {
|
||||
@@ -252,11 +251,11 @@ export default class SummaryUiHandler extends UiHandler {
|
||||
this.show([ party[partyMemberIndex + (isDown ? 1 : -1)], this.summaryUiMode, page ]);
|
||||
}
|
||||
break;
|
||||
case keyCodes.LEFT:
|
||||
case Button.LEFT:
|
||||
if (this.cursor)
|
||||
success = this.setCursor(this.cursor - 1);
|
||||
break;
|
||||
case keyCodes.RIGHT:
|
||||
case Button.RIGHT:
|
||||
if (this.cursor < pages.length - 1)
|
||||
success = this.setCursor(this.cursor + 1);
|
||||
break;
|
||||
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
import { default as BattleScene } from '../battle-scene';
|
||||
import { Button, default as BattleScene } from '../battle-scene';
|
||||
import UiHandler from './uiHandler';
|
||||
import BattleMessageUiHandler from './battle-message-ui-handler';
|
||||
import CommandUiHandler from './command-ui-handler';
|
||||
@@ -79,11 +79,11 @@ export default class UI extends Phaser.GameObjects.Container {
|
||||
return this.handlers[Mode.MESSAGE] as BattleMessageUiHandler;
|
||||
}
|
||||
|
||||
processInput(keyCode: integer): void {
|
||||
processInput(button: Button): void {
|
||||
if (this.transitioning)
|
||||
return;
|
||||
|
||||
this.getHandler().processInput(keyCode);
|
||||
this.getHandler().processInput(button);
|
||||
}
|
||||
|
||||
showText(text: string, delay?: integer, callback?: Function, callbackDelay?: integer, prompt?: boolean, promptDelay?: integer): void {
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import UI, { Mode } from "./ui";
|
||||
|
||||
export default abstract class UiHandler {
|
||||
@@ -18,7 +18,7 @@ export default abstract class UiHandler {
|
||||
this.active = true;
|
||||
}
|
||||
|
||||
abstract processInput(keyCode: integer);
|
||||
abstract processInput(button: Button);
|
||||
|
||||
getUi() {
|
||||
return this.scene.ui;
|
||||
|
||||
Reference in new issue
Block a user