Commit Graph

5275 Commits

Author SHA1 Message Date
Martin Fournier
d386528627 Add support for Steam Cloud & local filesystem
Adds actions to save the game's data directly in the filesystem and/or
into Steam Cloud. Them game will push an event with the save data
whenever the game is saved. Electron will use that data to persist it
into the User Data folder, until the folder reaches a certain size.
Once over the quota, it's going to remove previous saves.

Files are grouped according the the player's identifier, ensuring
backups off different playthroughs if importing.

Optionally, the file will be gzipped before saving to disk, largely
reducing file size.

Adds a way to save & load from Steam Cloud, currently manually only.

When loading a save, it'll trigger the new "Import Data Comparison" page
to accept or cancel the import.

When saving the game, it will save to Steam Cloud & to filesystem if the
options are enabled.

Add automatic game restore

Detects when the player has access to a newer game that has been saved
more recently than the one being loaded. It checks both in the Steam
Cloud and on the local filesystem. Adds an option to disable the
feature.

- Adds a "Save Game" menu item that triggers the game's save.
- Adds a "Export Game" menu item that triggers the download file popup.
- Adds a "Export Scripts" menu item that triggers the "download *"
terminal command.
- Adds a "Load Last Save" menu item that loads the latest file modified
in the user data folder.
- Adds a "Load from Steam Cloud" menu item.
- Adds a "Load From File" menu item that popups a file selector & loads
the file.
- Adds settings for "Saves Compression (.gz)", "Auto-save Backups" &
"Auto-save to Steam", toggleable through the menu.
- Adds a "Open Game Data","Open Saves", "Open Logs" & "Open User Data" menu items.
- Adds a "Quit" menu item.
2022-01-26 03:56:19 -05:00
Martin Fournier
855a4e622d Add Electron preload script to allow communication
Adds a channel to communicate between the main process & the renderer
process, so that the game can easily ship data back to the main process.

It uses the Electron contextBridge & ipcRenderer/ipcMain.

Connects those events to various save functions. Adds triggered events
on game save, game load, and imported game. Adds way for the Electron
app to ask for certain actions or data.

Hook handlers to disable automatic restore

Allows to temporarily disable restore when the game just did an import
or deleted a save game. Prevents looping screens.
2022-01-26 03:56:19 -05:00
Martin Fournier
26432082e2 Add an import save comparison page
This adds a new page reachable from the import save file
options menu. It shows the difference between the current save
and the data that is being imported, for confirmation.

Includes an "automatic" variant, which has different wording for when
Electron decides it has access to a newer version of the game.

While in this screen, the autosave is disabled.

This also adds a new BypassWrapper component around the game's tree.
It allows for content to be displayed without rendering the nested
pages (import, recovery). This prevents player scripts from messing
with the screen.
2022-01-26 03:56:17 -05:00
Martin Fournier
974344545d Move import save functionality into SaveObject
Adds a lot of metadata to be able to easily compare the new save to the
current player.

- Adds lastSaved & identifier to the PlayerObject
- Includes a hash method used to generate an identifier
2022-01-26 03:42:52 -05:00
Martin Fournier
588c3e42d7 Refactor download.ts (export "download *" command)
Export the "download *" helper to be able to be called from Electron.
2022-01-26 03:40:22 -05:00
Martin Fournier
5c1504d7e4 Include lodash in Electron
Will be used to debounce function calls. Is a prerequisite for a few
other fixes.
2022-01-26 03:40:22 -05:00
Martin Fournier
ca5f51b7f0 Keep Electron window position in settings
This allows the app to be kept at the same location it was previously.
2022-01-26 03:39:50 -05:00
Martin Fournier
dc2f00057a Include lodash in Electron
Will be used to debounce function calls. Is a prerequisite for a few
other fixes.
2022-01-26 03:38:22 -05:00
nickofolas
41eac2e775 Adjust sizing for corp and gang tabs 2022-01-26 00:53:17 -06:00
nickofolas
c0a27e7d66 Active scripts tab sizing 2022-01-26 00:53:16 -06:00
nickofolas
e81bd48ca6 Update Tab(s) design 2022-01-26 00:53:16 -06:00
Olivier Gagnon
022dd5d7d7 fix compile error 2022-01-26 00:58:02 -05:00
hydroflame
d27bac9be6
Merge pull request #2716 from lordducky/enhance-api-server
Enhance api server
2022-01-26 00:53:17 -05:00
hydroflame
2f36fb107f
Merge pull request #2803 from MartinFournier/feat/github-actions
Adds GitHub workflows to fetch a changelog & to bump the app's version
2022-01-26 00:52:06 -05:00
hydroflame
9fa706073f
Merge pull request #2745 from jamie-mac/fix/roulette-result
Fix incorrect result being detected on the roulette table
2022-01-26 00:51:03 -05:00
hydroflame
1a34d5e363
Merge pull request #2703 from lethern/patch-1
purchaseServer error message fix + small docs change
2022-01-26 00:50:42 -05:00
hydroflame
a05ecc76c2
Merge pull request #2727 from nickofolas/feature/editor-tab-actions
Script Editor Tab Actions
2022-01-26 00:50:23 -05:00
hydroflame
3654a238ae
Merge pull request #2726 from SagePtr/recheck-achievements
Force achievements recalculation on bitnode completion
2022-01-26 00:50:06 -05:00
hydroflame
6e33417399
Merge pull request #2736 from MartinFournier/feature/sleeve-bonus-time
Display bonus time in sleeve detailed stats panel
2022-01-26 00:49:20 -05:00
hydroflame
ae2c6a4c7c
Merge pull request #2737 from pd/crimestats-name
NetscriptDefinitions: Fix type of CrimeStats.name
2022-01-26 00:49:04 -05:00
hydroflame
4a1e3e75ec
Merge pull request #2760 from jamie-mac/fix/slots
Fixes issue with incorrect result in slots, and corrects the direction of the reel spin
2022-01-26 00:48:54 -05:00
hydroflame
ac9381e30d
Merge pull request #2784 from dwRchyngqxs/blackjack_precise_decks
Add the deck count for blackjack
2022-01-26 00:48:42 -05:00
hydroflame
7e81575cb5
Merge pull request #2782 from dwRchyngqxs/hacking_exp_mult
Fixed player hacking exp multiplier application
2022-01-26 00:48:09 -05:00
hydroflame
ea9871fef0
Merge pull request #2641 from MartinFournier/feature/save-command-history
Copy terminal command history into game save
2022-01-26 00:47:02 -05:00
hydroflame
acee3c2994
Merge pull request #2705 from pigalot/bug-corp-product-cost
BUG: Fix for corp product cost
2022-01-26 00:46:39 -05:00
hydroflame
7a5dfd0e72
Merge pull request #2707 from MartinFournier/feature/theme-browser
Add Theme Browser accessible from GameOptions
2022-01-26 00:46:17 -05:00
hydroflame
77ba45df40
Merge pull request #2735 from Ninetailed/ns_printf
Add ns.printf function
2022-01-26 00:45:18 -05:00
hydroflame
2fe8a334ef
Merge pull request #2747 from smolgumball/improve-faction-root
ui: cleanup styles + presentation in FactionsRoot.tsx
2022-01-26 00:44:55 -05:00
hydroflame
2ecc71ba28
Merge pull request #2738 from pd/corp-jsdoc
NetscriptDefinitions: fix jsdoc for Corp research functions
2022-01-26 00:44:43 -05:00
hydroflame
85a8036ecf
Merge pull request #2751 from nickofolas/improvement/ui-pass
UI Improvements Pass
2022-01-26 00:44:20 -05:00
hydroflame
6c3ad48ef5
Merge pull request #2763 from Ornedan/formulas-access-checks
Fix formulas access checks
2022-01-26 00:42:51 -05:00
hydroflame
44a6f1b5a8
Merge pull request #2775 from dwRchyngqxs/script_nan_fix
Fixed array comparison handling of NaN
2022-01-26 00:42:29 -05:00
hydroflame
64662df91e
Merge pull request #2764 from zeddrak/patch-1
HacknetServer Grow/Weaken error messages
2022-01-26 00:42:11 -05:00
hydroflame
80396a3416
Merge pull request #2769 from zeddrak/patch-2
In response to Issue #2732
2022-01-26 00:41:51 -05:00
hydroflame
16b959338b
Merge pull request #2772 from ChrissiQ/patch-1
Update spawn.rst
2022-01-26 00:41:14 -05:00
hydroflame
2c9302ee53
Merge pull request #2778 from MartinFournier/feat/electron-build-script
Modify electron build script to allow platform selection
2022-01-26 00:40:49 -05:00
hydroflame
bbef8452b3
Merge pull request #2771 from zeddrak/patch-3
Documentation edit in response to Issue #2678
2022-01-26 00:40:28 -05:00
hydroflame
862835e452
Merge pull request #2777 from MartinFournier/feat/electron-linux-icon
Add missing steam app icon for linux
2022-01-26 00:40:18 -05:00
hydroflame
de122eca73
Merge pull request #2779 from MartinFournier/fix/electron-mac-crash
Fix 'Steam not running' popup causing crash on MacOS
2022-01-26 00:36:57 -05:00
hydroflame
c2c31eede6
Merge pull request #2816 from danielyxie/revert-2785-improve-server-grow-low-money
Revert "Use min `server.moneyAvailable` of 1$ when growing server money"
2022-01-26 00:35:48 -05:00
hydroflame
5e10f7df1f
Revert "Use min server.moneyAvailable of 1$ when growing server money" 2022-01-26 00:35:42 -05:00
hydroflame
0a0b7db06f
Merge pull request #2785 from davidpa9708/improve-server-grow-low-money
Use min `server.moneyAvailable` of 1$ when growing server money
2022-01-26 00:34:52 -05:00
hydroflame
d5b937aaef
Merge pull request #2788 from MartinFournier/fix/electron-deprec-fix
Set nativeWindowOpen to fix deprecation warning
2022-01-26 00:33:16 -05:00
hydroflame
939136a32a
Merge pull request #2807 from dowinter/dev
Fix augmentation order when set to alphabetically
2022-01-26 00:32:59 -05:00
hydroflame
be69b5ef9c
Merge pull request #2792 from PSEUDOSTAGE/patch-1
Add a spoiler warning to Factions page
2022-01-26 00:32:33 -05:00
hydroflame
0dd339bb4d
Merge pull request #2790 from SlyCedix/travelToCity-money-fix
Make travelToCity throw on invalid city name and return false on no money
2022-01-26 00:32:25 -05:00
hydroflame
63e2250c15
Merge pull request #2796 from fearnlj01/patch-1
Band-aid fix for visible 'spoilers' in factions RTD
2022-01-26 00:32:12 -05:00
hydroflame
13453e678f
Merge pull request #2809 from pd/corp-api-leftovers
Corp API: Add setSmartSupplyUseLeftovers
2022-01-26 00:31:58 -05:00
hydroflame
a6fb6df04f
Merge pull request #2811 from reasonablytall/dev
Indicate that getRunningScript can return null
2022-01-26 00:31:26 -05:00
hydroflame
0f2dd23eba
Merge pull request #2813 from jamie-mac/fix/cypress-tests
Fix: Cypress tests for dev (updates to match UI changes)
2022-01-26 00:31:00 -05:00