convert unclickable inside the react tree

This commit is contained in:
Olivier Gagnon 2021-09-25 14:00:38 -04:00
parent 125e9484f7
commit d49fea4cbc
5 changed files with 22 additions and 27 deletions

@ -0,0 +1,20 @@
import React from "react";
import { use } from "../ui/Context";
import { Exploit } from "./Exploit";
export function Unclickable(): React.ReactElement {
const player = use.Player();
function unclickable(event: React.MouseEvent<HTMLDivElement>): void {
if (!event.target || !(event.target instanceof Element)) return;
const display = window.getComputedStyle(event.target as Element).display;
const visibility = window.getComputedStyle(event.target as Element).visibility;
if (display === "none" && visibility === "hidden" && event.isTrusted) player.giveExploit(Exploit.Unclickable);
}
return (
<div id="unclickable" onClick={unclickable} style={{ display: "none", visibility: "hidden" }}>
Click on this to upgrade your Source-File -1!
</div>
);
}

@ -1,22 +0,0 @@
import { Player } from "../Player";
import { Exploit } from "./Exploit";
export function startUnclickable(): void {
function clickTheUnclickable(event: MouseEvent): void {
if (!event.target || !(event.target instanceof Element)) return;
const display = window.getComputedStyle(event.target as Element).display;
if (display === "none" && event.isTrusted) Player.giveExploit(Exploit.Unclickable);
}
function targetElement(): void {
const elem = document.getElementById("unclickable");
if (elem == null) {
console.error("Could not find the unclickable elem for the related exploit.");
return;
}
elem.addEventListener("click", clickTheUnclickable);
document.removeEventListener("DOMContentLoaded", targetElement);
}
document.addEventListener("DOMContentLoaded", targetElement);
}

@ -46,7 +46,6 @@ import { dialogBoxCreate } from "../utils/DialogBox";
import { exceptionAlert } from "../utils/helpers/exceptionAlert"; import { exceptionAlert } from "../utils/helpers/exceptionAlert";
import { startTampering } from "./Exploits/tampering"; import { startTampering } from "./Exploits/tampering";
import { startUnclickable } from "./Exploits/unclickable";
import React from "react"; import React from "react";
@ -270,7 +269,6 @@ const Engine: {
load: function (saveString) { load: function (saveString) {
startTampering(); startTampering();
startUnclickable();
// Load game from save or create new game // Load game from save or create new game
if (loadGame(saveString)) { if (loadGame(saveString)) {
ThemeEvents.emit(); ThemeEvents.emit();

@ -46,9 +46,6 @@
<p id="status-text"></p> <p id="status-text"></p>
</div> </div>
</div> </div>
<div id="modal-portal"></div>
<div id="unclickable" style="display: none">Click on this to upgrade your Source-File -1!</div>
</body> </body>
<script src="src/ThirdParty/raphael.min.js"></script> <script src="src/ThirdParty/raphael.min.js"></script>

@ -65,6 +65,7 @@ import { BitverseRoot } from "../BitNode/ui/BitverseRoot";
import { CharacterOverview } from "./React/CharacterOverview"; import { CharacterOverview } from "./React/CharacterOverview";
import { BladeburnerCinematic } from "../Bladeburner/ui/BladeburnerCinematic"; import { BladeburnerCinematic } from "../Bladeburner/ui/BladeburnerCinematic";
import { workerScripts } from "../Netscript/WorkerScripts"; import { workerScripts } from "../Netscript/WorkerScripts";
import { Unclickable } from "../Exploits/Unclickable";
import { enterBitNode } from "../RedPill"; import { enterBitNode } from "../RedPill";
import { Context } from "./Context"; import { Context } from "./Context";
@ -390,6 +391,7 @@ export function GameRoot({ player, engine, terminal }: IProps): React.ReactEleme
</Box> </Box>
</Box> </Box>
)} )}
<Unclickable />
</Context.Router.Provider> </Context.Router.Provider>
</Context.Player.Provider> </Context.Player.Provider>
); );