mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
Further improvements of unlock notification
This commit is contained in:
parent
dc6c20b8f0
commit
714332a91d
@ -188,13 +188,11 @@ export class HubGoals extends BasicSerializableObject {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const reward = enumHubGoalRewards.no_reward;
|
|
||||||
|
|
||||||
this.currentGoal = {
|
this.currentGoal = {
|
||||||
/** @type {ShapeDefinition} */
|
/** @type {ShapeDefinition} */
|
||||||
definition: this.createRandomShape(),
|
definition: this.createRandomShape(),
|
||||||
required: 1000 + findNiceIntegerValue(this.level * 47.5),
|
required: 1000 + findNiceIntegerValue(this.level * 47.5),
|
||||||
reward,
|
reward: enumHubGoalRewards.no_reward_freeplay,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,6 +210,13 @@ export class HubGoals extends BasicSerializableObject {
|
|||||||
this.root.signals.storyGoalCompleted.dispatch(this.level - 1, reward);
|
this.root.signals.storyGoalCompleted.dispatch(this.level - 1, reward);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether we are playing in free-play
|
||||||
|
*/
|
||||||
|
isFreePlay() {
|
||||||
|
return this.level >= tutorialGoals.length;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether a given upgrade can be unlocked
|
* Returns whether a given upgrade can be unlocked
|
||||||
* @param {string} upgradeId
|
* @param {string} upgradeId
|
||||||
|
@ -4,9 +4,10 @@ import { makeDiv } from "../../../core/utils";
|
|||||||
import { SOUNDS } from "../../../platform/sound";
|
import { SOUNDS } from "../../../platform/sound";
|
||||||
import { T } from "../../../translations";
|
import { T } from "../../../translations";
|
||||||
import { defaultBuildingVariant } from "../../meta_building";
|
import { defaultBuildingVariant } from "../../meta_building";
|
||||||
import { enumHubGoalRewards, enumHubGoalRewardsToContentUnlocked } from "../../tutorial_goals";
|
import { enumHubGoalRewards } from "../../tutorial_goals";
|
||||||
import { BaseHUDPart } from "../base_hud_part";
|
import { BaseHUDPart } from "../base_hud_part";
|
||||||
import { DynamicDomAttach } from "../dynamic_dom_attach";
|
import { DynamicDomAttach } from "../dynamic_dom_attach";
|
||||||
|
import { enumHubGoalRewardsToContentUnlocked } from "../../tutorial_goals_mappings";
|
||||||
|
|
||||||
export class HUDUnlockNotification extends BaseHUDPart {
|
export class HUDUnlockNotification extends BaseHUDPart {
|
||||||
initialize() {
|
initialize() {
|
||||||
@ -23,10 +24,6 @@ export class HUDUnlockNotification extends BaseHUDPart {
|
|||||||
this.buttonShowTimeout = null;
|
this.buttonShowTimeout = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldPauseGame() {
|
|
||||||
return this.visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
createElements(parent) {
|
createElements(parent) {
|
||||||
this.element = makeDiv(parent, "ingame_HUD_UnlockNotification", []);
|
this.element = makeDiv(parent, "ingame_HUD_UnlockNotification", []);
|
||||||
|
|
||||||
|
@ -1,18 +1,8 @@
|
|||||||
import { ShapeDefinition } from "./shape_definition";
|
import { ShapeDefinition } from "./shape_definition";
|
||||||
import { finalGameShape } from "./upgrades";
|
import { finalGameShape } from "./upgrades";
|
||||||
import { MetaBuilding, defaultBuildingVariant } from "./meta_building";
|
|
||||||
import { MetaCutterBuilding, enumCutterVariants } from "./buildings/cutter";
|
|
||||||
import { MetaRotaterBuilding, enumRotaterVariants } from "./buildings/rotater";
|
|
||||||
import { MetaPainterBuilding, enumPainterVariants } from "./buildings/painter";
|
|
||||||
import { MetaMixerBuilding } from "./buildings/mixer";
|
|
||||||
import { MetaStackerBuilding } from "./buildings/stacker";
|
|
||||||
import { MetaSplitterBuilding, enumSplitterVariants } from "./buildings/splitter";
|
|
||||||
import { MetaUndergroundBeltBuilding, enumUndergroundBeltVariants } from "./buildings/underground_belt";
|
|
||||||
import { MetaMinerBuilding, enumMinerVariants } from "./buildings/miner";
|
|
||||||
import { MetaTrashBuilding, enumTrashVariants } from "./buildings/trash";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Don't forget to also update unlock_notification.js as well as the translations!
|
* Don't forget to also update tutorial_goals_mappings.js as well as the translations!
|
||||||
* @enum {string}
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
export const enumHubGoalRewards = {
|
export const enumHubGoalRewards = {
|
||||||
@ -36,44 +26,7 @@ export const enumHubGoalRewards = {
|
|||||||
reward_freeplay: "reward_freeplay",
|
reward_freeplay: "reward_freeplay",
|
||||||
|
|
||||||
no_reward: "no_reward",
|
no_reward: "no_reward",
|
||||||
};
|
no_reward_freeplay: "no_reward_freeplay",
|
||||||
|
|
||||||
/** @typedef {Array<[typeof MetaBuilding, string]>} TutorialGoalReward */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper method for proper types
|
|
||||||
* @returns {TutorialGoalReward}
|
|
||||||
*/
|
|
||||||
const typed = x => x;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Stores which reward unlocks what
|
|
||||||
* @enum {TutorialGoalReward?}
|
|
||||||
*/
|
|
||||||
export const enumHubGoalRewardsToContentUnlocked = {
|
|
||||||
[enumHubGoalRewards.reward_cutter_and_trash]: typed([[MetaCutterBuilding, defaultBuildingVariant]]),
|
|
||||||
[enumHubGoalRewards.reward_rotater]: typed([[MetaRotaterBuilding, defaultBuildingVariant]]),
|
|
||||||
[enumHubGoalRewards.reward_painter]: typed([[MetaPainterBuilding, defaultBuildingVariant]]),
|
|
||||||
[enumHubGoalRewards.reward_mixer]: typed([[MetaMixerBuilding, defaultBuildingVariant]]),
|
|
||||||
[enumHubGoalRewards.reward_stacker]: typed([[MetaStackerBuilding, defaultBuildingVariant]]),
|
|
||||||
[enumHubGoalRewards.reward_splitter]: typed([[MetaSplitterBuilding, defaultBuildingVariant]]),
|
|
||||||
[enumHubGoalRewards.reward_tunnel]: typed([[MetaUndergroundBeltBuilding, defaultBuildingVariant]]),
|
|
||||||
|
|
||||||
[enumHubGoalRewards.reward_rotater_ccw]: typed([[MetaRotaterBuilding, enumRotaterVariants.ccw]]),
|
|
||||||
[enumHubGoalRewards.reward_miner_chainable]: typed([[MetaMinerBuilding, enumMinerVariants.chainable]]),
|
|
||||||
[enumHubGoalRewards.reward_underground_belt_tier_2]: typed([
|
|
||||||
[MetaUndergroundBeltBuilding, enumUndergroundBeltVariants.tier2],
|
|
||||||
]),
|
|
||||||
[enumHubGoalRewards.reward_splitter_compact]: typed([
|
|
||||||
[MetaSplitterBuilding, enumSplitterVariants.compact],
|
|
||||||
]),
|
|
||||||
[enumHubGoalRewards.reward_cutter_quad]: typed([[MetaCutterBuilding, enumCutterVariants.quad]]),
|
|
||||||
[enumHubGoalRewards.reward_painter_double]: typed([[MetaPainterBuilding, enumPainterVariants.double]]),
|
|
||||||
[enumHubGoalRewards.reward_painter_quad]: typed([[MetaPainterBuilding, enumPainterVariants.quad]]),
|
|
||||||
[enumHubGoalRewards.reward_storage]: typed([[MetaTrashBuilding, enumTrashVariants.storage]]),
|
|
||||||
|
|
||||||
[enumHubGoalRewards.reward_freeplay]: null,
|
|
||||||
[enumHubGoalRewards.no_reward]: null,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const tutorialGoals = [
|
export const tutorialGoals = [
|
||||||
|
51
src/js/game/tutorial_goals_mappings.js
Normal file
51
src/js/game/tutorial_goals_mappings.js
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import { MetaBuilding, defaultBuildingVariant } from "./meta_building";
|
||||||
|
import { MetaCutterBuilding, enumCutterVariants } from "./buildings/cutter";
|
||||||
|
import { MetaRotaterBuilding, enumRotaterVariants } from "./buildings/rotater";
|
||||||
|
import { MetaPainterBuilding, enumPainterVariants } from "./buildings/painter";
|
||||||
|
import { MetaMixerBuilding } from "./buildings/mixer";
|
||||||
|
import { MetaStackerBuilding } from "./buildings/stacker";
|
||||||
|
import { MetaSplitterBuilding, enumSplitterVariants } from "./buildings/splitter";
|
||||||
|
import { MetaUndergroundBeltBuilding, enumUndergroundBeltVariants } from "./buildings/underground_belt";
|
||||||
|
import { MetaMinerBuilding, enumMinerVariants } from "./buildings/miner";
|
||||||
|
import { MetaTrashBuilding, enumTrashVariants } from "./buildings/trash";
|
||||||
|
|
||||||
|
/** @typedef {Array<[typeof MetaBuilding, string]>} TutorialGoalReward */
|
||||||
|
|
||||||
|
import { enumHubGoalRewards } from "./tutorial_goals";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method for proper types
|
||||||
|
* @returns {TutorialGoalReward}
|
||||||
|
*/
|
||||||
|
const typed = x => x;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores which reward unlocks what
|
||||||
|
* @enum {TutorialGoalReward?}
|
||||||
|
*/
|
||||||
|
export const enumHubGoalRewardsToContentUnlocked = {
|
||||||
|
[enumHubGoalRewards.reward_cutter_and_trash]: typed([[MetaCutterBuilding, defaultBuildingVariant]]),
|
||||||
|
[enumHubGoalRewards.reward_rotater]: typed([[MetaRotaterBuilding, defaultBuildingVariant]]),
|
||||||
|
[enumHubGoalRewards.reward_painter]: typed([[MetaPainterBuilding, defaultBuildingVariant]]),
|
||||||
|
[enumHubGoalRewards.reward_mixer]: typed([[MetaMixerBuilding, defaultBuildingVariant]]),
|
||||||
|
[enumHubGoalRewards.reward_stacker]: typed([[MetaStackerBuilding, defaultBuildingVariant]]),
|
||||||
|
[enumHubGoalRewards.reward_splitter]: typed([[MetaSplitterBuilding, defaultBuildingVariant]]),
|
||||||
|
[enumHubGoalRewards.reward_tunnel]: typed([[MetaUndergroundBeltBuilding, defaultBuildingVariant]]),
|
||||||
|
|
||||||
|
[enumHubGoalRewards.reward_rotater_ccw]: typed([[MetaRotaterBuilding, enumRotaterVariants.ccw]]),
|
||||||
|
[enumHubGoalRewards.reward_miner_chainable]: typed([[MetaMinerBuilding, enumMinerVariants.chainable]]),
|
||||||
|
[enumHubGoalRewards.reward_underground_belt_tier_2]: typed([
|
||||||
|
[MetaUndergroundBeltBuilding, enumUndergroundBeltVariants.tier2],
|
||||||
|
]),
|
||||||
|
[enumHubGoalRewards.reward_splitter_compact]: typed([
|
||||||
|
[MetaSplitterBuilding, enumSplitterVariants.compact],
|
||||||
|
]),
|
||||||
|
[enumHubGoalRewards.reward_cutter_quad]: typed([[MetaCutterBuilding, enumCutterVariants.quad]]),
|
||||||
|
[enumHubGoalRewards.reward_painter_double]: typed([[MetaPainterBuilding, enumPainterVariants.double]]),
|
||||||
|
[enumHubGoalRewards.reward_painter_quad]: typed([[MetaPainterBuilding, enumPainterVariants.quad]]),
|
||||||
|
[enumHubGoalRewards.reward_storage]: typed([[MetaTrashBuilding, enumTrashVariants.storage]]),
|
||||||
|
|
||||||
|
[enumHubGoalRewards.reward_freeplay]: null,
|
||||||
|
[enumHubGoalRewards.no_reward]: null,
|
||||||
|
[enumHubGoalRewards.no_reward_freeplay]: null,
|
||||||
|
};
|
@ -424,6 +424,11 @@ storyRewards:
|
|||||||
desc: >-
|
desc: >-
|
||||||
This level gave you no reward, but the next one will! <br><br> PS: Better don't destroy your existing factory - You need <strong>all</strong> those shapes later again to <strong>unlock upgrades</strong>!
|
This level gave you no reward, but the next one will! <br><br> PS: Better don't destroy your existing factory - You need <strong>all</strong> those shapes later again to <strong>unlock upgrades</strong>!
|
||||||
|
|
||||||
|
no_reward_freeplay:
|
||||||
|
title: Next level
|
||||||
|
desc: >-
|
||||||
|
Congratulations! By the way, more content is planned for the standalone!
|
||||||
|
|
||||||
settings:
|
settings:
|
||||||
title: Settings
|
title: Settings
|
||||||
categories:
|
categories:
|
||||||
|
Loading…
Reference in New Issue
Block a user