This commit is contained in:
Olivier Gagnon
2021-09-09 22:57:37 -04:00
parent 7f1d39a298
commit cb31954b08
14 changed files with 221 additions and 146 deletions
+8 -25
View File
@@ -1,36 +1,20 @@
import React, { useState, useEffect } from "react";
import React, { useState } from "react";
import { Sleeve } from "../Sleeve";
import { SleeveTaskType } from "../SleeveTaskTypesEnum";
import { SleeveFaq } from "../data/SleeveFaq";
import { IPlayer } from "../../IPlayer";
import { CONSTANTS } from "../../../Constants";
import { Faction } from "../../../Faction/Faction";
import { Factions } from "../../../Faction/Factions";
import { FactionWorkType } from "../../../Faction/FactionWorkTypeEnum";
import { Crime } from "../../../Crime/Crime";
import { Crimes } from "../../../Crime/Crimes";
import { CityName } from "../../../Locations/data/CityNames";
import { LocationName } from "../../../Locations/data/LocationNames";
import { numeralWrapper } from "../../../ui/numeralFormat";
import { Page, routing } from "../../../ui/navigationTracking";
import { dialogBoxCreate } from "../../../../utils/DialogBox";
import { createProgressBarText } from "../../../../utils/helpers/createProgressBarText";
import { exceptionAlert } from "../../../../utils/helpers/exceptionAlert";
import { clearEventListeners } from "../../../../utils/uiHelpers/clearEventListeners";
import { createElement } from "../../../../utils/uiHelpers/createElement";
import { createOptionElement } from "../../../../utils/uiHelpers/createOptionElement";
import { createPopup } from "../../../ui/React/createPopup";
import { getSelectValue } from "../../../../utils/uiHelpers/getSelectData";
import { removeChildrenFromElement } from "../../../../utils/uiHelpers/removeChildrenFromElement";
import { removeElement } from "../../../../utils/uiHelpers/removeElement";
import { SleeveAugmentationsPopup } from "../ui/SleeveAugmentationsPopup";
import { TravelPopup } from "../ui/TravelPopup";
@@ -80,30 +64,29 @@ export function SleeveElem(props: IProps): React.ReactElement {
function setTask(): void {
props.sleeve.resetTaskStatus(); // sets to idle
let res;
switch (abc[0]) {
case "------":
break;
case "Work for Company":
res = props.sleeve.workForCompany(props.player, abc[1]);
props.sleeve.workForCompany(props.player, abc[1]);
break;
case "Work for Faction":
res = props.sleeve.workForFaction(props.player, abc[1], abc[2]);
props.sleeve.workForFaction(props.player, abc[1], abc[2]);
break;
case "Commit Crime":
res = props.sleeve.commitCrime(props.player, abc[1]);
props.sleeve.commitCrime(props.player, abc[1]);
break;
case "Take University Course":
res = props.sleeve.takeUniversityCourse(props.player, abc[2], abc[1]);
props.sleeve.takeUniversityCourse(props.player, abc[2], abc[1]);
break;
case "Workout at Gym":
res = props.sleeve.workoutAtGym(props.player, abc[2], abc[1]);
props.sleeve.workoutAtGym(props.player, abc[2], abc[1]);
break;
case "Shock Recovery":
res = props.sleeve.shockRecovery(props.player);
props.sleeve.shockRecovery(props.player);
break;
case "Synchronize":
res = props.sleeve.synchronize(props.player);
props.sleeve.synchronize(props.player);
break;
default:
console.error(`Invalid/Unrecognized taskValue in setSleeveTask(): ${abc[0]}`);
@@ -1,45 +1,7 @@
import React, { useState, useEffect } from "react";
import { Sleeve } from "../Sleeve";
import { SleeveTaskType } from "../SleeveTaskTypesEnum";
import { SleeveFaq } from "../data/SleeveFaq";
import { IPlayer } from "../../IPlayer";
import { Faction } from "../../../Faction/Faction";
import { Factions } from "../../../Faction/Factions";
import { FactionWorkType } from "../../../Faction/FactionWorkTypeEnum";
import { Crime } from "../../../Crime/Crime";
import { Crimes } from "../../../Crime/Crimes";
import { CityName } from "../../../Locations/data/CityNames";
import { LocationName } from "../../../Locations/data/LocationNames";
import { numeralWrapper } from "../../../ui/numeralFormat";
import { Page, routing } from "../../../ui/navigationTracking";
import { dialogBoxCreate } from "../../../../utils/DialogBox";
import { createProgressBarText } from "../../../../utils/helpers/createProgressBarText";
import { exceptionAlert } from "../../../../utils/helpers/exceptionAlert";
import { clearEventListeners } from "../../../../utils/uiHelpers/clearEventListeners";
import { createElement } from "../../../../utils/uiHelpers/createElement";
import { createOptionElement } from "../../../../utils/uiHelpers/createOptionElement";
import { createPopup } from "../../../ui/React/createPopup";
import { getSelectValue } from "../../../../utils/uiHelpers/getSelectData";
import { removeChildrenFromElement } from "../../../../utils/uiHelpers/removeChildrenFromElement";
import { removeElement } from "../../../../utils/uiHelpers/removeElement";
import { SleeveAugmentationsPopup } from "../ui/SleeveAugmentationsPopup";
import { TravelPopup } from "../ui/TravelPopup";
import { EarningsTableElement } from "../ui/EarningsTableElement";
import { Money } from "../../../ui/React/Money";
import { MoneyRate } from "../../../ui/React/MoneyRate";
import { ReputationRate } from "../../../ui/React/ReputationRate";
import { StatsElement } from "../ui/StatsElement";
import { MoreStatsContent } from "../ui/MoreStatsContent";
import { MoreEarningsContent } from "../ui/MoreEarningsContent";
import { SleeveElem } from "../ui/SleeveElem";
interface IProps {
+16 -18
View File
@@ -41,7 +41,7 @@ function possibleJobs(player: IPlayer, sleeve: Sleeve): string[] {
forbiddenCompanies.push(otherSleeve.currentTaskLocation);
}
}
let allJobs: string[] = Object.keys(player.jobs);
const allJobs: string[] = Object.keys(player.jobs);
for (let i = 0; i < allJobs.length; ++i) {
if (!forbiddenCompanies.includes(allJobs[i])) {
allJobs[i];
@@ -84,7 +84,7 @@ const tasks: {
["Shock Recovery"]: (player: IPlayer, sleeve: Sleeve) => ITaskDetails;
["Synchronize"]: (player: IPlayer, sleeve: Sleeve) => ITaskDetails;
} = {
"------": (player: IPlayer, sleeve: Sleeve): ITaskDetails => {
"------": (): ITaskDetails => {
return { first: ["------"], second: () => ["------"] };
},
"Work for Company": (player: IPlayer, sleeve: Sleeve): ITaskDetails => {
@@ -116,7 +116,7 @@ const tasks: {
},
};
},
"Commit Crime": (player: IPlayer, sleeve: Sleeve): ITaskDetails => {
"Commit Crime": (): ITaskDetails => {
return { first: Object.keys(Crimes), second: () => ["------"] };
},
"Take University Course": (player: IPlayer, sleeve: Sleeve): ITaskDetails => {
@@ -157,10 +157,10 @@ const tasks: {
return { first: gymSelectorOptions, second: () => gyms };
},
"Shock Recovery": (player: IPlayer, sleeve: Sleeve): ITaskDetails => {
"Shock Recovery": (): ITaskDetails => {
return { first: ["------"], second: () => ["------"] };
},
Synchronize: (player: IPlayer, sleeve: Sleeve): ITaskDetails => {
Synchronize: (): ITaskDetails => {
return { first: ["------"], second: () => ["------"] };
},
};
@@ -176,16 +176,14 @@ const canDo: {
["Shock Recovery"]: (player: IPlayer, sleeve: Sleeve) => boolean;
["Synchronize"]: (player: IPlayer, sleeve: Sleeve) => boolean;
} = {
["------"]: () => true,
["Work for Company"]: (player: IPlayer, sleeve: Sleeve) => possibleJobs(player, sleeve).length > 0,
["Work for Faction"]: (player: IPlayer, sleeve: Sleeve) => possibleFactions(player, sleeve).length > 0,
["Commit Crime"]: () => true,
["Take University Course"]: (player: IPlayer, sleeve: Sleeve) =>
[CityName.Aevum, CityName.Sector12, CityName.Volhaven].includes(sleeve.city),
["Workout at Gym"]: (player: IPlayer, sleeve: Sleeve) =>
[CityName.Aevum, CityName.Sector12, CityName.Volhaven].includes(sleeve.city),
["Shock Recovery"]: (player: IPlayer, sleeve: Sleeve) => sleeve.shock < 100,
["Synchronize"]: (player: IPlayer, sleeve: Sleeve) => sleeve.sync < 100,
"------": () => true,
"Work for Company": (player: IPlayer, sleeve: Sleeve) => possibleJobs(player, sleeve).length > 0,
"Work for Faction": (player: IPlayer, sleeve: Sleeve) => possibleFactions(player, sleeve).length > 0,
"Commit Crime": () => true,
"Take University Course": (player: IPlayer, sleeve: Sleeve) => [CityName.Aevum, CityName.Sector12, CityName.Volhaven].includes(sleeve.city),
"Workout at Gym": (player: IPlayer, sleeve: Sleeve) => [CityName.Aevum, CityName.Sector12, CityName.Volhaven].includes(sleeve.city),
"Shock Recovery": (player: IPlayer, sleeve: Sleeve) => sleeve.shock < 100,
Synchronize: (player: IPlayer, sleeve: Sleeve) => sleeve.sync < 100,
};
function getABC(sleeve: Sleeve): [string, string, string] {
@@ -194,7 +192,7 @@ function getABC(sleeve: Sleeve): [string, string, string] {
return ["------", "------", "------"];
case SleeveTaskType.Company:
return ["Work for Company", sleeve.currentTaskLocation, "------"];
case SleeveTaskType.Faction:
case SleeveTaskType.Faction: {
let workType = "";
switch (sleeve.factionWorkType) {
case FactionWorkType.Hacking:
@@ -208,6 +206,7 @@ function getABC(sleeve: Sleeve): [string, string, string] {
break;
}
return ["Work for Faction", sleeve.currentTaskLocation, workType];
}
case SleeveTaskType.Crime:
return ["Commit Crime", sleeve.crimeType, "------"];
case SleeveTaskType.Class:
@@ -227,8 +226,7 @@ export function TaskSelector(props: IProps): React.ReactElement {
const [s1, setS1] = useState(abc[1]);
const [s2, setS2] = useState(abc[2]);
const validActions = Object.keys(canDo).filter((k) =>
(canDo[k] as (player: IPlayer, sleeve: Sleeve) => boolean)(props.player, props.sleeve),
const validActions = Object.keys(canDo).filter((k) => (canDo[k] as (player: IPlayer, sleeve: Sleeve) => boolean)(props.player, props.sleeve),
);
const detailsF = tasks[s0];
@@ -2,7 +2,6 @@ import React from "react";
import { Sleeve } from "../Sleeve";
import { IPlayer } from "../../IPlayer";
import { CONSTANTS } from "../../../Constants";
import { Cities } from "../../../Locations/Cities";
import { removePopup } from "../../../ui/React/createPopup";
import { Money } from "../../../ui/React/Money";
import { WorldMap } from "../../../ui/React/WorldMap";