diff --git a/artwork/promo/yorgio-promo.png b/artwork/promo/yorgio-promo.png new file mode 100644 index 00000000..60ebd785 Binary files /dev/null and b/artwork/promo/yorgio-promo.png differ diff --git a/artwork/promo/yorgio-promo.psd b/artwork/promo/yorgio-promo.psd new file mode 100644 index 00000000..6f184b25 Binary files /dev/null and b/artwork/promo/yorgio-promo.psd differ diff --git a/src/css/states/main_menu.scss b/src/css/states/main_menu.scss index 7232e459..beb918e5 100644 --- a/src/css/states/main_menu.scss +++ b/src/css/states/main_menu.scss @@ -81,6 +81,7 @@ @include S(border-radius, $globalBorderRadius); height: 100%; box-sizing: border-box; + @include S(width, 300px); @include S(padding, 15px); display: flex; @@ -283,6 +284,13 @@ flex-grow: 1; justify-content: center; align-items: flex-end; + width: 100%; + + .author { + flex-grow: 1; + text-align: right; + @include S(padding-right, 10px); + } @include S(padding, 15px); > a { diff --git a/src/js/game/hud/parts/notifications.js b/src/js/game/hud/parts/notifications.js index 95817f43..b0bfd0c3 100644 --- a/src/js/game/hud/parts/notifications.js +++ b/src/js/game/hud/parts/notifications.js @@ -1,6 +1,7 @@ import { BaseHUDPart } from "../base_hud_part"; import { makeDiv } from "../../../core/utils"; import { T } from "../../../translations"; +import { IS_DEMO } from "../../../core/config"; /** @enum {string} */ export const enumNotificationType = { @@ -23,9 +24,11 @@ export class HUDNotifications extends BaseHUDPart { this.notificationElements = []; // Automatic notifications - this.root.signals.gameSaved.add(() => - this.onNotification(T.ingame.notifications.gameSaved, enumNotificationType.saved) - ); + if (!IS_DEMO) { + this.root.signals.gameSaved.add(() => + this.onNotification(T.ingame.notifications.gameSaved, enumNotificationType.saved) + ); + } } /** diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js index 5df6566a..4a6932a4 100644 --- a/src/js/states/main_menu.js +++ b/src/js/states/main_menu.js @@ -86,6 +86,8 @@ export class MainMenuState extends GameState { +
+ `; } @@ -319,7 +321,7 @@ export class MainMenuState extends GameState { this.moveToState("SettingsState"); } - onPlayButtonClicked() { + doStartNewGame() { this.app.analytics.trackUiClick("start_new_game"); const savegame = this.app.savegameMgr.createNewSavegame(); @@ -335,6 +337,19 @@ export class MainMenuState extends GameState { }); } + onPlayButtonClicked() { + if (IS_DEMO) { + const { ok } = this.dialogs.showWarning( + T.dialogs.demoExplanation.title, + T.dialogs.demoExplanation.desc + ); + ok.add(() => this.doStartNewGame()); + return; + } + + this.doStartNewGame(); + } + onLeave() { this.dialogs.cleanup(); } diff --git a/translations/base-en.yaml b/translations/base-en.yaml index 44d661f6..c78cb8ce 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -57,13 +57,14 @@ global: demoBanners: # This is the "advertisement" shown in the main menu and other various places - title: Demo version + title: Hey! intro: >- - Get the full version for: + If you enjoy this game, please consider to buy the full version! advantages: - - Saving and resuming your games. - - Dark mode & more. - - Supporting the developer ❤️ + - Save & restore your games + - Dark mode + - >- + Allow me to further develop shapez.io ❤️ mainMenu: play: Play @@ -144,6 +145,10 @@ dialogs: title: Update available desc: There is an update for this game available! + demoExplanation: + title: You can not save + desc: This is a demo, and you will not be able to restore your saved games. To save and resume your games, get the standalone on itch.io (You can import them).