diff --git a/src/main/java/emu/grasscutter/game/gacha/PlayerGachaInfo.java b/src/main/java/emu/grasscutter/game/gacha/PlayerGachaInfo.java index 8dd0e380e..275ad3d92 100644 --- a/src/main/java/emu/grasscutter/game/gacha/PlayerGachaInfo.java +++ b/src/main/java/emu/grasscutter/game/gacha/PlayerGachaInfo.java @@ -4,37 +4,43 @@ import dev.morphia.annotations.Entity; @Entity public class PlayerGachaInfo { - private PlayerGachaBannerInfo standardBanner; - private PlayerGachaBannerInfo eventCharacterBanner; - private PlayerGachaBannerInfo eventWeaponBanner; - - public PlayerGachaInfo() { - this.standardBanner = new PlayerGachaBannerInfo(); - this.eventCharacterBanner = new PlayerGachaBannerInfo(); - this.eventWeaponBanner = new PlayerGachaBannerInfo(); - } - - public PlayerGachaBannerInfo getStandardBanner() { - return standardBanner; - } + private PlayerGachaBannerInfo standardBanner; + private PlayerGachaBannerInfo beginnerBanner; + private PlayerGachaBannerInfo eventCharacterBanner; + private PlayerGachaBannerInfo eventWeaponBanner; - public PlayerGachaBannerInfo getEventCharacterBanner() { - return eventCharacterBanner; - } - - public PlayerGachaBannerInfo getEventWeaponBanner() { - return eventWeaponBanner; - } + public PlayerGachaInfo() { + this.standardBanner = new PlayerGachaBannerInfo(); + this.eventCharacterBanner = new PlayerGachaBannerInfo(); + this.eventWeaponBanner = new PlayerGachaBannerInfo(); + } - public PlayerGachaBannerInfo getBannerInfo(GachaBanner banner) { - switch (banner.getBannerType()) { - case EVENT: - return this.eventCharacterBanner; - case WEAPON: - return this.eventWeaponBanner; - case STANDARD: - default: - return this.standardBanner; - } - } + public PlayerGachaBannerInfo getStandardBanner() { + if (this.standardBanner == null) this.standardBanner = new PlayerGachaBannerInfo(); + return this.standardBanner; + } + + public PlayerGachaBannerInfo getBeginnerBanner() { + if (this.beginnerBanner == null) this.beginnerBanner = new PlayerGachaBannerInfo(); + return this.beginnerBanner; + } + + public PlayerGachaBannerInfo getEventCharacterBanner() { + if (this.eventCharacterBanner == null) this.eventCharacterBanner = new PlayerGachaBannerInfo(); + return this.eventCharacterBanner; + } + + public PlayerGachaBannerInfo getEventWeaponBanner() { + if (this.eventWeaponBanner == null) this.eventWeaponBanner = new PlayerGachaBannerInfo(); + return this.eventWeaponBanner; + } + + public PlayerGachaBannerInfo getBannerInfo(GachaBanner banner) { + return switch (banner.getBannerType()) { + case STANDARD -> this.getStandardBanner(); + case BEGINNER -> this.getBeginnerBanner(); + case EVENT, CHARACTER, CHARACTER2 -> this.getEventCharacterBanner(); + case WEAPON -> this.getEventWeaponBanner(); + }; + } }