Added export bonus

This commit is contained in:
Olivier Gagnon 2021-05-10 18:26:50 -04:00
parent 2bd4892fa8
commit 0f2b7517b4
4 changed files with 50 additions and 4 deletions

@ -12,6 +12,7 @@ import { Player } from "../Player";
import { prestigeAugmentation } from "../Prestige";
import { saveObject } from "../SaveObject";
import { Page, routing } from "../ui/navigationTracking";
import { onExport } from "../ExportBonus";
import { dialogBoxCreate } from "../../utils/DialogBox";
import { clearObject } from "../../utils/helpers/clearObject";
@ -2077,9 +2078,14 @@ export function displayAugmentationsContent(contentEl) {
if (!routing.isOn(Page.Augmentations)) { return; }
if (!(contentEl instanceof HTMLElement)) { return; }
function backup() {
saveObject.exportGame();
onExport(Player);
}
ReactDOM.render(
<AugmentationsRoot
exportGameFn={saveObject.exportGame.bind(saveObject)}
exportGameFn={backup}
installAugmentationsFn={installAugmentations}
/>,
contentEl,

@ -10,6 +10,8 @@ import { PurchasedAugmentations } from "./PurchasedAugmentations";
import { Player } from "../../Player";
import { StdButton } from "../../ui/React/StdButton";
import { LastExportBonus, canGetBonus } from "../../ExportBonus";
import { convertTimeMsToTimeElapsedString } from "../../../utils/StringHelperFunctions";
type IProps = {
exportGameFn: () => void;
@ -17,15 +19,31 @@ type IProps = {
}
type IState = {
rerender: boolean;
}
export class AugmentationsRoot extends React.Component<IProps, IState> {
constructor(props: IProps) {
super(props);
this.state = {
rerender: false,
};
this.export = this.export.bind(this);
}
export() {
this.props.exportGameFn();
this.setState({
rerender: !this.state.rerender,
});
}
render(): React.ReactNode {
function exportBonusStr(): string {
if(canGetBonus()) return "(+1 favor to all factions)";
return "";
}
return (
<div id="augmentations-content">
<h1>Purchased Augmentations</h1>
@ -60,8 +78,8 @@ export class AugmentationsRoot extends React.Component<IProps, IState> {
<StdButton
addClasses="flashing-button"
onClick={this.props.exportGameFn}
text="Backup Save (Export)"
onClick={this.export}
text={`Backup Save ${exportBonusStr()}`}
tooltip="It's always a good idea to backup/export your save!"
/>
<PurchasedAugmentations />

19
src/ExportBonus.tsx Normal file

@ -0,0 +1,19 @@
import { Factions } from "./Faction/Factions";
import { IPlayer } from "./PersonObjects/IPlayer";
export let LastExportBonus: number = 0;
const bonusTimer = 24*60*60*1000; // 24h
export function canGetBonus(): boolean {
const now = (new Date()).getTime()
if(now - LastExportBonus > bonusTimer) return true;
return false;
}
export function onExport(p: IPlayer): void {
if(!canGetBonus()) return;
for (const facName of p.factions) {
Factions[facName].favor++;
}
LastExportBonus = (new Date()).getTime();
}

@ -31,6 +31,7 @@ import { loadStockMarket, StockMarket } from "./StockMarket/StockMarket";
import { createStatusText } from "./ui/createStatusText";
import { setTimeoutRef } from "./utils/SetTimeoutRef";
import { LastExportBonus } from "./ExportBonus";
import { dialogBoxCreate } from "../utils/DialogBox";
import { gameOptionsBoxClose } from "../utils/GameOptions";
@ -66,6 +67,7 @@ function BitburnerSaveObject() {
this.FconfSettingsSave = "";
this.VersionSave = "";
this.AllGangsSave = "";
this.LastExportBonus = "";
}
BitburnerSaveObject.prototype.getSaveString = function() {
@ -94,6 +96,7 @@ BitburnerSaveObject.prototype.getSaveString = function() {
this.SettingsSave = JSON.stringify(Settings);
this.FconfSettingsSave = JSON.stringify(FconfSettings);
this.VersionSave = JSON.stringify(CONSTANTS.Version);
this.LastExportBonus = JSON.stringify(LastExportBonus);
if (Player.inGang()) {
this.AllGangsSave = JSON.stringify(AllGangs);
}