2022-01-08 11:45:00 +01:00
|
|
|
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 ButtonGroup from "@mui/material/ButtonGroup";
|
|
|
|
import { Tooltip } from "@mui/material";
|
2022-04-07 01:30:08 +02:00
|
|
|
import LockIcon from "@mui/icons-material/Lock";
|
|
|
|
import LockOpenIcon from "@mui/icons-material/LockOpen";
|
2022-01-08 11:45:00 +01:00
|
|
|
|
2022-10-10 00:42:14 +02:00
|
|
|
import { Player } from "@player";
|
2022-01-08 11:45:00 +01:00
|
|
|
import { achievements } from "../../Achievements/Achievements";
|
2022-09-06 15:07:12 +02:00
|
|
|
import { Engine } from "../../engine";
|
2022-01-08 11:45:00 +01:00
|
|
|
|
2023-06-27 04:29:44 +02:00
|
|
|
export function AchievementsDev(): React.ReactElement {
|
2022-09-06 15:07:12 +02:00
|
|
|
const [playerAchievement, setPlayerAchievements] = useState(Player.achievements.map((m) => m.ID));
|
2022-01-08 11:45:00 +01:00
|
|
|
|
|
|
|
function grantAchievement(id: string): void {
|
2022-09-06 15:07:12 +02:00
|
|
|
Player.giveAchievement(id);
|
|
|
|
setPlayerAchievements(Player.achievements.map((m) => m.ID));
|
2022-01-08 11:45:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function grantAllAchievements(): void {
|
2022-09-06 15:07:12 +02:00
|
|
|
Object.values(achievements).forEach((a) => Player.giveAchievement(a.ID));
|
|
|
|
setPlayerAchievements(Player.achievements.map((m) => m.ID));
|
2022-01-08 11:45:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function removeAchievement(id: string): void {
|
2022-09-06 15:07:12 +02:00
|
|
|
Player.achievements = Player.achievements.filter((a) => a.ID !== id);
|
|
|
|
setPlayerAchievements(Player.achievements.map((m) => m.ID));
|
2022-01-08 11:45:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function clearAchievements(): void {
|
2022-09-06 15:07:12 +02:00
|
|
|
Player.achievements = [];
|
|
|
|
setPlayerAchievements(Player.achievements.map((m) => m.ID));
|
2022-01-08 11:45:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function disableEngine(): void {
|
2022-09-06 15:07:12 +02:00
|
|
|
Engine.Counters.achievementsCounter = Number.MAX_VALUE;
|
2022-01-08 11:45:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function enableEngine(): void {
|
2022-09-06 15:07:12 +02:00
|
|
|
Engine.Counters.achievementsCounter = 0;
|
2022-01-08 11:45:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<Accordion TransitionProps={{ unmountOnExit: true }}>
|
|
|
|
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
|
|
|
<Typography>Achievements</Typography>
|
|
|
|
</AccordionSummary>
|
|
|
|
<AccordionDetails>
|
|
|
|
<table>
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
2022-04-07 01:30:08 +02:00
|
|
|
<td></td>
|
2022-01-08 11:45:00 +01:00
|
|
|
<td>
|
|
|
|
<Typography>Achievements:</Typography>
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
<ButtonGroup>
|
|
|
|
<Button onClick={grantAllAchievements}>Grant All</Button>
|
|
|
|
<Button onClick={clearAchievements}>Clear</Button>
|
|
|
|
<Button onClick={disableEngine}>Disable Engine</Button>
|
|
|
|
<Button onClick={enableEngine}>Enable Engine</Button>
|
|
|
|
</ButtonGroup>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
{Object.values(achievements).map((i) => {
|
|
|
|
const achieved = playerAchievement.includes(i.ID);
|
2022-04-07 01:30:08 +02:00
|
|
|
return (
|
|
|
|
<tr key={"ach-" + i.ID}>
|
|
|
|
<td>
|
|
|
|
{achieved ? (
|
|
|
|
<Tooltip title="Achieved">
|
|
|
|
<LockOpenIcon color="primary" />
|
|
|
|
</Tooltip>
|
|
|
|
) : (
|
|
|
|
<Tooltip title="Locked">
|
|
|
|
<LockIcon color="secondary" />
|
|
|
|
</Tooltip>
|
|
|
|
)}
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
<Tooltip
|
|
|
|
title={
|
|
|
|
<>
|
|
|
|
{i.ID}
|
|
|
|
<br />
|
|
|
|
{i.Description}
|
|
|
|
</>
|
|
|
|
}
|
|
|
|
>
|
|
|
|
<Typography color={achieved ? "primary" : "secondary"}>{i.Name}:</Typography>
|
2022-01-08 11:45:00 +01:00
|
|
|
</Tooltip>
|
2022-04-07 01:30:08 +02:00
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
<ButtonGroup>
|
|
|
|
<Button onClick={() => grantAchievement(i.ID)}>Grant</Button>
|
|
|
|
<Button onClick={() => removeAchievement(i.ID)}>Clear</Button>
|
|
|
|
</ButtonGroup>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
);
|
2022-01-08 11:45:00 +01:00
|
|
|
})}
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</AccordionDetails>
|
|
|
|
</Accordion>
|
|
|
|
);
|
|
|
|
}
|