Merge branch 'dev' of https://github.com/Undeemiss/bitburner into message-refactor

This commit is contained in:
Undeemiss 2022-04-12 20:49:50 -05:00
commit 58bd2de8e5
3 changed files with 314 additions and 271 deletions

@ -22,109 +22,96 @@ function error_process(err, error_callback) {
if (err && error_callback) error_callback(err); if (err && error_callback) error_callback(err);
} }
greenworks.ugcGetItems = function (options, ugc_matching_type, ugc_query_type, success_callback, error_callback) { if (greenworks) {
if (typeof options !== "object") { greenworks.ugcGetItems = function (options, ugc_matching_type, ugc_query_type, success_callback, error_callback) {
error_callback = success_callback; if (typeof options !== "object") {
success_callback = ugc_query_type; error_callback = success_callback;
ugc_query_type = ugc_matching_type; success_callback = ugc_query_type;
ugc_matching_type = options; ugc_query_type = ugc_matching_type;
options = { ugc_matching_type = options;
app_id: greenworks.getAppId(), options = {
page_num: 1, app_id: greenworks.getAppId(),
}; page_num: 1,
} };
greenworks._ugcGetItems(options, ugc_matching_type, ugc_query_type, success_callback, error_callback); }
}; greenworks._ugcGetItems(options, ugc_matching_type, ugc_query_type, success_callback, error_callback);
};
greenworks.ugcGetUserItems = function ( greenworks.ugcGetUserItems = function (
options,
ugc_matching_type,
ugc_list_sort_order,
ugc_list,
success_callback,
error_callback,
) {
if (typeof options !== "object") {
error_callback = success_callback;
success_callback = ugc_list;
ugc_list = ugc_list_sort_order;
ugc_list_sort_order = ugc_matching_type;
ugc_matching_type = options;
options = {
app_id: greenworks.getAppId(),
page_num: 1,
};
}
greenworks._ugcGetUserItems(
options, options,
ugc_matching_type, ugc_matching_type,
ugc_list_sort_order, ugc_list_sort_order,
ugc_list, ugc_list,
success_callback, success_callback,
error_callback, error_callback,
); ) {
}; if (typeof options !== "object") {
error_callback = success_callback;
success_callback = ugc_list;
ugc_list = ugc_list_sort_order;
ugc_list_sort_order = ugc_matching_type;
ugc_matching_type = options;
options = {
app_id: greenworks.getAppId(),
page_num: 1,
};
}
greenworks._ugcGetUserItems(
options,
ugc_matching_type,
ugc_list_sort_order,
ugc_list,
success_callback,
error_callback,
);
};
greenworks.ugcSynchronizeItems = function (options, sync_dir, success_callback, error_callback) { greenworks.ugcSynchronizeItems = function (options, sync_dir, success_callback, error_callback) {
if (typeof options !== "object") { if (typeof options !== "object") {
error_callback = success_callback; error_callback = success_callback;
success_callback = sync_dir; success_callback = sync_dir;
sync_dir = options; sync_dir = options;
options = { options = {
app_id: greenworks.getAppId(), app_id: greenworks.getAppId(),
page_num: 1, page_num: 1,
}; };
} }
greenworks._ugcSynchronizeItems(options, sync_dir, success_callback, error_callback); greenworks._ugcSynchronizeItems(options, sync_dir, success_callback, error_callback);
}; };
greenworks.publishWorkshopFile = function ( greenworks.publishWorkshopFile = function (
options, options,
file_path, file_path,
image_path, image_path,
title, title,
description, description,
success_callback, success_callback,
error_callback, error_callback,
) { ) {
if (typeof options !== "object") { if (typeof options !== "object") {
error_callback = success_callback; error_callback = success_callback;
success_callback = description; success_callback = description;
description = title; description = title;
title = image_path; title = image_path;
image_path = file_path; image_path = file_path;
file_path = options; file_path = options;
options = { options = {
app_id: greenworks.getAppId(), app_id: greenworks.getAppId(),
tags: [], tags: [],
}; };
} }
greenworks._publishWorkshopFile(options, file_path, image_path, title, description, success_callback, error_callback); greenworks._publishWorkshopFile(
}; options,
file_path,
image_path,
title,
description,
success_callback,
error_callback,
);
};
greenworks.updatePublishedWorkshopFile = function ( greenworks.updatePublishedWorkshopFile = function (
options,
published_file_handle,
file_path,
image_path,
title,
description,
success_callback,
error_callback,
) {
if (typeof options !== "object") {
error_callback = success_callback;
success_callback = description;
description = title;
title = image_path;
image_path = file_path;
file_path = published_file_handle;
published_file_handle = options;
options = {
tags: [], // No tags are set
};
}
greenworks._updatePublishedWorkshopFile(
options, options,
published_file_handle, published_file_handle,
file_path, file_path,
@ -133,161 +120,184 @@ greenworks.updatePublishedWorkshopFile = function (
description, description,
success_callback, success_callback,
error_callback, error_callback,
); ) {
}; if (typeof options !== "object") {
error_callback = success_callback;
success_callback = description;
description = title;
title = image_path;
image_path = file_path;
file_path = published_file_handle;
published_file_handle = options;
options = {
tags: [], // No tags are set
};
}
greenworks._updatePublishedWorkshopFile(
options,
published_file_handle,
file_path,
image_path,
title,
description,
success_callback,
error_callback,
);
};
// An utility function for publish related APIs. // An utility function for publish related APIs.
// It processes remains steps after saving files to Steam Cloud. // It processes remains steps after saving files to Steam Cloud.
function file_share_process(file_name, image_name, next_process_func, error_callback, progress_callback) { function file_share_process(file_name, image_name, next_process_func, error_callback, progress_callback) {
if (progress_callback) progress_callback("Completed on saving files on Steam Cloud."); if (progress_callback) progress_callback("Completed on saving files on Steam Cloud.");
greenworks.fileShare( greenworks.fileShare(
file_name,
function () {
greenworks.fileShare(
image_name,
function () {
next_process_func();
},
function (err) {
error_process(err, error_callback);
},
);
},
function (err) {
error_process(err, error_callback);
},
);
}
// Publishing user generated content(ugc) to Steam contains following steps:
// 1. Save file and image to Steam Cloud.
// 2. Share the file and image.
// 3. publish the file to workshop.
greenworks.ugcPublish = function (
file_name, file_name,
function () { title,
greenworks.fileShare( description,
image_name,
success_callback,
error_callback,
progress_callback,
) {
var publish_file_process = function () {
if (progress_callback) progress_callback("Completed on sharing files.");
greenworks.publishWorkshopFile(
file_name,
image_name, image_name,
function () { title,
next_process_func(); description,
function (publish_file_id) {
success_callback(publish_file_id);
}, },
function (err) { function (err) {
error_process(err, error_callback); error_process(err, error_callback);
}, },
); );
}, };
function (err) { greenworks.saveFilesToCloud(
error_process(err, error_callback); [file_name, image_name],
}, function () {
); file_share_process(file_name, image_name, publish_file_process, error_callback, progress_callback);
},
function (err) {
error_process(err, error_callback);
},
);
};
// Update publish ugc steps:
// 1. Save new file and image to Steam Cloud.
// 2. Share file and images.
// 3. Update published file.
greenworks.ugcPublishUpdate = function (
published_file_id,
file_name,
title,
description,
image_name,
success_callback,
error_callback,
progress_callback,
) {
var update_published_file_process = function () {
if (progress_callback) progress_callback("Completed on sharing files.");
greenworks.updatePublishedWorkshopFile(
published_file_id,
file_name,
image_name,
title,
description,
function () {
success_callback();
},
function (err) {
error_process(err, error_callback);
},
);
};
greenworks.saveFilesToCloud(
[file_name, image_name],
function () {
file_share_process(file_name, image_name, update_published_file_process, error_callback, progress_callback);
},
function (err) {
error_process(err, error_callback);
},
);
};
// Greenworks Utils APIs implmentation.
greenworks.Utils.move = function (source_dir, target_dir, success_callback, error_callback) {
fs.rename(source_dir, target_dir, function (err) {
if (err) {
if (error_callback) error_callback(err);
return;
}
if (success_callback) success_callback();
});
};
greenworks.init = function () {
if (this.initAPI()) return true;
if (!this.isSteamRunning()) throw new Error("Steam initialization failed. Steam is not running.");
var appId;
try {
appId = fs.readFileSync("steam_appid.txt", "utf8");
} catch (e) {
throw new Error(
"Steam initialization failed. Steam is running," +
"but steam_appid.txt is missing. Expected to find it in: " +
require("path").resolve("steam_appid.txt"),
);
}
if (!/^\d+ *\r?\n?$/.test(appId)) {
throw new Error(
"Steam initialization failed. " +
"steam_appid.txt appears to be invalid; " +
"it should contain a numeric ID: " +
appId,
);
}
throw new Error(
"Steam initialization failed, but Steam is running, " +
"and steam_appid.txt is present and valid." +
"Maybe that's not really YOUR app ID? " +
appId.trim(),
);
};
var EventEmitter = require("events").EventEmitter;
greenworks.__proto__ = EventEmitter.prototype;
EventEmitter.call(greenworks);
greenworks._steam_events.on = function () {
greenworks.emit.apply(greenworks, arguments);
};
process.versions["greenworks"] = greenworks._version;
} }
// Publishing user generated content(ugc) to Steam contains following steps:
// 1. Save file and image to Steam Cloud.
// 2. Share the file and image.
// 3. publish the file to workshop.
greenworks.ugcPublish = function (
file_name,
title,
description,
image_name,
success_callback,
error_callback,
progress_callback,
) {
var publish_file_process = function () {
if (progress_callback) progress_callback("Completed on sharing files.");
greenworks.publishWorkshopFile(
file_name,
image_name,
title,
description,
function (publish_file_id) {
success_callback(publish_file_id);
},
function (err) {
error_process(err, error_callback);
},
);
};
greenworks.saveFilesToCloud(
[file_name, image_name],
function () {
file_share_process(file_name, image_name, publish_file_process, error_callback, progress_callback);
},
function (err) {
error_process(err, error_callback);
},
);
};
// Update publish ugc steps:
// 1. Save new file and image to Steam Cloud.
// 2. Share file and images.
// 3. Update published file.
greenworks.ugcPublishUpdate = function (
published_file_id,
file_name,
title,
description,
image_name,
success_callback,
error_callback,
progress_callback,
) {
var update_published_file_process = function () {
if (progress_callback) progress_callback("Completed on sharing files.");
greenworks.updatePublishedWorkshopFile(
published_file_id,
file_name,
image_name,
title,
description,
function () {
success_callback();
},
function (err) {
error_process(err, error_callback);
},
);
};
greenworks.saveFilesToCloud(
[file_name, image_name],
function () {
file_share_process(file_name, image_name, update_published_file_process, error_callback, progress_callback);
},
function (err) {
error_process(err, error_callback);
},
);
};
// Greenworks Utils APIs implmentation.
greenworks.Utils.move = function (source_dir, target_dir, success_callback, error_callback) {
fs.rename(source_dir, target_dir, function (err) {
if (err) {
if (error_callback) error_callback(err);
return;
}
if (success_callback) success_callback();
});
};
greenworks.init = function () {
if (this.initAPI()) return true;
if (!this.isSteamRunning()) throw new Error("Steam initialization failed. Steam is not running.");
var appId;
try {
appId = fs.readFileSync("steam_appid.txt", "utf8");
} catch (e) {
throw new Error(
"Steam initialization failed. Steam is running," +
"but steam_appid.txt is missing. Expected to find it in: " +
require("path").resolve("steam_appid.txt"),
);
}
if (!/^\d+ *\r?\n?$/.test(appId)) {
throw new Error(
"Steam initialization failed. " +
"steam_appid.txt appears to be invalid; " +
"it should contain a numeric ID: " +
appId,
);
}
throw new Error(
"Steam initialization failed, but Steam is running, " +
"and steam_appid.txt is present and valid." +
"Maybe that's not really YOUR app ID? " +
appId.trim(),
);
};
var EventEmitter = require("events").EventEmitter;
greenworks.__proto__ = EventEmitter.prototype;
EventEmitter.call(greenworks);
greenworks._steam_events.on = function () {
greenworks.emit.apply(greenworks, arguments);
};
process.versions["greenworks"] = greenworks._version;
module.exports = greenworks; module.exports = greenworks;

@ -25,7 +25,7 @@ process.on("uncaughtException", function () {
// We want to fail gracefully if we cannot connect to Steam // We want to fail gracefully if we cannot connect to Steam
try { try {
if (greenworks.init()) { if (greenworks && greenworks.init()) {
log.info("Steam API has been initialized."); log.info("Steam API has been initialized.");
} else { } else {
const error = "Steam API has failed to initialize."; const error = "Steam API has failed to initialize.";

@ -8,6 +8,39 @@ const storage = require("./storage");
const config = new Config(); const config = new Config();
function getMenu(window) { function getMenu(window) {
const canZoomIn = utils.getZoomFactor() <= 2;
const zoomIn = () => {
const currentZoom = utils.getZoomFactor();
const newZoom = currentZoom + 0.1;
if (newZoom <= 2.0) {
utils.setZoomFactor(window, newZoom);
refreshMenu(window);
} else {
log.log("Max zoom out");
utils.writeToast(window, "Cannot zoom in anymore", "warning");
}
};
const canZoomOut = utils.getZoomFactor() >= 0.5;
const zoomOut = () => {
const currentZoom = utils.getZoomFactor();
const newZoom = currentZoom - 0.1;
if (newZoom >= 0.5) {
utils.setZoomFactor(window, newZoom);
refreshMenu(window);
} else {
log.log("Max zoom in");
utils.writeToast(window, "Cannot zoom out anymore", "warning");
}
};
const canResetZoom = utils.getZoomFactor() !== 1;
const resetZoom = () => {
utils.setZoomFactor(window, 1);
refreshMenu(window);
log.log("Reset zoom");
};
return Menu.buildFromTemplate([ return Menu.buildFromTemplate([
{ {
label: "File", label: "File",
@ -289,45 +322,45 @@ function getMenu(window) {
submenu: [ submenu: [
{ {
label: "Zoom In", label: "Zoom In",
enabled: utils.getZoomFactor() <= 2, enabled: canZoomIn,
accelerator: "CommandOrControl+numadd", accelerator: "CommandOrControl+numadd",
click: () => { click: zoomIn,
const currentZoom = utils.getZoomFactor(); },
const newZoom = currentZoom + 0.1; {
if (newZoom <= 2.0) { label: "Zoom In (non numpad)",
utils.setZoomFactor(window, newZoom); enabled: canZoomIn,
refreshMenu(window); visible: false,
} else { accelerator: "CommandOrControl+Plus",
log.log("Max zoom out"); acceleratorWorksWhenHidden: true,
utils.writeToast(window, "Cannot zoom in anymore", "warning"); click: zoomIn,
}
},
}, },
{ {
label: "Zoom Out", label: "Zoom Out",
enabled: utils.getZoomFactor() >= 0.5, enabled: canZoomOut,
accelerator: "CommandOrControl+numsub", accelerator: "CommandOrControl+numsub",
click: () => { click: zoomOut,
const currentZoom = utils.getZoomFactor(); },
const newZoom = currentZoom - 0.1; {
if (newZoom >= 0.5) { label: "Zoom Out (non numpad)",
utils.setZoomFactor(window, newZoom); enabled: canZoomOut,
refreshMenu(window); accelerator: "CommandOrControl+-",
} else { visible: false,
log.log("Max zoom in"); acceleratorWorksWhenHidden: true,
utils.writeToast(window, "Cannot zoom out anymore", "warning"); click: zoomOut,
}
},
}, },
{ {
label: "Reset Zoom", label: "Reset Zoom",
enabled: utils.getZoomFactor() !== 1, enabled: canResetZoom,
accelerator: "CommandOrControl+num0", accelerator: "CommandOrControl+num0",
click: () => { click: resetZoom,
utils.setZoomFactor(window, 1); },
refreshMenu(window); {
log.log("Reset zoom"); label: "Reset Zoom (non numpad)",
}, enabled: canResetZoom,
accelerator: "CommandOrControl+0",
visible: false,
acceleratorWorksWhenHidden: true,
click: resetZoom,
}, },
], ],
}, },