mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-16 13:22:18 +02:00
Implement event manager and banner display
This commit is contained in:
parent
5dd017fa30
commit
06e8de245d
BIN
public/images/events/banner.png
Normal file
BIN
public/images/events/banner.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 152 KiB |
@ -48,6 +48,7 @@ import { BerryType } from '../data/berry';
|
||||
import i18next from '../plugins/i18n';
|
||||
import { speciesEggMoves } from '../data/egg-moves';
|
||||
import { ModifierTier } from '../modifier/modifier-tier';
|
||||
import { TimedEventManager } from '#app/timed-event-manager.js';
|
||||
|
||||
export enum FieldPosition {
|
||||
CENTER,
|
||||
@ -1096,9 +1097,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
|
||||
let shinyThreshold = new Utils.IntegerHolder(32);
|
||||
if (thresholdOverride === undefined) {
|
||||
const eventManager = new TimedEventManager()
|
||||
if (!this.hasTrainer()) {
|
||||
if (new Date() < new Date('2024-05-21'))
|
||||
shinyThreshold.value *= 3;
|
||||
if (eventManager.isEventActive())
|
||||
shinyThreshold.value *= eventManager.getShinyMultiplier();
|
||||
this.scene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold);
|
||||
}
|
||||
} else
|
||||
|
@ -9,6 +9,7 @@ import { WindowVariant, getWindowVariantSuffix } from "./ui/ui-theme";
|
||||
import { isMobile } from "./touch-controls";
|
||||
import * as Utils from "./utils";
|
||||
import { initI18n } from "./plugins/i18n";
|
||||
import { TimedEventManager } from "./timed-event-manager";
|
||||
|
||||
export class LoadingScene extends SceneBase {
|
||||
constructor() {
|
||||
@ -29,6 +30,9 @@ export class LoadingScene extends SceneBase {
|
||||
|
||||
// Load menu images
|
||||
this.loadAtlas('bg', 'ui');
|
||||
if (new TimedEventManager().isEventActive()) {
|
||||
this.loadImage('banner', 'events')
|
||||
}
|
||||
this.loadImage('command_fight_labels', 'ui');
|
||||
this.loadAtlas('prompt', 'ui');
|
||||
this.loadImage('candy', 'ui');
|
||||
@ -209,9 +213,6 @@ export class LoadingScene extends SceneBase {
|
||||
|
||||
this.loadImage('egg_list_bg', 'ui');
|
||||
|
||||
this.loadImage('end_m', 'cg');
|
||||
this.loadImage('end_f', 'cg');
|
||||
|
||||
for (let i = 0; i < 10; i++) {
|
||||
this.loadAtlas(`pokemon_icons_${i}`, '');
|
||||
if (i)
|
||||
|
41
src/timed-event-manager.ts
Normal file
41
src/timed-event-manager.ts
Normal file
@ -0,0 +1,41 @@
|
||||
interface TimedEvent {
|
||||
name: string;
|
||||
eventType: string;
|
||||
value: number;
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
}
|
||||
|
||||
const timedEvents: TimedEvent[] = [
|
||||
{"name": "3x Shiny Weekend", "eventType": "shiny", "value": 3,
|
||||
"startDate": "2024-05-18", "endDate": "2024-05-21"},
|
||||
];
|
||||
|
||||
export class TimedEventManager {
|
||||
constructor() {}
|
||||
|
||||
isEventActive(): boolean {
|
||||
for (const timedEvent of timedEvents) {
|
||||
const eventStart = new Date(timedEvent.startDate);
|
||||
const now = new Date();
|
||||
const eventEnd = new Date(timedEvent.endDate);
|
||||
|
||||
if (eventStart < now && now < eventEnd) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
getShinyMultiplier(): number {
|
||||
let multiplier = 1;
|
||||
for (const timedEvent of timedEvents) {
|
||||
if (timedEvent.eventType === 'shiny' &&
|
||||
new Date(timedEvent.startDate) < new Date() &&
|
||||
new Date() < new Date(timedEvent.endDate)) {
|
||||
multiplier *= timedEvent.value;
|
||||
}
|
||||
}
|
||||
return multiplier;
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import * as Utils from "../utils";
|
||||
import { TextStyle, addTextObject } from "./text";
|
||||
import { getBattleCountSplashMessage, getSplashMessages } from "../data/splash-messages";
|
||||
import i18next from "i18next";
|
||||
import { TimedEventManager } from "#app/timed-event-manager.js";
|
||||
|
||||
export default class TitleUiHandler extends OptionSelectUiHandler {
|
||||
private titleContainer: Phaser.GameObjects.Container;
|
||||
@ -31,7 +32,18 @@ export default class TitleUiHandler extends OptionSelectUiHandler {
|
||||
|
||||
const logo = this.scene.add.image((this.scene.game.canvas.width / 6) / 2, 8, 'logo');
|
||||
logo.setOrigin(0.5, 0);
|
||||
|
||||
this.titleContainer.add(logo);
|
||||
|
||||
if (new TimedEventManager().isEventActive()) {
|
||||
const banner = this.scene.add.image((this.scene.game.canvas.width / 6.5) / 2, (this.scene.game.canvas.height / 4.65) / 2, 'banner');
|
||||
banner.displayWidth = this.scene.game.canvas.width / 18.33
|
||||
banner.displayHeight = banner.displayWidth / 3
|
||||
banner.setOrigin(0.315, -0.8);
|
||||
|
||||
|
||||
this.titleContainer.add(banner);
|
||||
}
|
||||
|
||||
this.dailyRunScoreboard = new DailyRunScoreboard(this.scene, 1, 44);
|
||||
this.dailyRunScoreboard.setup();
|
||||
|
Loading…
Reference in New Issue
Block a user