From a61b2b0ef0ab5cdab835e40e0dce8d1d64379c25 Mon Sep 17 00:00:00 2001 From: DJ1TJOO Date: Fri, 12 Mar 2021 14:28:27 +0100 Subject: [PATCH] Added hidden achievements --- res/ui/achievements/hidden.png | Bin 0 -> 25945 bytes src/css/ingame_hud/achievements.scss | 4 +++ src/css/resources.scss | 4 +-- src/js/game/hud/parts/achievements.js | 46 ++++++++++++++++++++++-- src/js/platform/achievement_provider.js | 11 ++++++ translations/base-en.yaml | 3 ++ 6 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 res/ui/achievements/hidden.png diff --git a/res/ui/achievements/hidden.png b/res/ui/achievements/hidden.png new file mode 100644 index 0000000000000000000000000000000000000000..2c70b25ff7aee98d680f64cfc1b4d05ed063ddf2 GIT binary patch literal 25945 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 literal 0 HcmV?d00001 diff --git a/src/css/ingame_hud/achievements.scss b/src/css/ingame_hud/achievements.scss index 1e3e4c37..5d2c6b99 100644 --- a/src/css/ingame_hud/achievements.scss +++ b/src/css/ingame_hud/achievements.scss @@ -16,6 +16,10 @@ @include S(height, 85px); grid-template-rows: #{D(20px)} auto; + &.hidden { + display: none; + } + &:last-child { margin-bottom: 0; } diff --git a/src/css/resources.scss b/src/css/resources.scss index 9d0b84c4..976f4fad 100644 --- a/src/css/resources.scss +++ b/src/css/resources.scss @@ -66,8 +66,8 @@ $icons: notification_saved, notification_success, notification_upgrade; } } -$achievements: belt500Tiles, blueprint100k, blueprint1m, completeLvl26, cutShape, darkMode, destroy1000, - irrelevantShape, level100, level50, logoBefore18, mam, mapMarkers15, noBeltUpgradesUntilBp, +$achievements: hidden, belt500Tiles, blueprint100k, blueprint1m, completeLvl26, cutShape, darkMode, + destroy1000, irrelevantShape, level100, level50, logoBefore18, mam, mapMarkers15, noBeltUpgradesUntilBp, noInverseRotater, oldLevel17, openWires, paintShape, place5000Wires, placeBlueprint, placeBp1000, play1h, play10h, play20h, produceLogo, produceMsLogo, produceRocket, rotateShape, speedrunBp30, speedrunBp60, speedrunBp120, stack4Layers, stackShape, store100Unique, storeShape, throughputBp25, throughputBp50, diff --git a/src/js/game/hud/parts/achievements.js b/src/js/game/hud/parts/achievements.js index 7d66a00f..9d7506ee 100644 --- a/src/js/game/hud/parts/achievements.js +++ b/src/js/game/hud/parts/achievements.js @@ -1,6 +1,10 @@ import { InputReceiver } from "../../../core/input_receiver"; import { makeDiv } from "../../../core/utils"; -import { ACHIEVEMENTS, enum_achievement_mappings } from "../../../platform/achievement_provider"; +import { + ACHIEVEMENTS, + enum_achievement_mappings, + HIDDEN_ACHIEVEMENTS, +} from "../../../platform/achievement_provider"; import { T } from "../../../translations"; import { KeyActionMapper, KEYMAPPINGS } from "../../key_action_mapper"; import { BaseHUDPart } from "../base_hud_part"; @@ -60,15 +64,53 @@ export class HUDAchievements extends BaseHUDPart { // Assign handle this.achievementToElements[achievementKey] = handle; } + + const handle = {}; + // Wrapper + handle.hidden = makeDiv(this.contentDiv, null, ["achievement"]); + + // Icon + handle.icon = makeDiv(handle.hidden, null, ["icon"]); + handle.icon.setAttribute("data-icon", "achievements/hidden.png"); + + // Info + handle.info = makeDiv(handle.hidden, null, ["info"]); + + // Title + handle.title = makeDiv(handle.info, null, ["title"], T.achievements.hidden.title); + + // Description + handle.description = makeDiv( + handle.info, + null, + ["description"], + T.achievements.hidden.description.replace("", HIDDEN_ACHIEVEMENTS.length + "") + ); + this.hiddenElement = handle; } renderStatus() { + let hidden = 0; for (const achievementKey in this.achievementToElements) { const handle = this.achievementToElements[achievementKey]; + if (!this.root.achievementProxy.provider.collection.map.get(ACHIEVEMENTS[achievementKey])) { if (!handle.elem.classList.contains("unlocked")) handle.elem.classList.add("unlocked"); - } else if (handle.elem.classList.contains("unlocked")) handle.elem.classList.remove("unlocked"); + if (handle.elem.classList.contains("hidden")) handle.elem.classList.remove("hidden"); + } else { + if (handle.elem.classList.contains("unlocked")) handle.elem.classList.remove("unlocked"); + + if (HIDDEN_ACHIEVEMENTS.includes(ACHIEVEMENTS[achievementKey])) { + if (!handle.elem.classList.contains("hidden")) handle.elem.classList.add("hidden"); + hidden++; + } + } } + + this.hiddenElement.description.innerHTML = T.achievements.hidden.description.replace( + "", + hidden + "" + ); } initialize() { diff --git a/src/js/platform/achievement_provider.js b/src/js/platform/achievement_provider.js index 39918808..d9b7d67d 100644 --- a/src/js/platform/achievement_provider.js +++ b/src/js/platform/achievement_provider.js @@ -58,6 +58,17 @@ export const ACHIEVEMENTS = { upgradesTier8: "upgradesTier8", }; +export const HIDDEN_ACHIEVEMENTS = [ + ACHIEVEMENTS.placeBp1000, + ACHIEVEMENTS.darkMode, + ACHIEVEMENTS.irrelevantShape, + ACHIEVEMENTS.logoBefore18, + ACHIEVEMENTS.mapMarkers15, + ACHIEVEMENTS.produceMsLogo, + ACHIEVEMENTS.belt500Tiles, + ACHIEVEMENTS.oldLevel17, +]; + export const enum_achievement_mappings = { [ACHIEVEMENTS.belt500Tiles]: function () { return { diff --git a/translations/base-en.yaml b/translations/base-en.yaml index ccaada5d..99508410 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -499,6 +499,9 @@ shopUpgrades: # All achievements achievements: + hidden: + title: Hidden achievements + description: You have hidden achievement(s) belt500Tiles: title: I need trains description: Have a belt with a length of 500 tiles