import React, { useState } from "react"; import Accordion from "@mui/material/Accordion"; import AccordionSummary from "@mui/material/AccordionSummary"; import AccordionDetails from "@mui/material/AccordionDetails"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import Typography from "@mui/material/Typography"; import Button from "@mui/material/Button"; import Select, { SelectChangeEvent } from "@mui/material/Select"; import { Adjuster } from "./Adjuster"; import { IPlayer } from "../../PersonObjects/IPlayer"; import { Factions as AllFaction } from "../../Faction/Factions"; import FormControl from "@mui/material/FormControl"; import MenuItem from "@mui/material/MenuItem"; import IconButton from "@mui/material/IconButton"; import ReplyAllIcon from "@mui/icons-material/ReplyAll"; import ReplyIcon from "@mui/icons-material/Reply"; import InputLabel from "@mui/material/InputLabel"; import { FactionNames } from "../../Faction/data/FactionNames"; const bigNumber = 1e12; interface IProps { player: IPlayer; } export function Factions(props: IProps): React.ReactElement { const [faction, setFaction] = useState(FactionNames.Illuminati as string); function setFactionDropdown(event: SelectChangeEvent): void { setFaction(event.target.value as string); } function receiveInvite(): void { props.player.receiveInvite(faction); } function receiveAllInvites(): void { Object.values(FactionNames).forEach(faction => props.player.receiveInvite(faction)) } function modifyFactionRep(modifier: number): (x: number) => void { return function (reputation: number): void { const fac = AllFaction[faction]; if (fac != null && !isNaN(reputation)) { fac.playerReputation += reputation * modifier; } }; } function resetFactionRep(): void { const fac = AllFaction[faction]; if (fac != null) { fac.playerReputation = 0; } } function modifyFactionFavor(modifier: number): (x: number) => void { return function (favor: number): void { const fac = AllFaction[faction]; if (fac != null && !isNaN(favor)) { fac.favor += favor * modifier; } }; } function resetFactionFavor(): void { const fac = AllFaction[faction]; if (fac != null) { fac.favor = 0; } } function tonsOfRep(): void { for (const i of Object.keys(AllFaction)) { AllFaction[i].playerReputation = bigNumber; } } function resetAllRep(): void { for (const i of Object.keys(AllFaction)) { AllFaction[i].playerReputation = 0; } } function tonsOfFactionFavor(): void { for (const i of Object.keys(AllFaction)) { AllFaction[i].favor = bigNumber; } } function resetAllFactionFavor(): void { for (const i of Object.keys(AllFaction)) { AllFaction[i].favor = 0; } } return ( }> Factions
Faction: Faction
Reputation: modifyFactionRep(1)(bigNumber)} add={modifyFactionRep(1)} subtract={modifyFactionRep(-1)} reset={resetFactionRep} />
Favor: modifyFactionFavor(1)(2000)} add={modifyFactionFavor(1)} subtract={modifyFactionFavor(-1)} reset={resetFactionFavor} />
All Reputation:
All Favor:
); }