import React, { useState } from "react"; import { Accordion, AccordionSummary, AccordionDetails, Button, FormControl, FormControlLabel, IconButton, InputLabel, MenuItem, Select, SelectChangeEvent, Typography, RadioGroup, Radio, } from "@mui/material"; import Tooltip from "@mui/material/Tooltip"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import ReplyAllIcon from "@mui/icons-material/ReplyAll"; import ReplyIcon from "@mui/icons-material/Reply"; import ChatIcon from "@mui/icons-material/Chat"; import ChatBubbleIcon from "@mui/icons-material/ChatBubble"; import { Player } from "@player"; import { FactionName, FactionDiscovery } from "@enums"; import { Adjuster } from "./Adjuster"; import { Factions } from "../../Faction/Factions"; import { getRecordValues } from "../../Types/Record"; import { getEnumHelper } from "../../utils/EnumHelper"; import { useRerender } from "../../ui/React/hooks"; const bigNumber = 1e12; export function FactionsDev(): React.ReactElement { const [selectedFaction, setSelectedFaction] = useState(Factions[FactionName.Illuminati]); const rerender = useRerender(); function setFactionDropdown(event: SelectChangeEvent): void { if (!getEnumHelper("FactionName").isMember(event.target.value)) return; setSelectedFaction(Factions[event.target.value]); } function receiveInvite(): void { Player.receiveInvite(selectedFaction.name); selectedFaction.alreadyInvited = true; rerender(); } function receiveAllInvites(): void { getRecordValues(Factions).forEach((faction) => { Player.receiveInvite(faction.name); faction.alreadyInvited = true; }); rerender(); } function receiveRumor(): void { Player.receiveRumor(selectedFaction.name); rerender(); } function receiveAllRumors(): void { getRecordValues(FactionName).forEach((factionName) => Player.receiveRumor(factionName)); rerender(); } function resetAllDiscovery(): void { getRecordValues(Factions).forEach((faction) => (faction.discovery = FactionDiscovery.unknown)); Player.factionRumors.clear(); rerender(); } function modifyFactionRep(modifier: number): (x: number) => void { return function (reputation: number): void { if (!isNaN(reputation)) selectedFaction.playerReputation += reputation * modifier; }; } function resetFactionRep(): void { selectedFaction.playerReputation = 0; } function modifyFactionFavor(modifier: number): (x: number) => void { return function (favor: number): void { if (!isNaN(favor)) selectedFaction.favor += favor * modifier; }; } function resetFactionFavor(): void { selectedFaction.favor = 0; } function tonsOfRep(): void { for (const faction of getRecordValues(Factions)) { faction.playerReputation = bigNumber; } } function resetAllRep(): void { for (const faction of getRecordValues(Factions)) { faction.playerReputation = 0; } } function tonsOfFactionFavor(): void { for (const faction of getRecordValues(Factions)) { faction.favor = bigNumber; } } function resetAllFactionFavor(): void { for (const faction of getRecordValues(Factions)) { faction.favor = 0; } } function setDiscovery(event: React.ChangeEvent, value: string): void { if (!getEnumHelper("FactionDiscovery").isMember(value)) return; selectedFaction.discovery = value; rerender(); } return ( }> Factions
Faction: Faction
Discovery: {getRecordValues(FactionDiscovery).map((discovery) => ( } /> ))}
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 Factions:
All Reputation:
All Favor:
); }