From ccf0aa47714e2efbe23a6d7b515a05637e67e295 Mon Sep 17 00:00:00 2001 From: draughtnyan <90784553+draughtnyan@users.noreply.github.com> Date: Wed, 27 Dec 2023 02:30:08 -0600 Subject: [PATCH] UI: 'Disable Text Effects' setting applies to "corrupted text" (#944) --- src/Achievements/AchievementList.tsx | 2 +- src/Bladeburner/ui/BlackOpPage.tsx | 2 +- src/Faction/ui/FactionsRoot.tsx | 2 +- src/Locations/ui/GenericLocation.tsx | 8 +++----- src/Locations/ui/SpecialLocation.tsx | 2 +- src/ui/MD/a.tsx | 2 +- src/ui/React/CorruptableText.tsx | 19 +++++++++++++++++-- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/Achievements/AchievementList.tsx b/src/Achievements/AchievementList.tsx index 655a36abd..74d574bd7 100644 --- a/src/Achievements/AchievementList.tsx +++ b/src/Achievements/AchievementList.tsx @@ -118,7 +118,7 @@ export function AchievementList({ achievements, playerAchievements }: IProps): J {secret.map((item) => ( - +
))} diff --git a/src/Bladeburner/ui/BlackOpPage.tsx b/src/Bladeburner/ui/BlackOpPage.tsx index 99afa2ee5..3426dde7d 100644 --- a/src/Bladeburner/ui/BlackOpPage.tsx +++ b/src/Bladeburner/ui/BlackOpPage.tsx @@ -30,7 +30,7 @@ export function BlackOpPage(props: IProps): React.ReactElement {
{props.bladeburner.blackops[BlackOperationName.OperationDaedalus] ? ( ) : ( diff --git a/src/Faction/ui/FactionsRoot.tsx b/src/Faction/ui/FactionsRoot.tsx index 7290cf9bb..ad13f0698 100644 --- a/src/Faction/ui/FactionsRoot.tsx +++ b/src/Faction/ui/FactionsRoot.tsx @@ -136,7 +136,7 @@ const FactionElement = (props: FactionElementProps): React.ReactElement => { ) : ( - + )} diff --git a/src/Locations/ui/GenericLocation.tsx b/src/Locations/ui/GenericLocation.tsx index e6f589f26..5f70c8063 100644 --- a/src/Locations/ui/GenericLocation.tsx +++ b/src/Locations/ui/GenericLocation.tsx @@ -21,8 +21,6 @@ import { CasinoLocation } from "./CasinoLocation"; import { Location } from "../Location"; import { LocationType } from "@enums"; -import { Settings } from "../../Settings/Settings"; - import { isBackdoorInstalled } from "../../Server/ServerHelpers"; import { GetServer } from "../../Server/AllServers"; @@ -97,10 +95,10 @@ export function GenericLocation({ loc }: IProps): React.ReactElement { <> - {backdoorInstalled && !Settings.DisableTextEffects ? ( - + {backdoorInstalled ? ( + - + ) : ( diff --git a/src/Locations/ui/SpecialLocation.tsx b/src/Locations/ui/SpecialLocation.tsx index 83de3faa3..ccbafd279 100644 --- a/src/Locations/ui/SpecialLocation.tsx +++ b/src/Locations/ui/SpecialLocation.tsx @@ -303,7 +303,7 @@ export function SpecialLocation(props: SpecialLocationProps): React.ReactElement return ( <> - + ); diff --git a/src/ui/MD/a.tsx b/src/ui/MD/a.tsx index 2263634c5..317795c43 100644 --- a/src/ui/MD/a.tsx +++ b/src/ui/MD/a.tsx @@ -28,7 +28,7 @@ export const A = (props: React.PropsWithChildren<{ href?: string }>): React.Reac cursor: "pointer", }} > - + ); return ( diff --git a/src/ui/React/CorruptableText.tsx b/src/ui/React/CorruptableText.tsx index 7324de6ce..9ecfee9b6 100644 --- a/src/ui/React/CorruptableText.tsx +++ b/src/ui/React/CorruptableText.tsx @@ -1,4 +1,5 @@ import React, { useEffect, useState } from "react"; +import { Settings } from "../../Settings/Settings"; function replace(str: string, i: number, char: string): string { return str.substring(0, i) + char + str.substring(i + 1); @@ -6,13 +7,18 @@ function replace(str: string, i: number, char: string): string { interface CorruptableTextProps { content: string; + spoiler: boolean; } -function randomize(char: string): string { +function randomize(char: string, obfuscate: boolean): string { const randFrom = (str: string): string => str[Math.floor(Math.random() * str.length)]; const classes = ["abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "1234567890", " _", "()[]{}<>"]; const other = `!@#$%^&*()_+|\\';"/.,?\`~`; + if (obfuscate && Math.random() < 0.75) { + return randFrom(other); + } + for (const c of classes) { if (c.includes(char)) return randFrom(c); } @@ -24,6 +30,10 @@ export function CorruptableText(props: CorruptableTextProps): JSX.Element { const [content, setContent] = useState(props.content); useEffect(() => { + if (Settings.DisableTextEffects) { + return; + } + let counter = 5; const timers: number[] = []; const intervalId = setInterval(() => { @@ -32,7 +42,7 @@ export function CorruptableText(props: CorruptableTextProps): JSX.Element { counter = Math.random() * 5; const index = Math.random() * props.content.length; const letter = props.content.charAt(index); - setContent((content) => replace(content, index, randomize(letter))); + setContent((content) => replace(content, index, randomize(letter, false))); timers.push( window.setTimeout(() => { setContent((content) => replace(content, index, letter)); @@ -46,5 +56,10 @@ export function CorruptableText(props: CorruptableTextProps): JSX.Element { }; }, [props.content]); + if (Settings.DisableTextEffects) { + const spoileredContent = content.replaceAll(/./g, (c) => randomize(c, true)); + return {props.spoiler ? spoileredContent : content}; + } + return {content}; }