From cc5e89208efdaee3f001d86a1dea29b8a372f90f Mon Sep 17 00:00:00 2001 From: nickofolas Date: Wed, 4 May 2022 12:44:48 -0500 Subject: [PATCH] Convert WIP root to use switch statement --- src/ui/WorkInProgressRoot.tsx | 611 ++++++++++++++++++---------------- 1 file changed, 320 insertions(+), 291 deletions(-) diff --git a/src/ui/WorkInProgressRoot.tsx b/src/ui/WorkInProgressRoot.tsx index c10cb152e..bc266c22d 100644 --- a/src/ui/WorkInProgressRoot.tsx +++ b/src/ui/WorkInProgressRoot.tsx @@ -138,337 +138,366 @@ export function WorkInProgressRoot(): React.ReactElement { let workInfo: IWorkInfo | null; - if (player.workType == CONSTANTS.WorkTypeFaction) { - const faction = Factions[player.currentWorkFactionName]; - if (!faction) { + switch (player.workType) { + case CONSTANTS.WorkTypeFaction: { + const faction = Factions[player.currentWorkFactionName]; + if (!faction) { + workInfo = { + buttons: { + cancel: () => router.toFactions(), + }, + title: + `You have not joined ${player.currentWorkFactionName || "(Faction not found)"} at this time,` + + " please try again if you think this should have worked", + + stopText: "Back to Factions", + }; + } + + function cancel(): void { + router.toFaction(faction); + player.finishFactionWork(true); + } + function unfocus(): void { + router.toFaction(faction); + player.stopFocusing(); + } + workInfo = { buttons: { - cancel: () => router.toFactions(), + cancel: cancel, + unfocus: unfocus, }, - title: - `You have not joined ${player.currentWorkFactionName || "(Faction not found)"} at this time,` + - " please try again if you think this should have worked", + title: ( + <> + You are currently {player.currentWorkFactionDescription} for your faction {faction.name} + + ), - stopText: "Back to Factions", + description: ( + <> + Current Faction Reputation: + + ), + gains: [ + player.workMoneyGained > 0 ? ( + + + ( + ) + + + ) : ( + <> + ), + + + ( + ) + + , + ...expGains, + ], + progress: { + elapsed: player.timeWorked, + }, + + stopText: "Stop Faction work", }; + + break; } - function cancel(): void { - router.toFaction(faction); - player.finishFactionWork(true); - } - function unfocus(): void { - router.toFaction(faction); - player.stopFocusing(); + case CONSTANTS.WorkTypeStudyClass: { + const className = player.className; + function cancel(): void { + player.finishClass(true); + router.toCity(); + } + + function unfocus(): void { + router.toCity(); + player.stopFocusing(); + } + + let stopText = ""; + if ( + className === CONSTANTS.ClassGymStrength || + className === CONSTANTS.ClassGymDefense || + className === CONSTANTS.ClassGymDexterity || + className === CONSTANTS.ClassGymAgility + ) { + stopText = "Stop training at gym"; + } else { + stopText = "Stop taking course"; + } + + workInfo = { + buttons: { + cancel: cancel, + unfocus: unfocus, + }, + title: ( + <> + You are currently {className} + + ), + + gains: [ + + + ( + ) + + , + ...expGains, + ], + progress: { + elapsed: player.timeWorked, + }, + + stopText: stopText, + }; + + break; } - workInfo = { - buttons: { - cancel: cancel, - unfocus: unfocus, - }, - title: ( - <> - You are currently {player.currentWorkFactionDescription} for your faction {faction.name} - - ), + case CONSTANTS.WorkTypeCompany: { + const comp = Companies[player.companyName]; + if (comp == null || !(comp instanceof Company)) { + workInfo = { + buttons: { + cancel: () => router.toTerminal(), + }, + title: + `You cannot work for ${player.companyName || "(Company not found)"} at this time,` + + " please try again if you think this should have worked", - description: ( - <> - Current Faction Reputation: - - ), - gains: [ - player.workMoneyGained > 0 ? ( + stopText: "Back to Terminal", + }; + } + + const companyRep = comp.playerReputation; + + function cancel(): void { + player.finishWork(true); + router.toJob(); + } + function unfocus(): void { + player.stopFocusing(); + router.toJob(); + } + + const position = player.jobs[player.companyName]; + + const penalty = player.cancelationPenalty(); + + const penaltyString = penalty === 0.5 ? "half" : "three-quarters"; + + workInfo = { + buttons: { + cancel: cancel, + unfocus: unfocus, + }, + title: ( + <> + You are currently working as a {position} at {player.companyName} + + ), + + description: ( + <> + Current Company Reputation: + + ), + gains: [ () - - ) : ( - <> - ), - - - ( - ) - - , - ...expGains, - ], - progress: { - elapsed: player.timeWorked, - }, + , + + + ( + ) + + , + ...expGains, + ], + progress: { + elapsed: player.timeWorked, + }, - stopText: "Stop Faction work", - }; - } else if (player.className !== "") { - const className = player.className; - function cancel(): void { - player.finishClass(true); - router.toCity(); + stopText: "Stop working", + stopTooltip: + "You will automatically finish after working for 8 hours. You can cancel earlier if you wish" + + ` but you will only gain ${penaltyString} of the reputation you've earned so far.`, + }; + + break; } - function unfocus(): void { - router.toCity(); - player.stopFocusing(); - } + case CONSTANTS.WorkTypeCompanyPartTime: { + function cancel(): void { + player.finishWorkPartTime(true); + router.toJob(); + } + function unfocus(): void { + player.stopFocusing(); + router.toJob(); + } + const comp = Companies[player.companyName]; + let companyRep = 0; + if (comp == null || !(comp instanceof Company)) { + throw new Error(`Could not find Company: ${player.companyName}`); + } + companyRep = comp.playerReputation; - let stopText = ""; - if ( - className == CONSTANTS.ClassGymStrength || - className == CONSTANTS.ClassGymDefense || - className == CONSTANTS.ClassGymDexterity || - className == CONSTANTS.ClassGymAgility - ) { - stopText = "Stop training at gym"; - } else { - stopText = "Stop taking course"; - } + const position = player.jobs[player.companyName]; - workInfo = { - buttons: { - cancel: cancel, - unfocus: unfocus, - }, - title: ( - <> - You are currently {className} - - ), - - gains: [ - - - () - - , - ...expGains, - ], - progress: { - elapsed: player.timeWorked, - }, - - stopText: stopText, - }; - } else if (player.workType == CONSTANTS.WorkTypeCompany) { - const comp = Companies[player.companyName]; - if (comp == null || !(comp instanceof Company)) { workInfo = { buttons: { - cancel: () => router.toTerminal(), + cancel: cancel, + unfocus: unfocus, }, - title: - `You cannot work for ${player.companyName || "(Company not found)"} at this time,` + - " please try again if you think this should have worked", + title: ( + <> + You are currently working as a {position} at {player.companyName} + + ), - stopText: "Back to Terminal", + description: ( + <> + Current Company Reputation: + + ), + gains: [ + + + () + + , + + + ( + ) + + , + ...expGains, + ], + progress: { + elapsed: player.timeWorked, + }, + + stopText: "Stop working", + stopTooltip: + "You will automatically finish after working for 8 hours. You can cancel earlier if you wish" + + " and there will be no penalty because this is a part-time job.", }; + + break; } - const companyRep = comp.playerReputation; + case CONSTANTS.WorkTypeCrime: { + const completion = Math.round((player.timeWorked / player.timeNeededToCompleteWork) * 100); - function cancel(): void { - player.finishWork(true); - router.toJob(); - } - function unfocus(): void { - player.stopFocusing(); - router.toJob(); - } - - const position = player.jobs[player.companyName]; - - const penalty = player.cancelationPenalty(); - - const penaltyString = penalty === 0.5 ? "half" : "three-quarters"; - - workInfo = { - buttons: { - cancel: cancel, - unfocus: unfocus, - }, - title: ( - <> - You are currently working as a {position} at {player.companyName} - - ), - - description: ( - <> - Current Company Reputation: - - ), - gains: [ - - - () - - , - - - ( - ) - - , - ...expGains, - ], - progress: { - elapsed: player.timeWorked, - }, - - stopText: "Stop working", - stopTooltip: - "You will automatically finish after working for 8 hours. You can cancel earlier if you wish" + - ` but you will only gain ${penaltyString} of the reputation you've earned so far.`, - }; - } else if (player.workType == CONSTANTS.WorkTypeCompanyPartTime) { - function cancel(): void { - player.finishWorkPartTime(true); - router.toJob(); - } - function unfocus(): void { - player.stopFocusing(); - router.toJob(); - } - const comp = Companies[player.companyName]; - let companyRep = 0; - if (comp == null || !(comp instanceof Company)) { - throw new Error(`Could not find Company: ${player.companyName}`); - } - companyRep = comp.playerReputation; - - const position = player.jobs[player.companyName]; - - workInfo = { - buttons: { - cancel: cancel, - unfocus: unfocus, - }, - title: ( - <> - You are currently working as a {position} at {player.companyName} - - ), - - description: ( - <> - Current Company Reputation: - - ), - gains: [ - - - () - - , - - - ( - ) - - , - ...expGains, - ], - progress: { - elapsed: player.timeWorked, - }, - - stopText: "Stop working", - stopTooltip: - "You will automatically finish after working for 8 hours. You can cancel earlier if you wish" + - " and there will be no penalty because this is a part-time job.", - }; - } else if (player.crimeType !== "") { - const completion = Math.round((player.timeWorked / player.timeNeededToCompleteWork) * 100); - - workInfo = { - buttons: { - cancel: () => { - router.toLocation(Locations[LocationName.Slums]); - player.finishCrime(true); + workInfo = { + buttons: { + cancel: () => { + router.toLocation(Locations[LocationName.Slums]); + player.finishCrime(true); + }, }, - }, - title: `You are attempting to ${player.crimeType}`, + title: `You are attempting to ${player.crimeType}`, - progress: { - remaining: player.timeNeededToCompleteWork - player.timeWorked, - percentage: completion, - }, + progress: { + remaining: player.timeNeededToCompleteWork - player.timeWorked, + percentage: completion, + }, - stopText: "Cancel crime", - }; - } else if (player.createProgramName !== "") { - function cancel(): void { - player.finishCreateProgramWork(true); - router.toTerminal(); - } - function unfocus(): void { - router.toTerminal(); - player.stopFocusing(); + stopText: "Cancel crime", + }; + + break; } - const completion = (player.timeWorkedCreateProgram / player.timeNeededToCompleteWork) * 100; + case CONSTANTS.WorkTypeCreateProgram: { + function cancel(): void { + player.finishCreateProgramWork(true); + router.toTerminal(); + } + function unfocus(): void { + router.toTerminal(); + player.stopFocusing(); + } - workInfo = { - buttons: { - cancel: cancel, - unfocus: unfocus, - }, - title: ( - <> - You are currently working on coding {player.createProgramName} - - ), + const completion = (player.timeWorkedCreateProgram / player.timeNeededToCompleteWork) * 100; - progress: { - elapsed: player.timeWorked, - percentage: completion, - }, + workInfo = { + buttons: { + cancel: cancel, + unfocus: unfocus, + }, + title: ( + <> + You are currently working on coding {player.createProgramName} + + ), - stopText: "Stop creating program", - stopTooltip: "Your work will be saved and you can return to complete the program later.", - }; - } else if (player.graftAugmentationName !== "") { - function cancel(): void { - player.finishGraftAugmentationWork(true); - router.toTerminal(); - } - function unfocus(): void { - router.toTerminal(); - player.stopFocusing(); + progress: { + elapsed: player.timeWorked, + percentage: completion, + }, + + stopText: "Stop creating program", + stopTooltip: "Your work will be saved and you can return to complete the program later.", + }; + + break; } - const completion = (player.timeWorkedGraftAugmentation / player.timeNeededToCompleteWork) * 100; + case CONSTANTS.WorkTypeGraftAugmentation: { + function cancel(): void { + player.finishGraftAugmentationWork(true); + router.toTerminal(); + } + function unfocus(): void { + router.toTerminal(); + player.stopFocusing(); + } - workInfo = { - buttons: { - cancel: cancel, - unfocus: unfocus, - }, - title: ( - <> - You are currently working on grafting {player.graftAugmentationName} - - ), + const completion = (player.timeWorkedGraftAugmentation / player.timeNeededToCompleteWork) * 100; - progress: { - elapsed: player.timeWorked, - percentage: completion, - }, + workInfo = { + buttons: { + cancel: cancel, + unfocus: unfocus, + }, + title: ( + <> + You are currently working on grafting {player.graftAugmentationName} + + ), - stopText: "Stop grafting", - stopTooltip: ( - <> - If you cancel, your work will not be saved, and the money you spent will not be returned - - ), - }; - } else if (!player.workType) { - router.toTerminal(); - workInfo = null; - } else { - workInfo = null; + progress: { + elapsed: player.timeWorked, + percentage: completion, + }, + + stopText: "Stop grafting", + stopTooltip: ( + <> + If you cancel, your work will not be saved, and the money you spent will not be returned + + ), + }; + + break; + } + + default: + router.toTerminal(); + workInfo = null; } if (workInfo === null) {