Changes for how play time is handled
This commit is contained in:
parent
f9c3023e6d
commit
4c07c6d5cb
|
@ -363,9 +363,8 @@ export class EncounterPhase extends BattlePhase {
|
||||||
start() {
|
start() {
|
||||||
super.start();
|
super.start();
|
||||||
|
|
||||||
this.scene.updateWaveCountText();
|
this.scene.initSession();
|
||||||
this.scene.updateMoneyText();
|
|
||||||
|
|
||||||
const loadEnemyAssets = [];
|
const loadEnemyAssets = [];
|
||||||
|
|
||||||
const battle = this.scene.currentBattle;
|
const battle = this.scene.currentBattle;
|
||||||
|
|
|
@ -84,6 +84,7 @@ export default class BattleScene extends Phaser.Scene {
|
||||||
public rexUI: UIPlugin;
|
public rexUI: UIPlugin;
|
||||||
|
|
||||||
public auto: boolean;
|
public auto: boolean;
|
||||||
|
public sessionPlayTime: integer = null;
|
||||||
public masterVolume: number = 0.5;
|
public masterVolume: number = 0.5;
|
||||||
public bgmVolume: number = 1;
|
public bgmVolume: number = 1;
|
||||||
public seVolume: number = 1;
|
public seVolume: number = 1;
|
||||||
|
@ -141,6 +142,7 @@ export default class BattleScene extends Phaser.Scene {
|
||||||
private bgm: AnySound;
|
private bgm: AnySound;
|
||||||
private bgmResumeTimer: Phaser.Time.TimerEvent;
|
private bgmResumeTimer: Phaser.Time.TimerEvent;
|
||||||
private bgmCache: Set<string> = new Set();
|
private bgmCache: Set<string> = new Set();
|
||||||
|
private playTimeTimer: Phaser.Time.TimerEvent;
|
||||||
|
|
||||||
private buttonKeys: Phaser.Input.Keyboard.Key[][];
|
private buttonKeys: Phaser.Input.Keyboard.Key[][];
|
||||||
|
|
||||||
|
@ -402,15 +404,6 @@ export default class BattleScene extends Phaser.Scene {
|
||||||
|
|
||||||
this.gameData = new GameData(this);
|
this.gameData = new GameData(this);
|
||||||
|
|
||||||
this.time.addEvent({
|
|
||||||
delay: Utils.fixedInt(1000),
|
|
||||||
repeat: -1,
|
|
||||||
callback: () => {
|
|
||||||
if (this.gameData)
|
|
||||||
this.gameData.gameStats.playTime++;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
this.setupControls();
|
this.setupControls();
|
||||||
|
|
||||||
this.load.setBaseURL();
|
this.load.setBaseURL();
|
||||||
|
@ -578,6 +571,27 @@ export default class BattleScene extends Phaser.Scene {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initSession(): void {
|
||||||
|
this.sessionPlayTime = 0;
|
||||||
|
|
||||||
|
if (this.playTimeTimer)
|
||||||
|
this.playTimeTimer.destroy();
|
||||||
|
|
||||||
|
this.playTimeTimer = this.time.addEvent({
|
||||||
|
delay: Utils.fixedInt(1000),
|
||||||
|
repeat: -1,
|
||||||
|
callback: () => {
|
||||||
|
if (this.gameData)
|
||||||
|
this.gameData.gameStats.playTime++;
|
||||||
|
if (this.sessionPlayTime !== null)
|
||||||
|
this.sessionPlayTime++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.updateWaveCountText();
|
||||||
|
this.updateMoneyText();
|
||||||
|
}
|
||||||
|
|
||||||
setupControls() {
|
setupControls() {
|
||||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||||
const keyConfig = {
|
const keyConfig = {
|
||||||
|
|
|
@ -58,6 +58,7 @@ interface SystemSaveData {
|
||||||
|
|
||||||
interface SessionSaveData {
|
interface SessionSaveData {
|
||||||
seed: string;
|
seed: string;
|
||||||
|
playTime: integer;
|
||||||
gameMode: GameMode;
|
gameMode: GameMode;
|
||||||
party: PokemonData[];
|
party: PokemonData[];
|
||||||
enemyParty: PokemonData[];
|
enemyParty: PokemonData[];
|
||||||
|
@ -360,6 +361,7 @@ export class GameData {
|
||||||
|
|
||||||
const sessionData = {
|
const sessionData = {
|
||||||
seed: scene.seed,
|
seed: scene.seed,
|
||||||
|
playTime: scene.sessionPlayTime,
|
||||||
gameMode: scene.gameMode,
|
gameMode: scene.gameMode,
|
||||||
party: scene.getParty().map(p => new PokemonData(p)),
|
party: scene.getParty().map(p => new PokemonData(p)),
|
||||||
enemyParty: scene.getEnemyParty().map(p => new PokemonData(p)),
|
enemyParty: scene.getEnemyParty().map(p => new PokemonData(p)),
|
||||||
|
@ -408,6 +410,8 @@ export class GameData {
|
||||||
scene.seed = sessionData.seed || scene.game.config.seed[0];
|
scene.seed = sessionData.seed || scene.game.config.seed[0];
|
||||||
scene.resetSeed();
|
scene.resetSeed();
|
||||||
|
|
||||||
|
scene.sessionPlayTime = sessionData.playTime || 0;
|
||||||
|
|
||||||
scene.gameMode = sessionData.gameMode || GameMode.CLASSIC;
|
scene.gameMode = sessionData.gameMode || GameMode.CLASSIC;
|
||||||
|
|
||||||
const loadPokemonAssets: Promise<void>[] = [];
|
const loadPokemonAssets: Promise<void>[] = [];
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import BattleScene, { Button } from "../battle-scene";
|
import BattleScene, { Button } from "../battle-scene";
|
||||||
import { GameStats } from "../system/game-stats";
|
|
||||||
import { TextStyle, addTextObject, getTextColor } from "./text";
|
import { TextStyle, addTextObject, getTextColor } from "./text";
|
||||||
import { Mode } from "./ui";
|
import { Mode } from "./ui";
|
||||||
import UiHandler from "./ui-handler";
|
import UiHandler from "./ui-handler";
|
||||||
|
@ -18,20 +17,9 @@ interface DisplayStats {
|
||||||
[key: string]: DisplayStat | string
|
[key: string]: DisplayStat | string
|
||||||
}
|
}
|
||||||
|
|
||||||
const secondsInHour = 3600;
|
|
||||||
|
|
||||||
const displayStats: DisplayStats = {
|
const displayStats: DisplayStats = {
|
||||||
playTime: {
|
playTime: {
|
||||||
sourceFunc: gameData => {
|
sourceFunc: gameData => Utils.getPlayTimeString(gameData.gameStats.playTime)
|
||||||
const totalSeconds = gameData.gameStats.playTime;
|
|
||||||
|
|
||||||
const days = `${Math.floor(totalSeconds / (secondsInHour * 24))}`;
|
|
||||||
const hours = `${Math.floor(totalSeconds % (secondsInHour * 24) / secondsInHour)}`;
|
|
||||||
const minutes = `${Math.floor(totalSeconds % secondsInHour / 60)}`;
|
|
||||||
const seconds = `${Math.floor(totalSeconds % 60)}`;
|
|
||||||
|
|
||||||
return `${days.padStart(2, '0')}:${hours.padStart(2, '0')}:${minutes.padStart(2, '0')}:${seconds.padStart(2, '0')}`;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
battles: 'Total Battles',
|
battles: 'Total Battles',
|
||||||
startersUnlocked: {
|
startersUnlocked: {
|
||||||
|
|
11
src/utils.ts
11
src/utils.ts
|
@ -88,6 +88,17 @@ export function getCurrentTime(): number {
|
||||||
return (((date.getHours() * 60 + date.getMinutes()) / 1440) + 0.675) % 1;
|
return (((date.getHours() * 60 + date.getMinutes()) / 1440) + 0.675) % 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const secondsInHour = 3600;
|
||||||
|
|
||||||
|
export function getPlayTimeString(totalSeconds: integer): string {
|
||||||
|
const days = `${Math.floor(totalSeconds / (secondsInHour * 24))}`;
|
||||||
|
const hours = `${Math.floor(totalSeconds % (secondsInHour * 24) / secondsInHour)}`;
|
||||||
|
const minutes = `${Math.floor(totalSeconds % secondsInHour / 60)}`;
|
||||||
|
const seconds = `${Math.floor(totalSeconds % 60)}`;
|
||||||
|
|
||||||
|
return `${days.padStart(2, '0')}:${hours.padStart(2, '0')}:${minutes.padStart(2, '0')}:${seconds.padStart(2, '0')}`;
|
||||||
|
}
|
||||||
|
|
||||||
export function binToDec(input: string): integer {
|
export function binToDec(input: string): integer {
|
||||||
let place: integer[] = [];
|
let place: integer[] = [];
|
||||||
let binary: string[] = [];
|
let binary: string[] = [];
|
||||||
|
|
Loading…
Reference in New Issue