From 2a4a6800d2ffe510a723510e097e0a1ace72e6b2 Mon Sep 17 00:00:00 2001 From: tobspr <> Date: Sun, 24 May 2020 16:54:18 +0200 Subject: [PATCH 01/14] Add new analytics schema and fix tslint issues --- src/js/globals.d.ts | 2 -- src/js/platform/browser/game_analytics.js | 8 +++++--- src/js/platform/browser/storage_indexed_db.js | 2 ++ src/js/states/main_menu.js | 1 + 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/js/globals.d.ts b/src/js/globals.d.ts index 7e84d86a..977e8ff3 100644 --- a/src/js/globals.d.ts +++ b/src/js/globals.d.ts @@ -107,8 +107,6 @@ declare interface Window { assert(condition: boolean, failureMessage: string); coreThreadLoadedCb(); - - gameanalytics: typeof import("./game_analytics"); } declare interface Navigator { diff --git a/src/js/platform/browser/game_analytics.js b/src/js/platform/browser/game_analytics.js index 2efc458f..be1a8940 100644 --- a/src/js/platform/browser/game_analytics.js +++ b/src/js/platform/browser/game_analytics.js @@ -137,7 +137,8 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface { ingameTime: root.time.now(), category, value, - gameDump: this.generateGameDump(root), + version: G_BUILD_VERSION, + gameDump: this.generateGameDump(root, category === "sync"), }); } @@ -152,14 +153,15 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface { /** * Generates a game dump * @param {GameRoot} root + * @param {boolean=} metaOnly */ - generateGameDump(root) { + generateGameDump(root, metaOnly = false) { let staticEntities = []; const entities = root.entityMgr.getAllWithComponent(StaticMapEntityComponent); // Limit the entities - if (entities.length < 5000) { + if (!metaOnly && entities.length < 500) { for (let i = 0; i < entities.length; ++i) { const entity = entities[i]; const staticComp = entity.components.StaticMapEntity; diff --git a/src/js/platform/browser/storage_indexed_db.js b/src/js/platform/browser/storage_indexed_db.js index 3d29c246..0c1dbe4f 100644 --- a/src/js/platform/browser/storage_indexed_db.js +++ b/src/js/platform/browser/storage_indexed_db.js @@ -34,10 +34,12 @@ export class StorageImplBrowserIndexedDB extends StorageInterface { reject("Indexed DB access error"); }; + // @ts-ignore request.onsuccess = event => resolve(event.target.result); request.onupgradeneeded = /** @type {IDBVersionChangeEvent} */ event => { /** @type {IDBDatabase} */ + // @ts-ignore const database = event.target.result; const objectStore = database.createObjectStore("files", { diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js index 1c9d5010..98471084 100644 --- a/src/js/states/main_menu.js +++ b/src/js/states/main_menu.js @@ -122,6 +122,7 @@ export class MainMenuState extends GameState { const closeLoader = this.dialogs.showLoadingDialog(); const reader = new FileReader(); reader.addEventListener("load", event => { + // @ts-ignore const contents = event.target.result; let realContent; From 3b835cd4cbbee558525e95026d93d980ffb4a001 Mon Sep 17 00:00:00 2001 From: tobspr <> Date: Sun, 24 May 2020 17:29:57 +0200 Subject: [PATCH 02/14] Re-balancing --- src/js/changelog.js | 7 +++++++ src/js/game/tutorial_goals.js | 27 ++++++++++++++++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/js/changelog.js b/src/js/changelog.js index 3b3bb229..ef094ca9 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -1,4 +1,11 @@ export const CHANGELOG = [ + { + version: "1.0.3", + date: "24.05.2020", + entries: [ + "Balancing: I reduced the amount of shapes required for the first 5 levels, to make it easier to get into the game.", + ], + }, { version: "1.0.2", date: "23.05.2020", diff --git a/src/js/game/tutorial_goals.js b/src/js/game/tutorial_goals.js index 83aca89c..b2f5b0ef 100644 --- a/src/js/game/tutorial_goals.js +++ b/src/js/game/tutorial_goals.js @@ -30,20 +30,23 @@ export const enumHubGoalRewards = { }; export const tutorialGoals = [ + // 1 // Circle { shape: "CuCuCuCu", // belts t1 - required: 60, + required: 35, reward: enumHubGoalRewards.reward_cutter_and_trash, }, + // 2 // Cutter { shape: "----CuCu", // - required: 80, + required: 50, reward: enumHubGoalRewards.no_reward, }, + // 3 // Rectangle { shape: "RuRuRuRu", // miners t1 @@ -51,12 +54,14 @@ export const tutorialGoals = [ reward: enumHubGoalRewards.reward_splitter, }, + // 4 { shape: "RuRu----", // processors t2 - required: 350, + required: 150, reward: enumHubGoalRewards.reward_rotater, }, + // 5 // Rotater { shape: "Cu----Cu", // belts t2 @@ -64,25 +69,29 @@ export const tutorialGoals = [ reward: enumHubGoalRewards.reward_tunnel, }, + // 6 { shape: "Cu------", // miners t2 - required: 1000, + required: 700, reward: enumHubGoalRewards.reward_painter, }, + // 7 // Painter { shape: "CrCrCrCr", // unused - required: 1500, + required: 1300, reward: enumHubGoalRewards.reward_rotater_ccw, }, + // 8 { shape: "RbRb----", // painter t2 required: 2500, reward: enumHubGoalRewards.reward_mixer, }, + // 9 // Mixing (purple) { shape: "CpCpCpCp", // belts t3 @@ -90,6 +99,7 @@ export const tutorialGoals = [ reward: enumHubGoalRewards.reward_splitter_compact, }, + // 10 // Star shape + cyan { shape: "ScScScSc", // miners t3 @@ -97,6 +107,7 @@ export const tutorialGoals = [ reward: enumHubGoalRewards.reward_stacker, }, + // 11 // Stacker { shape: "CgScScCg", // processors t3 @@ -104,36 +115,42 @@ export const tutorialGoals = [ reward: enumHubGoalRewards.reward_miner_chainable, }, + // 12 { shape: "RpRpRpRp:CwCwCwCw", // painting t3 required: 7000, reward: enumHubGoalRewards.reward_underground_belt_tier_2, }, + // 13 { shape: "SrSrSrSr:CyCyCyCy", // unused required: 7850, reward: enumHubGoalRewards.reward_storage, }, + // 14 { shape: "SrSrSrSr:CyCyCyCy:SwSwSwSw", // belts t4 (two variants) required: 8000, reward: enumHubGoalRewards.reward_cutter_quad, }, + // 15 { shape: "CbRbRbCb:CwCwCwCw:WbWbWbWb", // miner t4 (two variants) required: 9000, reward: enumHubGoalRewards.reward_painter_double, }, + // 16 { shape: "WrRgWrRg:CwCrCwCr:SgSgSgSg", // processors t4 (two varinats) required: 10000, reward: enumHubGoalRewards.reward_painter_quad, }, + // 17 { shape: finalGameShape, required: 50000, From d95d9d5a322d7cf54397351ab4706b6fdf0b2978 Mon Sep 17 00:00:00 2001 From: tobspr <> Date: Sun, 24 May 2020 17:30:21 +0200 Subject: [PATCH 03/14] Bump version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index e6d5cb83..e4c0d46e 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.0.2 \ No newline at end of file +1.0.3 \ No newline at end of file From e203ba86813c6610c3389af5084164baffcdb5bc Mon Sep 17 00:00:00 2001 From: tobspr <> Date: Sun, 24 May 2020 17:49:12 +0200 Subject: [PATCH 04/14] Special options while running on iogames.space --- src/css/states/changelog.scss | 7 +++++++ src/css/states/preload.scss | 12 +++++++++++- src/js/changelog.js | 2 +- src/js/platform/browser/wrapper.js | 14 +++++++++++++- src/js/platform/wrapper.js | 11 +++++++++++ src/js/states/main_menu.js | 18 +++++++++++++++--- 6 files changed, 58 insertions(+), 6 deletions(-) diff --git a/src/css/states/changelog.scss b/src/css/states/changelog.scss index d4a948bf..69b7864c 100644 --- a/src/css/states/changelog.scss +++ b/src/css/states/changelog.scss @@ -19,6 +19,13 @@ .changes { @include SuperSmallText; @include S(padding-left, 20px); + strong { + background: $colorBlueBright; + color: #fff; + text-transform: uppercase; + @include S(padding, 1px, 2px); + @include S(margin-right, 3px); + } } } } diff --git a/src/css/states/preload.scss b/src/css/states/preload.scss index 2c8a302e..075a363f 100644 --- a/src/css/states/preload.scss +++ b/src/css/states/preload.scss @@ -7,11 +7,14 @@ } .changelogDialogEntry { + margin-top: 10px; width: 100%; flex-direction: column; text-align: left; padding: 10px; box-sizing: border-box; + background: #eef1f4; + .version { @include Heading; } @@ -25,7 +28,14 @@ .changes { @include SuperSmallText; - @include S(padding-left, 20px); + @include S(padding-left, 15px); + strong { + background: $colorBlueBright; + color: #fff; + text-transform: uppercase; + @include S(padding, 1px, 2px); + @include S(margin-right, 3px); + } } } diff --git a/src/js/changelog.js b/src/js/changelog.js index ef094ca9..a56306ec 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -3,7 +3,7 @@ export const CHANGELOG = [ version: "1.0.3", date: "24.05.2020", entries: [ - "Balancing: I reduced the amount of shapes required for the first 5 levels, to make it easier to get into the game.", + "Balancing Reduced the amount of shapes required for the first 5 levels, to make it easier to get into the game.", ], }, { diff --git a/src/js/platform/browser/wrapper.js b/src/js/platform/browser/wrapper.js index 32c0e5f3..fa3f80b3 100644 --- a/src/js/platform/browser/wrapper.js +++ b/src/js/platform/browser/wrapper.js @@ -1,5 +1,5 @@ import { Math_min } from "../../core/builtins"; -import { globalConfig, IS_MOBILE } from "../../core/config"; +import { globalConfig, IS_MOBILE, IS_DEBUG, IS_DEMO } from "../../core/config"; import { createLogger } from "../../core/logging"; import { queryParamOptions } from "../../core/query_parameters"; import { clamp } from "../../core/utils"; @@ -19,6 +19,8 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface { iframed: false, externalLinks: true, iogLink: true, + unlimitedSavegames: IS_DEMO ? false : true, + showDemoBadge: IS_DEMO, }; if (!G_IS_STANDALONE && queryParamOptions.embedProvider) { @@ -35,6 +37,8 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface { case "iogames.space": { this.embedProvider.id = "iogames.space"; this.embedProvider.iogLink = true; + this.embedProvider.unlimitedSavegames = true; + this.embedProvider.showDemoBadge = false; break; } @@ -71,6 +75,14 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface { return super.initialize().then(() => this.initializeAdProvider()); } + getHasUnlimitedSavegames() { + return this.embedProvider.unlimitedSavegames; + } + + getShowDemoBadges() { + return this.embedProvider.showDemoBadge; + } + onSentryLoaded() { logger.log("Initializing sentry"); window.Sentry.init({ diff --git a/src/js/platform/wrapper.js b/src/js/platform/wrapper.js index a7b5c807..5754a8a2 100644 --- a/src/js/platform/wrapper.js +++ b/src/js/platform/wrapper.js @@ -29,6 +29,17 @@ export class PlatformWrapperInterface { return false; } + /** + * Whether the user has unlimited savegames + */ + getHasUnlimitedSavegames() { + return true; + } + + getShowDemoBadges() { + return false; + } + /** * Returns the strength of touch pans with the mouse */ diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js index 98471084..fded521b 100644 --- a/src/js/states/main_menu.js +++ b/src/js/states/main_menu.js @@ -54,7 +54,11 @@ export class MainMenuState extends GameState {