diff --git a/src/js/game/buildings/rotater.js b/src/js/game/buildings/rotater.js index 68a92f9e..45bb97b9 100644 --- a/src/js/game/buildings/rotater.js +++ b/src/js/game/buildings/rotater.js @@ -51,7 +51,7 @@ export class MetaRotaterBuilding extends MetaBuilding { getAvailableVariants(root) { let variants = [defaultBuildingVariant]; if (root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_rotater_ccw)) { - variants.push(enumRotaterVariants.ccw, enumRotaterVariants.fl); + variants.push(enumRotaterVariants.ccw); } if (root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_rotater_fl)) { variants.push(enumRotaterVariants.fl); diff --git a/src/js/game/hub_goals.js b/src/js/game/hub_goals.js index 36f8f107..2ad71e0d 100644 --- a/src/js/game/hub_goals.js +++ b/src/js/game/hub_goals.js @@ -7,6 +7,7 @@ import { enumItemProcessorTypes } from "./components/item_processor"; import { GameRoot, enumLayer } from "./root"; import { enumSubShape, ShapeDefinition } from "./shape_definition"; import { enumHubGoalRewards, tutorialGoals } from "./tutorial_goals"; +import { HUDUnlockNotification } from "./hud/parts/unlock_notification"; import { UPGRADES, blueprintShape } from "./upgrades"; export class HubGoals extends BasicSerializableObject { @@ -76,7 +77,7 @@ export class HubGoals extends BasicSerializableObject { this.level = 1; /** - * Which story rewards we already gained + * Which story and upgrade rewards we already gained * @type {Object.} */ this.gainedRewards = {}; diff --git a/src/js/game/hud/parts/unlock_notification.js b/src/js/game/hud/parts/unlock_notification.js index 7a5c923b..fcac71f4 100644 --- a/src/js/game/hud/parts/unlock_notification.js +++ b/src/js/game/hud/parts/unlock_notification.js @@ -20,6 +20,7 @@ export class HUDUnlockNotification extends BaseHUDPart { if (!(G_IS_DEV && globalConfig.debug.disableUnlockDialog)) { this.root.signals.storyGoalCompleted.add(this.showForLevel, this); + this.root.signals.upgradePurchased.add(this.showForUpgrade, this); } this.buttonShowTimeout = null; @@ -101,6 +102,81 @@ export class HUDUnlockNotification extends BaseHUDPart { } } + /** + * @param {string} upgradeId + */ + showForUpgrade(upgradeId) { + this.root.app.inputMgr.makeSureAttachedAndOnTop(this.inputReciever); + this.elemTitle.innerText = T.ingame.upgradeCompleteNotification.upgradeTitle; + + // If it's not at the max level: + if(this.root.hubGoals.canUnlockUpgrade(upgradeId)){ + return; + } + if(!T.upgradeRewards[upgradeId]){ + return; + } + + var reward; + for(let goalReward in enumHubGoalRewards){ + if(T.upgradeRewards[upgradeId][goalReward]){ + reward = goalReward; + break; + } + } + + if(!reward){ + return; + } + + //Functional for now -> Needs some rework; Only will register the unlock here if you actually click "upgrade" in the same session + this.root.hubGoals.gainedRewards[reward] = (this.root.hubGoals.gainedRewards[reward] || 0) + 1; + + const rewardName = T.upgradeRewards[upgradeId][reward].title; + + let html = ` +
+ ${T.ingame.upgradeCompleteNotification.unlockText} +
+ +
+ ${T.upgradeRewards[upgradeId][reward].desc} +
+ + `; + + html += "
"; + const gained = enumHubGoalRewardsToContentUnlocked[reward]; + if (gained) { + gained.forEach(([metaBuildingClass, variant]) => { + const metaBuilding = gMetaBuildingRegistry.findByClass(metaBuildingClass); + html += `
`; + }); + } + html += "
"; + + this.elemContents.innerHTML = html; + this.visible = true; + this.root.soundProxy.playUi(SOUNDS.levelComplete); + + if (this.buttonShowTimeout) { + clearTimeout(this.buttonShowTimeout); + } + + this.element.querySelector("button.close").classList.remove("unlocked"); + + if (this.root.app.settings.getAllSettings().offerHints) { + this.buttonShowTimeout = setTimeout( + () => this.element.querySelector("button.close").classList.add("unlocked"), + G_IS_DEV ? 100 : 5000 + ); + } else { + this.element.querySelector("button.close").classList.add("unlocked"); + } + } + cleanup() { this.root.app.inputMgr.makeSureDetached(this.inputReciever); if (this.buttonShowTimeout) { diff --git a/translations/base-en.yaml b/translations/base-en.yaml index 1674c7de..3b373e2a 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -338,6 +338,13 @@ ingame: unlockText: Unlocked ! buttonNextLevel: Next Level + # The notification when completing an upgrade + upgradeCompleteNotification: + upgradeTitle: Upgrade Unlocked + completed: Goal Completed + unlockText: Unlocked ! + continue: Continue + # Notifications on the lower right notifications: newUpgrade: A new upgrade is available! @@ -644,6 +651,13 @@ storyRewards: desc: >- Congratulations! By the way, more content is planned for the standalone! +upgradeRewards: + # Rewards you get for completing upgrades + processors: + reward_rotater_fl: + title: 180 Degree Rotating + desc: You have unlocked a variant of the rotater - It allows you to rotate shapes 180 degrees! + settings: title: Settings categories: