mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
Promote current discount
This commit is contained in:
parent
6a0254b358
commit
7e198f2a72
Binary file not shown.
Before Width: | Height: | Size: 33 KiB |
@ -23,7 +23,6 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
> button {
|
> button {
|
||||||
transition: opacity 0.12s ease-in-out;
|
transition: opacity 0.12s ease-in-out;
|
||||||
@ -40,7 +39,7 @@
|
|||||||
@include IncreasedClickArea(0px);
|
@include IncreasedClickArea(0px);
|
||||||
@include S(margin-top, 15px);
|
@include S(margin-top, 15px);
|
||||||
|
|
||||||
@include InlineAnimation(5s ease-in-out) {
|
@include InlineAnimation(1s ease-in-out) {
|
||||||
0% {
|
0% {
|
||||||
opacity: 0.05;
|
opacity: 0.05;
|
||||||
}
|
}
|
||||||
@ -60,7 +59,26 @@
|
|||||||
@include S(height, 40px);
|
@include S(height, 40px);
|
||||||
background: #171a23 center center / contain no-repeat;
|
background: #171a23 center center / contain no-repeat;
|
||||||
|
|
||||||
|
overflow: visible;
|
||||||
@include S(border-radius, $globalBorderRadius);
|
@include S(border-radius, $globalBorderRadius);
|
||||||
|
|
||||||
|
> .discount {
|
||||||
|
position: absolute;
|
||||||
|
@include S(top, -7px);
|
||||||
|
@include S(right, -5px);
|
||||||
|
background: #4c6b22;
|
||||||
|
color: #c5ea3f;
|
||||||
|
@include S(border-radius, $globalBorderRadius);
|
||||||
|
@include S(padding, 1px, 3px, 1px, 4px);
|
||||||
|
@include SuperSmallText;
|
||||||
|
text-transform: uppercase;
|
||||||
|
transform: rotate(1deg);
|
||||||
|
@include InlineAnimation(1.3s ease-in-out infinite) {
|
||||||
|
50% {
|
||||||
|
transform: rotate(4deg) scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,4 +82,26 @@
|
|||||||
background-image: uiResource("res/ui/icons/demo_steam_link_indicator.png");
|
background-image: uiResource("res/ui/icons/demo_steam_link_indicator.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.withDiscount {
|
||||||
|
color: #4c6b22;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .discount {
|
||||||
|
// position: absolute;
|
||||||
|
@include S(margin, 0, 5px);
|
||||||
|
|
||||||
|
background: rgba(#4c6b22, 1);
|
||||||
|
color: #c5ea3f;
|
||||||
|
@include S(border-radius, $globalBorderRadius);
|
||||||
|
@include S(padding, 0px, 2px, 0px, 3px);
|
||||||
|
@include SuperSmallText;
|
||||||
|
text-transform: uppercase;
|
||||||
|
transform: rotate(0deg);
|
||||||
|
@include InlineAnimation(1.3s ease-in-out infinite) {
|
||||||
|
50% {
|
||||||
|
transform: rotate(0.5deg) scale(1.05);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,12 +83,6 @@ $languages: en, de, cs, da, et, es-419, fr, it, pt-BR, sv, tr, el, ru, uk, zh-TW
|
|||||||
/*
|
/*
|
||||||
PRICE
|
PRICE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.steam_1_pr {
|
|
||||||
/* @load-async */
|
|
||||||
background-image: uiResource("get_on_steam_with_price.png") !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.steam_2_npr {
|
.steam_2_npr {
|
||||||
/* @load-async */
|
/* @load-async */
|
||||||
background-image: uiResource("get_on_steam.png") !important;
|
background-image: uiResource("get_on_steam.png") !important;
|
||||||
|
@ -140,20 +140,37 @@
|
|||||||
@include S(height, 40px);
|
@include S(height, 40px);
|
||||||
@include S(width, 180px);
|
@include S(width, 180px);
|
||||||
background: #171a23 center center / contain no-repeat;
|
background: #171a23 center center / contain no-repeat;
|
||||||
overflow: hidden;
|
// overflow: hidden;
|
||||||
display: block;
|
display: block;
|
||||||
text-indent: -999em;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@include S(margin-top, 30px);
|
@include S(margin-top, 30px);
|
||||||
pointer-events: all;
|
pointer-events: all;
|
||||||
transition: all 0.12s ease-in;
|
transition: all 0.12s ease-in;
|
||||||
transition-property: opacity, transform;
|
transition-property: opacity, transform;
|
||||||
|
position: relative;
|
||||||
@include S(border-radius, $globalBorderRadius);
|
@include S(border-radius, $globalBorderRadius);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
opacity: 0.9;
|
opacity: 0.9;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
> .discount {
|
||||||
|
position: absolute;
|
||||||
|
@include S(top, -7px);
|
||||||
|
@include S(right, -5px);
|
||||||
|
background: #4c6b22;
|
||||||
|
color: #c5ea3f;
|
||||||
|
@include S(border-radius, $globalBorderRadius);
|
||||||
|
@include S(padding, 1px, 3px, 1px, 4px);
|
||||||
|
@include SuperSmallText;
|
||||||
|
text-transform: uppercase;
|
||||||
|
transform: rotate(1deg);
|
||||||
|
@include InlineAnimation(1.3s ease-in-out infinite) {
|
||||||
|
50% {
|
||||||
|
transform: rotate(4deg) scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,6 +117,13 @@ export const globalConfig = {
|
|||||||
rendering: {},
|
rendering: {},
|
||||||
debug: require("./config.local").default,
|
debug: require("./config.local").default,
|
||||||
|
|
||||||
|
currentDiscount: {
|
||||||
|
amount: 50,
|
||||||
|
until: Date.parse("April 25 2022 23:59 +2:00"),
|
||||||
|
|
||||||
|
active: false, // computed later
|
||||||
|
},
|
||||||
|
|
||||||
// Secret vars
|
// Secret vars
|
||||||
info: {
|
info: {
|
||||||
// Binary file salt
|
// Binary file salt
|
||||||
@ -161,3 +168,5 @@ if (G_IS_DEV && globalConfig.debug.noArtificialDelays) {
|
|||||||
globalConfig.warmupTimeSecondsFast = 0;
|
globalConfig.warmupTimeSecondsFast = 0;
|
||||||
globalConfig.warmupTimeSecondsRegular = 0;
|
globalConfig.warmupTimeSecondsRegular = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
globalConfig.currentDiscount.active = new Date().getTime() < globalConfig.currentDiscount.until;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { A_B_TESTING_LINK_TYPE, THIRDPARTY_URLS } from "../../../core/config";
|
import { A_B_TESTING_LINK_TYPE, globalConfig, THIRDPARTY_URLS } from "../../../core/config";
|
||||||
import { InputReceiver } from "../../../core/input_receiver";
|
import { InputReceiver } from "../../../core/input_receiver";
|
||||||
import { makeDiv } from "../../../core/utils";
|
import { makeDiv } from "../../../core/utils";
|
||||||
import { T } from "../../../translations";
|
import { T } from "../../../translations";
|
||||||
@ -33,16 +33,26 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="lowerBar">
|
<div class="lowerBar">
|
||||||
<button class="steamLinkButton ${A_B_TESTING_LINK_TYPE}"></button>
|
<button class="steamLinkButton ${A_B_TESTING_LINK_TYPE}">
|
||||||
|
${
|
||||||
|
globalConfig.currentDiscount && globalConfig.currentDiscount.until > new Date().getTime()
|
||||||
|
? `<span class='discount'>${globalConfig.currentDiscount.amount}% off!</span>`
|
||||||
|
: ""
|
||||||
|
}
|
||||||
|
</button>
|
||||||
<button class="otherCloseButton">${T.ingame.standaloneAdvantages.no_thanks}</button>
|
<button class="otherCloseButton">${T.ingame.standaloneAdvantages.no_thanks}</button>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
);
|
);
|
||||||
|
|
||||||
this.trackClicks(this.contentDiv.querySelector("button.steamLinkButton"), () => {
|
this.trackClicks(this.contentDiv.querySelector("button.steamLinkButton"), () => {
|
||||||
|
const discount = globalConfig.currentDiscount.active
|
||||||
|
? "_discount" + globalConfig.currentDiscount.amount
|
||||||
|
: "";
|
||||||
|
|
||||||
this.root.app.analytics.trackUiClick("standalone_advantage_visit_steam");
|
this.root.app.analytics.trackUiClick("standalone_advantage_visit_steam");
|
||||||
this.root.app.platformWrapper.openExternalLink(
|
this.root.app.platformWrapper.openExternalLink(
|
||||||
THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_std_advg"
|
THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_std_advg" + discount
|
||||||
);
|
);
|
||||||
this.close();
|
this.close();
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { THIRDPARTY_URLS } from "../../../core/config";
|
import { globalConfig, THIRDPARTY_URLS } from "../../../core/config";
|
||||||
import { makeDiv } from "../../../core/utils";
|
import { makeDiv } from "../../../core/utils";
|
||||||
import { T } from "../../../translations";
|
import { T } from "../../../translations";
|
||||||
import { BaseHUDPart } from "../base_hud_part";
|
import { BaseHUDPart } from "../base_hud_part";
|
||||||
@ -15,20 +15,30 @@ export class HUDWatermark extends BaseHUDPart {
|
|||||||
[],
|
[],
|
||||||
`
|
`
|
||||||
<strong>${T.ingame.watermark.title}</strong>
|
<strong>${T.ingame.watermark.title}</strong>
|
||||||
<p>${T.ingame.watermark.desc}</p>
|
<p>${T.ingame.watermark.desc}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
`
|
`
|
||||||
);
|
);
|
||||||
|
|
||||||
this.linkElement = makeDiv(
|
this.linkElement = makeDiv(
|
||||||
parent,
|
parent,
|
||||||
"ingame_HUD_WatermarkClicker",
|
"ingame_HUD_WatermarkClicker",
|
||||||
[],
|
globalConfig.currentDiscount ? ["withDiscount"] : [""],
|
||||||
T.ingame.watermark.get_on_steam
|
T.ingame.watermark.get_on_steam +
|
||||||
|
(globalConfig.currentDiscount && globalConfig.currentDiscount.until > new Date().getTime()
|
||||||
|
? `<span class='discount'>${globalConfig.currentDiscount.amount}% off!</span>`
|
||||||
|
: "")
|
||||||
);
|
);
|
||||||
this.trackClicks(this.linkElement, () => {
|
this.trackClicks(this.linkElement, () => {
|
||||||
this.root.app.analytics.trackUiClick("watermark_click_2_direct");
|
this.root.app.analytics.trackUiClick("watermark_click_2_direct");
|
||||||
|
const discount = globalConfig.currentDiscount.active
|
||||||
|
? "_discount" + globalConfig.currentDiscount.amount
|
||||||
|
: "";
|
||||||
|
|
||||||
this.root.app.platformWrapper.openExternalLink(
|
this.root.app.platformWrapper.openExternalLink(
|
||||||
THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_watermark"
|
THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_watermark" + discount
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -74,8 +74,14 @@ export class MainMenuState extends GameState {
|
|||||||
const bannerHtml = `
|
const bannerHtml = `
|
||||||
<h3>${T.demoBanners.title}</h3>
|
<h3>${T.demoBanners.title}</h3>
|
||||||
<p>${T.demoBanners.intro}</p>
|
<p>${T.demoBanners.intro}</p>
|
||||||
|
<a href="#" class="steamLink ${A_B_TESTING_LINK_TYPE}" target="_blank">
|
||||||
|
${
|
||||||
|
globalConfig.currentDiscount.active
|
||||||
|
? `<span class='discount'>${globalConfig.currentDiscount.amount}% off!</span>`
|
||||||
|
: ""
|
||||||
|
}
|
||||||
|
|
||||||
<a href="#" class="steamLink ${A_B_TESTING_LINK_TYPE}" target="_blank">Get the shapez.io standalone!</a>
|
</a>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
return `
|
return `
|
||||||
@ -96,7 +102,7 @@ export class MainMenuState extends GameState {
|
|||||||
|
|
||||||
<div class="logo">
|
<div class="logo">
|
||||||
<img src="${cachebust("res/" + getLogoSprite())}" alt="shapez.io Logo">
|
<img src="${cachebust("res/" + getLogoSprite())}" alt="shapez.io Logo">
|
||||||
${showUpdateLabel ? `<span class="updateLabel">MODS UPDATE!</span>` : ""}
|
${/*showUpdateLabel ? `<span class="updateLabel">MODS UPDATE!</span>` : ""*/ ""}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mainWrapper" data-columns="${showDemoAdvertisement || showPuzzleDLC ? 2 : 1}">
|
<div class="mainWrapper" data-columns="${showDemoAdvertisement || showPuzzleDLC ? 2 : 1}">
|
||||||
@ -131,9 +137,6 @@ export class MainMenuState extends GameState {
|
|||||||
showPuzzleDLC && !ownsPuzzleDLC && !hasMods
|
showPuzzleDLC && !ownsPuzzleDLC && !hasMods
|
||||||
? `
|
? `
|
||||||
<div class="puzzleContainer notOwned">
|
<div class="puzzleContainer notOwned">
|
||||||
<span class="badge">
|
|
||||||
${T.puzzleMenu.categories.new}
|
|
||||||
</span>
|
|
||||||
<img class="dlcLogo" src="${cachebust(
|
<img class="dlcLogo" src="${cachebust(
|
||||||
G_CHINA_VERSION || G_WEGAME_VERSION
|
G_CHINA_VERSION || G_WEGAME_VERSION
|
||||||
? "res/puzzle_dlc_logo_china.png"
|
? "res/puzzle_dlc_logo_china.png"
|
||||||
@ -454,7 +457,12 @@ export class MainMenuState extends GameState {
|
|||||||
|
|
||||||
onSteamLinkClicked() {
|
onSteamLinkClicked() {
|
||||||
this.app.analytics.trackUiClick("main_menu_steam_link_" + A_B_TESTING_LINK_TYPE);
|
this.app.analytics.trackUiClick("main_menu_steam_link_" + A_B_TESTING_LINK_TYPE);
|
||||||
this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_mainmenu");
|
const discount = globalConfig.currentDiscount.active
|
||||||
|
? "_discount" + globalConfig.currentDiscount.amount
|
||||||
|
: "";
|
||||||
|
this.app.platformWrapper.openExternalLink(
|
||||||
|
THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_mainmenu" + discount
|
||||||
|
);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user