2019-04-01 11:23:25 +02:00
|
|
|
/**
|
|
|
|
* React Subcomponent for displaying a location's UI, when that location is a university
|
|
|
|
*
|
|
|
|
* This subcomponent renders all of the buttons for studying/taking courses
|
|
|
|
*/
|
|
|
|
import * as React from "react";
|
2021-09-25 21:34:12 +02:00
|
|
|
import Tooltip from "@mui/material/Tooltip";
|
|
|
|
import Button from "@mui/material/Button";
|
2019-04-01 11:23:25 +02:00
|
|
|
|
2021-09-05 01:09:30 +02:00
|
|
|
import { Location } from "../Location";
|
2019-04-01 11:23:25 +02:00
|
|
|
|
2021-09-05 01:09:30 +02:00
|
|
|
import { Money } from "../../ui/React/Money";
|
2021-09-18 01:43:08 +02:00
|
|
|
import { use } from "../../ui/Context";
|
2022-01-15 06:12:16 +01:00
|
|
|
import { Box } from "@mui/material";
|
2019-04-01 11:23:25 +02:00
|
|
|
|
2022-07-07 23:28:23 +02:00
|
|
|
import { ClassWork, ClassType, Classes } from "../../Work/ClassWork";
|
|
|
|
import { calculateCost } from "../../Work/formulas/Class";
|
2022-05-04 21:18:12 +02:00
|
|
|
|
2019-04-01 11:23:25 +02:00
|
|
|
type IProps = {
|
2021-09-05 01:09:30 +02:00
|
|
|
loc: Location;
|
|
|
|
};
|
2019-04-01 11:23:25 +02:00
|
|
|
|
2021-09-18 01:43:08 +02:00
|
|
|
export function UniversityLocation(props: IProps): React.ReactElement {
|
|
|
|
const player = use.Player();
|
|
|
|
const router = use.Router();
|
2021-09-05 01:09:30 +02:00
|
|
|
|
2022-07-07 23:28:23 +02:00
|
|
|
function take(classType: ClassType): void {
|
2022-07-14 23:43:08 +02:00
|
|
|
player.startWork(
|
2022-07-07 23:28:23 +02:00
|
|
|
new ClassWork({
|
|
|
|
classType: classType,
|
|
|
|
location: props.loc.name,
|
|
|
|
singularity: false,
|
|
|
|
}),
|
|
|
|
);
|
2022-01-18 15:49:06 +01:00
|
|
|
player.startFocusing();
|
|
|
|
router.toWork();
|
2021-09-05 01:09:30 +02:00
|
|
|
}
|
|
|
|
|
2022-07-07 23:28:23 +02:00
|
|
|
const dataStructuresCost = calculateCost(Classes[ClassType.DataStructures], props.loc);
|
|
|
|
const networksCost = calculateCost(Classes[ClassType.Networks], props.loc);
|
|
|
|
const algorithmsCost = calculateCost(Classes[ClassType.Algorithms], props.loc);
|
|
|
|
const managementCost = calculateCost(Classes[ClassType.Management], props.loc);
|
|
|
|
const leadershipCost = calculateCost(Classes[ClassType.Leadership], props.loc);
|
2021-09-18 01:43:08 +02:00
|
|
|
|
|
|
|
const earnHackingExpTooltip = `Gain hacking experience!`;
|
|
|
|
const earnCharismaExpTooltip = `Gain charisma experience!`;
|
|
|
|
|
|
|
|
return (
|
2022-04-07 01:30:08 +02:00
|
|
|
<Box sx={{ display: "grid", width: "fit-content" }}>
|
2021-09-25 21:34:12 +02:00
|
|
|
<Tooltip title={earnHackingExpTooltip}>
|
2022-07-07 23:28:23 +02:00
|
|
|
<Button onClick={() => take(ClassType.StudyComputerScience)}>Study Computer Science (free)</Button>
|
2021-09-25 21:34:12 +02:00
|
|
|
</Tooltip>
|
|
|
|
<Tooltip title={earnHackingExpTooltip}>
|
2022-07-07 23:28:23 +02:00
|
|
|
<Button onClick={() => take(ClassType.DataStructures)}>
|
2021-09-25 21:34:12 +02:00
|
|
|
Take Data Structures course (
|
|
|
|
<Money money={dataStructuresCost} player={player} /> / sec)
|
|
|
|
</Button>
|
|
|
|
</Tooltip>
|
|
|
|
<Tooltip title={earnHackingExpTooltip}>
|
2022-07-07 23:28:23 +02:00
|
|
|
<Button onClick={() => take(ClassType.Networks)}>
|
2021-09-25 21:34:12 +02:00
|
|
|
Take Networks course (
|
|
|
|
<Money money={networksCost} player={player} /> / sec)
|
|
|
|
</Button>
|
|
|
|
</Tooltip>
|
|
|
|
<Tooltip title={earnHackingExpTooltip}>
|
2022-07-07 23:28:23 +02:00
|
|
|
<Button onClick={() => take(ClassType.Algorithms)}>
|
2021-09-25 21:34:12 +02:00
|
|
|
Take Algorithms course (
|
|
|
|
<Money money={algorithmsCost} player={player} /> / sec)
|
|
|
|
</Button>
|
|
|
|
</Tooltip>
|
|
|
|
<Tooltip title={earnCharismaExpTooltip}>
|
2022-07-07 23:28:23 +02:00
|
|
|
<Button onClick={() => take(ClassType.Management)}>
|
2021-09-25 21:34:12 +02:00
|
|
|
Take Management course (
|
|
|
|
<Money money={managementCost} player={player} /> / sec)
|
|
|
|
</Button>
|
|
|
|
</Tooltip>
|
|
|
|
<Tooltip title={earnCharismaExpTooltip}>
|
2022-07-07 23:28:23 +02:00
|
|
|
<Button onClick={() => take(ClassType.Leadership)}>
|
2021-09-25 21:34:12 +02:00
|
|
|
Take Leadership course (
|
|
|
|
<Money money={leadershipCost} player={player} /> / sec)
|
|
|
|
</Button>
|
|
|
|
</Tooltip>
|
2022-01-15 06:12:16 +01:00
|
|
|
</Box>
|
2021-09-18 01:43:08 +02:00
|
|
|
);
|
2019-04-01 11:23:25 +02:00
|
|
|
}
|