Install Node/Steam Functionality

Messy carried over code (to be cleaned up once functionality finalized)
This commit is contained in:
ZackRhodes 2022-03-31 18:10:44 -04:00
parent fd08b75bed
commit f2604361be
4 changed files with 157 additions and 0 deletions

BIN
javascripts/core/.DS_Store vendored Normal file

Binary file not shown.

BIN
public/.DS_Store vendored Normal file

Binary file not shown.

130
public/Steam/steam.js Normal file
View File

@ -0,0 +1,130 @@
"use strict";
const SteamFunctions = {
purchaseChecker: [],
purchasesInitiated: true,
macUser: false,
SteamInitialize() {
this.forceRefresh();
this.BackfillAchievements();
this.EventHandlers();
if (window.navigator.platform === "MacIntel") {
SteamFunctions.macUser = true;
}
},
// Canvas workaround to enable overlay
forceRefresh() {
const canvas = document.getElementById("forceRefreshCanvas");
const ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
window.requestAnimationFrame(SteamFunctions.forceRefresh);
},
UIZoom() {
if (nodeOn && ui.view.newUI) {
const setSize = 1020;
const SizeDiff = window.outerHeight / setSize;
require("electron").webFrame.setZoomFactor(SizeDiff);
} else if (nodeOn && !ui.view.newUI) {
const setSize = 825;
const SizeDiff = window.outerHeight / setSize;
require("electron").webFrame.setZoomFactor(SizeDiff);
}
},
EventHandlers() {
Steam.on("micro-txn-authorization-response", (data, ordered, orderstate) => {
if (orderstate === true) {
SteamFunctions.PurchaseValidation();
}
});
},
GiveAchievement(AchieveID) {
if (Steam && steamOn) {
if (Steam.activateAchievement) {
Steam.activateAchievement(`Achievement${AchieveID}`,
() => console.log(`Successfully Achieved Achievement${AchieveID}`),
err => console.log(`Achievement Error: ${err}`)
);
}
}
},
BackfillAchievements() {
if (Steam && steamOn) {
if (Steam.activateAchievement) {
for (const ach in Achievements.all) {
if (Achievements.all[ach].isUnlocked) {
Steam.activateAchievement(`Achievement${Achievements.all[ach].id}`,
() => console.log(`Successfully Achieved Achievement${Achievements.all[ach].id}`),
err => console.log(`Achievement Error: ${err}`)
);
}
}
}
}
},
PurchaseIAP(STD, kreds) {
if (!steamOn) return;
const TheItem = { ItemId: `${STD}STD`, Quantity: 1, Annotation: "Purchased via in-game store" };
PlayFab.settings.titleId = "59813";
const loginRequest = {
Items: [TheItem]
};
PlayFab.ClientApi.StartPurchase(loginRequest, (result, error) => {
console.log(result, error);
if (result !== null) {
const TheOrder = result.data.OrderId;
const PurchaseRequest = {
OrderId: TheOrder,
Currency: "RM",
ProviderName: "Steam"
};
PlayFab.ClientApi.PayForPurchase(PurchaseRequest, (purchaseResult, purchaseError) => {
if (purchaseResult !== null) {
const txnID = purchaseResult.data.ProviderData;
SteamFunctions.purchaseChecker.push(purchaseResult.data.OrderId);
if (window.navigator.platform === "MacIntel") {
shell.openExternal("https://store.steampowered.com/checkout/approvetxn/" + txnID + "/?returnurl=steam");
}
} else if (purchaseError !== null) {
console.log(purchaseError);
}
});
} else if (error !== null) {
console.log(error);
}
});
},
ConfirmSteamPurchase(OrderIdentifier) {
console.log(OrderIdentifier);
PlayFab.ClientApi.ConfirmPurchase({ OrderId: OrderIdentifier }, (result, error) => {
if (result !== null) {
console.log(result);
const PurchaseName = result.data.Items[0].ItemId;
const PurchaseInstance = result.data.Items[0].ItemInstanceId;
PlayFab.ClientApi.ConsumeItem({ ItemInstanceId: PurchaseInstance, ConsumeCount: 1 },
(consumeResult, consumeError) => {
if (consumeResult !== null) {
console.log(consumeResult);
const stdsBought = Number(PurchaseName.replace("STD", ""));
player.IAP.totalSTD += stdsBought;
GameUI.notify.info(`${stdsBought} STDs Obtained!`);
SteamFunctions.purchaseChecker = SteamFunctions.purchaseChecker.filter(item => item !== OrderIdentifier);
} else if (consumeError !== null) {
console.log(consumeError);
}
});
} else if (error !== null) {
console.log(error);
}
});
},
PurchaseValidation() {
if (SteamFunctions.purchaseChecker.length > 0) {
SteamFunctions.purchaseChecker.forEach(
anOrder => SteamFunctions.ConfirmSteamPurchase(anOrder)
);
}
}
};

View File

@ -47,6 +47,33 @@
<div id="performance-stats" class="c-performance-stats" style="display: none;"></div>
<script type="text/javascript" src="PlayFab/PlayFabClientApi.js"></script>
<script type="text/javascript" src="Steam/steam.js"></script>
<canvas id="forceRefreshCanvas" style="position: fixed; right: 0px; bottom: 0px; width: 100vw; height: 100%; opacity: 0.01; pointer-events: none; z-index: -20;"></canvas>
<script>
/*--Post GameLoad Steam Initialization--*/
var nodeOn = window.require!==undefined ? true : false
if(nodeOn){
var JQ = require('jquery');
var Steam = require('greenworks')
if (Steam) {
if (Steam.initAPI()) {
console.log("Steam is Functional!")
steamOn = true
} else {
console.log("Steam API not activated. Are you sure you opened the game in Steam?")
}
}
JQ(window).resize(function(){
SteamFunctions.UIZoom()
});
if(Steam){
if(Steam.initAPI()){
SteamFunctions.SteamInitialize()
}else{
}
}
}
</script>
</body>
<script>
// We use an IE only document variable to check here to force it to show the browser warning.