mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-10-23 18:23:15 +02:00
52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
import React, { useState } from 'react';
|
|
import { IPlayer } from "../../PersonObjects/IPlayer";
|
|
import { IEngine } from "../../IEngine";
|
|
import { Factions } from "../Factions";
|
|
import { displayFactionContent, joinFaction } from "../FactionHelpers";
|
|
|
|
interface IProps {
|
|
player: IPlayer;
|
|
engine: IEngine;
|
|
}
|
|
|
|
export function FactionList(props: IProps): React.ReactElement {
|
|
const setRerender = useState(false)[1];
|
|
|
|
function openFaction(faction: string): void {
|
|
props.engine.loadFactionContent();
|
|
displayFactionContent(faction);
|
|
}
|
|
|
|
function acceptInvitation(event: React.MouseEvent<HTMLElement>, faction: string): void {
|
|
if (!event.isTrusted) return;
|
|
joinFaction(Factions[faction]);
|
|
setRerender(x => !x);
|
|
}
|
|
|
|
return (<>
|
|
<h1>Factions</h1>
|
|
<p>Lists all factions you have joined</p>
|
|
<br />
|
|
<ul>
|
|
{props.player.factions.map((faction: string) =>
|
|
<li key={faction}><a
|
|
className="a-link-button"
|
|
onClick={() => openFaction(faction)}
|
|
style={{padding:"4px", margin:"4px", display:"inline-block"}}>{faction}
|
|
</a></li>)}
|
|
</ul>
|
|
<br />
|
|
<h1>Outstanding Faction Invitations</h1>
|
|
<p style={{width: '70%'}}>Lists factions you have been invited to. You can accept these faction invitations at any time.</p>
|
|
<ul>
|
|
{props.player.factionInvitations.map((faction: string) =>
|
|
<li key={faction} style={{padding:"6px", margin:"6px"}}>
|
|
<p style={{display:"inline", margin:"4px", padding:"4px"}}>{faction}</p>
|
|
<a
|
|
className="a-link-button"
|
|
onClick={(e) => acceptInvitation(e, faction)}
|
|
style={{display:"inline", margin:"4px", padding:"4px"}}>Accept Faction Invitation</a>
|
|
</li>)}
|
|
</ul>
|
|
</>);
|
|
} |