48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import Phaser from "phaser";
|
|
import { Scene } from 'phaser';
|
|
|
|
export class SplashScene extends Scene {
|
|
constructor() {
|
|
super("SplashScene");
|
|
}
|
|
|
|
preload() {
|
|
this.load.image('splash', 'splash_bg.png');
|
|
}
|
|
|
|
create() {
|
|
const { width, height } = this.scale;
|
|
|
|
// Background (Placeholder for Image)
|
|
// If we successfully load the image 'splash', we use it.
|
|
if (this.textures.exists('splash')) {
|
|
const splash = this.add.image(width / 2, height / 2, 'splash');
|
|
|
|
// Scale to cover the screen while maintaining aspect ratio
|
|
const scaleX = width / splash.width;
|
|
const scaleY = height / splash.height;
|
|
const scale = Math.max(scaleX, scaleY);
|
|
splash.setScale(scale);
|
|
} else {
|
|
this.add.rectangle(0, 0, width, height, 0x110022).setOrigin(0);
|
|
this.add.text(width/2, height/2, "ROGUE LEGACY", {
|
|
fontSize: "48px",
|
|
color: "#ffffff",
|
|
fontStyle: "bold"
|
|
}).setOrigin(0.5);
|
|
}
|
|
|
|
// Fade In
|
|
this.cameras.main.fadeIn(1000, 0, 0, 0);
|
|
|
|
// Fade Out after delay
|
|
this.time.delayedCall(2500, () => {
|
|
this.cameras.main.fadeOut(1000, 0, 0, 0);
|
|
});
|
|
|
|
this.cameras.main.once(Phaser.Cameras.Scene2D.Events.FADE_OUT_COMPLETE, () => {
|
|
this.scene.start("StartScene");
|
|
});
|
|
}
|
|
}
|