NoneReward constructed without any parameters; util function to generate reward options never returns null

This commit is contained in:
Wlowscha 2025-08-08 00:46:45 +02:00
parent 6f0fb543ac
commit 07dad0981d
No known key found for this signature in database
GPG Key ID: 3C8F1AD330565D04
3 changed files with 13 additions and 8 deletions

View File

@ -36,7 +36,7 @@ import {
// TODO: Move to `reward-utils.ts` and un-exportt
export const allRewards = {
[RewardId.NONE]: new NoneReward("", ""),
[RewardId.NONE]: new NoneReward(),
// Pokeball rewards
[RewardId.POKEBALL]: new AddPokeballReward("pb", PokeballType.POKEBALL, 5, RewardId.POKEBALL),

View File

@ -7,6 +7,7 @@ import type { RewardPoolId, RewardSpecs } from "#types/rewards";
import { heldItemRarities } from "./held-item-default-tiers";
import {
HeldItemReward,
NoneReward,
type PokemonMoveReward,
type RememberMoveReward,
type Reward,
@ -45,7 +46,7 @@ export function generateRewardOptionFromId<T extends RewardPoolId>(
cost = 0,
tierOverride?: RarityTier,
upgradeCount = 0,
): RewardOption | null {
): RewardOption {
// Destructure specs into individual parameters
const pregenArgs = typeof specs === "object" ? specs.args : undefined;
const id: RewardPoolId = typeof specs === "object" ? specs.id : specs;
@ -62,13 +63,13 @@ export function generateRewardOptionFromId<T extends RewardPoolId>(
return new RewardOption(reward, upgradeCount, tier, cost);
}
const rewardFunc = allRewards[id] as Reward | RewardGenerator;
const reward = rewardFunc instanceof RewardGenerator ? rewardFunc.generateReward(pregenArgs) : rewardFunc;
if (reward) {
const tier = tierOverride ?? rewardRarities[id];
return new RewardOption(reward, upgradeCount, tier, cost);
const tempReward = allRewards[id] as Reward | RewardGenerator;
let reward = tempReward instanceof RewardGenerator ? tempReward.generateReward(pregenArgs) : tempReward;
if (!reward) {
reward = new NoneReward();
}
return null;
const tier = tierOverride ?? rewardRarities[id];
return new RewardOption(reward, upgradeCount, tier, cost);
}
export function getPlayerShopRewardOptionsForWave(waveIndex: number, baseCost: number): RewardOption[] {

View File

@ -1519,5 +1519,9 @@ export class RewardOption {
}
export class NoneReward extends Reward {
constructor() {
super("", "");
}
override apply(): void {}
}