From c92d7f683922b0977fe6341210e593e7befb2cd8 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 10 Dec 2024 03:37:25 +0100 Subject: [PATCH 1/4] Add wonder in names + minimapAdd wonder in names + minimapAdd wonder in names + minimapAdd wonder in names + minimapAdd wonder in names + minimapAdd wonder in names + minimapAdd wonder in names + minimapAdd wonder in names + minimapAdd wonder in names + minimap --- .../public/textures/my_realm_wonder_label.png | Bin 0 -> 9417 bytes client/public/textures/realm_wonder_label.png | Bin 0 -> 12180 bytes client/src/hooks/helpers/useEntities.tsx | 41 ++++++++++-------- client/src/hooks/helpers/useRealm.tsx | 6 ++- client/src/hooks/helpers/useStructures.tsx | 2 +- client/src/three/components/Minimap.ts | 14 ++++-- .../src/three/components/StructureManager.ts | 6 ++- client/src/three/systems/SystemManager.ts | 3 ++ client/src/three/systems/types.ts | 1 + client/src/types/index.ts | 1 + client/src/ui/elements/ResourceCost.tsx | 2 +- client/src/ui/modules/social/PlayerId.tsx | 2 +- client/src/ui/utils/realms.tsx | 7 +++ 13 files changed, 57 insertions(+), 28 deletions(-) create mode 100644 client/public/textures/my_realm_wonder_label.png create mode 100644 client/public/textures/realm_wonder_label.png diff --git a/client/public/textures/my_realm_wonder_label.png b/client/public/textures/my_realm_wonder_label.png new file mode 100644 index 0000000000000000000000000000000000000000..6c29122967ad9011ce73afe90bdb88306cd985c5 GIT binary patch literal 9417 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 W%-dQCy8r+H07*qoM6N<$f&c)}H1#9^ literal 0 HcmV?d00001 diff --git a/client/src/hooks/helpers/useEntities.tsx b/client/src/hooks/helpers/useEntities.tsx index 138246d822..6aaf78386d 100644 --- a/client/src/hooks/helpers/useEntities.tsx +++ b/client/src/hooks/helpers/useEntities.tsx @@ -1,5 +1,5 @@ import { type ClientComponents } from "@/dojo/createClientComponents"; -import { getRealmNameById } from "@/ui/utils/realms"; +import { getRealmName, getRealmNameById } from "@/ui/utils/realms"; import { divideByPrecision, getEntityIdFromKeys } from "@/ui/utils/utils"; import { CAPACITY_CONFIG_CATEGORY_STRING_MAP, @@ -9,7 +9,7 @@ import { type ID, } from "@bibliothecadao/eternum"; import { useEntityQuery } from "@dojoengine/react"; -import { Has, getComponentValue, type Component, type ComponentValue, type Entity } from "@dojoengine/recs"; +import { Has, getComponentValue, type ComponentValue } from "@dojoengine/recs"; import { useMemo } from "react"; import { shortString } from "starknet"; import { useDojo } from "../context/DojoContext"; @@ -111,11 +111,8 @@ export const useEntities = () => { const structureName = getEntityName(structure.entity_id); - const name = realm - ? getRealmNameById(realm.realm_id) - : structureName - ? `${structureName}` - : structure.category || ""; + const name = realm ? getRealmName(realm) : structureName || structure.category || ""; + return { ...structure, position: position!, name, owner: getComponentValue(Owner, id) }; }) .filter((structure): structure is PlayerStructure => structure !== undefined) @@ -256,20 +253,26 @@ export const useEntitiesUtils = () => { const realm = getComponentValue(Realm, getEntityIdFromKeys([BigInt(entityId)])); const structure = getComponentValue(Structure, getEntityIdFromKeys([BigInt(entityId)])); - if (structure?.category === StructureType[StructureType.Realm]) { - return getRealmNameById(realm?.realm_id || 0); - } else if (entityName) { + if (structure?.category === StructureType[StructureType.Realm] && realm) { + return getRealmName(realm); + } + + if (entityName) { return shortString.decodeShortString(entityName.name.toString()); - } else { - if (abbreviate) { - if (structure?.category === StructureType[StructureType.FragmentMine]) { - return `FM ${structure.entity_id}`; - } else if (structure?.category === StructureType[StructureType.Hyperstructure]) { - return `HS ${structure.entity_id}`; - } else if (structure?.category === StructureType[StructureType.Bank]) { - return `BK ${structure.entity_id}`; - } + } + + if (abbreviate && structure) { + const abbreviations: Record = { + [StructureType[StructureType.FragmentMine]]: "FM", + [StructureType[StructureType.Hyperstructure]]: "HS", + [StructureType[StructureType.Bank]]: "BK", + }; + + const abbr = abbreviations[structure.category]; + if (abbr) { + return `${abbr} ${structure.entity_id}`; } + return `${structure?.category} ${structure?.entity_id}`; } }; diff --git a/client/src/hooks/helpers/useRealm.tsx b/client/src/hooks/helpers/useRealm.tsx index a923971335..88e2690d92 100644 --- a/client/src/hooks/helpers/useRealm.tsx +++ b/client/src/hooks/helpers/useRealm.tsx @@ -8,6 +8,7 @@ import { } from "@bibliothecadao/eternum"; import { useEntityQuery } from "@dojoengine/react"; import { type ComponentValue, type Entity, Has, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; +import { useMemo } from "react"; import { shortString } from "starknet"; import realmIdsByOrder from "../../data/realmids_by_order.json"; import { unpackResources } from "../../ui/utils/packedData"; @@ -15,7 +16,6 @@ import { getRealmNameById } from "../../ui/utils/realms"; import { getEntityIdFromKeys } from "../../ui/utils/utils"; import { useDojo } from "../context/DojoContext"; import useUIStore from "../store/useUIStore"; -import { useMemo } from "react"; export interface RealmInfo { realmId: ID; @@ -29,6 +29,7 @@ export interface RealmInfo { hasCapacity: boolean; owner: ContractAddress; ownerName: string; + hasWonder: boolean; } export function useRealm() { @@ -237,6 +238,7 @@ export function useGetRealm(realmEntityId: ID | undefined) { hasCapacity: !population || population.capacity + configManager.getBasePopulationCapacity() > population.population, owner: address, + hasWonder: realm.has_wonder, }; } } @@ -286,6 +288,7 @@ export function getRealms(): RealmInfo[] { !population || population.capacity + configManager.getBasePopulationCapacity() > population.population, owner: address, ownerName, + hasWonder: realm.has_wonder, }; }) .filter((realm) => realm !== undefined); @@ -332,6 +335,7 @@ export function usePlayerRealms(): RealmInfo[] { !population || population.capacity + configManager.getBasePopulationCapacity() > population.population, owner: address, ownerName, + hasWonder: realm.has_wonder, }; }) .filter((realm) => realm !== undefined); diff --git a/client/src/hooks/helpers/useStructures.tsx b/client/src/hooks/helpers/useStructures.tsx index f9380a41d3..38ad4658ec 100644 --- a/client/src/hooks/helpers/useStructures.tsx +++ b/client/src/hooks/helpers/useStructures.tsx @@ -49,7 +49,7 @@ export const useStructureAtPosition = ({ x, y }: Position): Structure | undefine const protectorArmy = getComponentValue(Protector, structureEntityId); const protector = protectorArmy ? getAliveArmy(protectorArmy.army_id) : undefined; - const name = getEntityName(structure.entity_id); + const name = getEntityName(structure.entity_id) || ""; const addressName = getComponentValue(AddressName, getEntityIdFromKeys([owner?.address])); const ownerName = addressName ? shortString.decodeShortString(addressName!.name.toString()) : "Bandits"; diff --git a/client/src/three/components/Minimap.ts b/client/src/three/components/Minimap.ts index 704fc4fa1e..b5c7eaaf6b 100644 --- a/client/src/three/components/Minimap.ts +++ b/client/src/three/components/Minimap.ts @@ -15,6 +15,8 @@ const LABELS = { MY_ARMY: "/textures/my_army_label.png", MY_REALM: "/textures/my_realm_label.png", BATTLE: "/textures/battle_label.png", + MY_REALM_WONDER: "/textures/my_realm_wonder_label.png", + REALM_WONDER: "/textures/realm_wonder_label.png", STRUCTURES: { [StructureType.Realm]: "/textures/realm_label.png", [StructureType.Hyperstructure]: "/textures/hyper_label.png", @@ -249,9 +251,13 @@ class Minimap { structures.forEach((structure) => { if (structureType === StructureType.Realm) { - labelImg = structure.isMine - ? this.labelImages.get("MY_REALM") - : this.labelImages.get(`STRUCTURE_${structureType}`); + if (structure.isMine) { + labelImg = structure.hasWonder ? this.labelImages.get("MY_REALM_WONDER") : this.labelImages.get("MY_REALM"); + } else { + labelImg = structure.hasWonder + ? this.labelImages.get("REALM_WONDER") + : this.labelImages.get(`STRUCTURE_${structureType}`); + } } if (!labelImg) return; const { col, row } = structure.hexCoords; @@ -455,6 +461,8 @@ class Minimap { this.loadImage("MY_ARMY", LABELS.MY_ARMY); this.loadImage("BATTLE", LABELS.BATTLE); this.loadImage("MY_REALM", LABELS.MY_REALM); + this.loadImage("MY_REALM_WONDER", LABELS.MY_REALM_WONDER); + this.loadImage("REALM_WONDER", LABELS.REALM_WONDER); // Load structure labels Object.entries(LABELS.STRUCTURES).forEach(([type, path]) => { diff --git a/client/src/three/components/StructureManager.ts b/client/src/three/components/StructureManager.ts index 3b777fc00f..3b435d5e5f 100644 --- a/client/src/three/components/StructureManager.ts +++ b/client/src/three/components/StructureManager.ts @@ -90,7 +90,7 @@ export class StructureManager { async onUpdate(update: StructureSystemUpdate) { await Promise.all(this.modelLoadPromises); - const { entityId, hexCoords, structureType, stage, level, owner } = update; + const { entityId, hexCoords, structureType, stage, level, owner, hasWonder } = update; const normalizedCoord = { col: hexCoords.col - FELT_CENTER, row: hexCoords.row - FELT_CENTER }; const position = getWorldPositionForHex(normalizedCoord); @@ -106,7 +106,7 @@ export class StructureManager { const key = structureType; // Add the structure to the structures map - this.structures.addStructure(entityId, key, normalizedCoord, stage, level, owner); + this.structures.addStructure(entityId, key, normalizedCoord, stage, level, owner, hasWonder); // Update the visible structures if this structure is in the current chunk if (this.isInCurrentChunk(normalizedCoord)) { @@ -227,6 +227,7 @@ class Structures { stage: number = 0, level: number = 0, owner: { address: bigint }, + hasWonder: boolean, ) { if (!this.structures.has(structureType)) { this.structures.set(structureType, new Map()); @@ -239,6 +240,7 @@ class Structures { isMine: isAddressEqualToAccount(owner.address), owner, structureType, + hasWonder, }); } diff --git a/client/src/three/systems/SystemManager.ts b/client/src/three/systems/SystemManager.ts index 7a3e70f6e3..ded8d1fa63 100644 --- a/client/src/three/systems/SystemManager.ts +++ b/client/src/three/systems/SystemManager.ts @@ -164,9 +164,11 @@ export class SystemManager { const stage = this.getStructureStage(StructureType[categoryKey], structure.entity_id); let level = 0; + let hasWonder = false; if (StructureType[categoryKey] === StructureType.Realm) { const realm = getComponentValue(this.setup.components.Realm, update.entity); level = realm?.level || RealmLevels.Settlement; + hasWonder = realm?.has_wonder || false; } return { @@ -176,6 +178,7 @@ export class SystemManager { stage, level, owner: { address: owner?.address || 0n }, + hasWonder, }; }); }, diff --git a/client/src/three/systems/types.ts b/client/src/three/systems/types.ts index d40b1e015b..c0fbf17c5e 100644 --- a/client/src/three/systems/types.ts +++ b/client/src/three/systems/types.ts @@ -20,6 +20,7 @@ export type StructureSystemUpdate = { stage: StructureProgress; level: number; owner: { address: bigint }; + hasWonder: boolean; }; export type TileSystemUpdate = { diff --git a/client/src/types/index.ts b/client/src/types/index.ts index b26e53a38e..6a863e5875 100644 --- a/client/src/types/index.ts +++ b/client/src/types/index.ts @@ -33,6 +33,7 @@ export interface StructureInfo { isMine: boolean; owner: { address: bigint }; structureType: StructureType; + hasWonder: boolean; } export interface ArmyData { diff --git a/client/src/ui/elements/ResourceCost.tsx b/client/src/ui/elements/ResourceCost.tsx index 670e9ada32..c44ce5c8ff 100644 --- a/client/src/ui/elements/ResourceCost.tsx +++ b/client/src/ui/elements/ResourceCost.tsx @@ -58,7 +58,7 @@ export const ResourceCost = ({ {" "} {Intl.NumberFormat("en-US", { notation: "compact", - maximumFractionDigits: 1, + maximumFractionDigits: 6, }).format(props.amount || 0)}{" "} {!isNaN(balance) && `(${currencyFormat(balance, 0)})`}{" "} diff --git a/client/src/ui/modules/social/PlayerId.tsx b/client/src/ui/modules/social/PlayerId.tsx index 6453697c23..eb623392bf 100644 --- a/client/src/ui/modules/social/PlayerId.tsx +++ b/client/src/ui/modules/social/PlayerId.tsx @@ -171,7 +171,7 @@ export const PlayerId = ({ return (
-
+
{structure.structureName}
diff --git a/client/src/ui/utils/realms.tsx b/client/src/ui/utils/realms.tsx index e5b8c6a778..0fb981e3ee 100644 --- a/client/src/ui/utils/realms.tsx +++ b/client/src/ui/utils/realms.tsx @@ -1,5 +1,7 @@ +import { ClientComponents } from "@/dojo/createClientComponents"; import { configManager } from "@/dojo/setup"; import { findResourceIdByTrait, ID, orders, RealmInterface } from "@bibliothecadao/eternum"; +import { ComponentValue } from "@dojoengine/recs"; import realmsJson from "../../data/geodata/realms.json"; import { packResources } from "./packedData"; @@ -75,3 +77,8 @@ export const hasEnoughPopulationForBuilding = (realm: any, building: number) => return (realm?.population || 0) + buildingPopulation <= basePopulationCapacity + (realm?.capacity || 0); }; + +export const getRealmName = (realm: ComponentValue) => { + const baseName = getRealmNameById(realm.realm_id); + return realm.has_wonder ? `WONDER - ${baseName}` : baseName; +}; From ec7cb24f441ed186c3cc5da4f5729ce1bf624686 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 10 Dec 2024 03:38:30 +0100 Subject: [PATCH 2/4] lint --- sdk/packages/eternum/src/provider/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/packages/eternum/src/provider/index.ts b/sdk/packages/eternum/src/provider/index.ts index 1a1682e504..b6ce169e63 100644 --- a/sdk/packages/eternum/src/provider/index.ts +++ b/sdk/packages/eternum/src/provider/index.ts @@ -701,7 +701,6 @@ export class EternumProvider extends EnhancedDojoProvider { calldata: [realmSystemsContractAddress, false], }; - return await this.executeAndCheckTransaction(signer, [approvalForAllCall, ...createCalls, approvalCloseForAllCall]); } From 8f929d6d10132664cad46eefb0af17404be050c7 Mon Sep 17 00:00:00 2001 From: ponderingdemocritus Date: Tue, 10 Dec 2024 16:49:45 +1100 Subject: [PATCH 3/4] type fix --- client/src/hooks/helpers/use-get-all-players.tsx | 2 +- client/src/hooks/helpers/useGuilds.tsx | 10 +++++----- .../ui/components/worldmap/armies/ArmyInfoLabel.tsx | 4 ++-- .../src/ui/components/worldmap/battles/BattleLabel.tsx | 2 +- .../components/worldmap/structures/StructureLabel.tsx | 6 +++--- .../ui/modules/entity-details/realm/RealmDetails.tsx | 4 ++-- .../src/ui/modules/military/battle-view/BattleView.tsx | 4 ++-- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/client/src/hooks/helpers/use-get-all-players.tsx b/client/src/hooks/helpers/use-get-all-players.tsx index 254c66d913..2dcde2bc42 100644 --- a/client/src/hooks/helpers/use-get-all-players.tsx +++ b/client/src/hooks/helpers/use-get-all-players.tsx @@ -69,7 +69,7 @@ export const useGetAllPlayers = () => { ]).size, hyperstructures: runQuery([Has(Hyperstructure), HasValue(Owner, { address: player.address })]).size, isAlive: player.isAlive, - guildName: player.guildName, + guildName: player.guildName || "", }; }); }; diff --git a/client/src/hooks/helpers/useGuilds.tsx b/client/src/hooks/helpers/useGuilds.tsx index 9702dbae5a..0b8a11fdb1 100644 --- a/client/src/hooks/helpers/useGuilds.tsx +++ b/client/src/hooks/helpers/useGuilds.tsx @@ -186,7 +186,7 @@ export const useGuilds = () => { guilds, nextBlockTimestamp, account.address, - getEntityName, + (entityId: number) => getEntityName(entityId) || 'Unknown', Guild, Owner, GuildMember, @@ -202,7 +202,7 @@ export const useGuilds = () => { [getEntityIdFromKeys([BigInt(entityId)])], nextBlockTimestamp, account.address, - getEntityName, + (entityId: number) => getEntityName(entityId) || 'Unknown', Guild, Owner, GuildMember, @@ -222,7 +222,7 @@ export const useGuilds = () => { const guild = getComponentValue(Guild, getEntityIdFromKeys([BigInt(guildMember.guild_entity_id)])); const owner = getComponentValue(Owner, getEntityIdFromKeys([BigInt(guildMember.guild_entity_id)])); - const name = guildMember.guild_entity_id ? getEntityName(guildMember.guild_entity_id) : "Unknown"; + const name = guildMember.guild_entity_id ? getEntityName(guildMember.guild_entity_id) || 'Unknown' : "Unknown"; return { entityId: guildMember?.guild_entity_id, @@ -254,13 +254,13 @@ export const useGuilds = () => { HasValue(GuildWhitelist, { guild_entity_id: guildEntityId, is_whitelisted: true }), ]); - return formatGuildWhitelist(whitelist, players, GuildWhitelist, getAddressName, getEntityName); + return formatGuildWhitelist(whitelist, players, GuildWhitelist, getAddressName, (entityId: number) => getEntityName(entityId) || 'Unknown'); }; const usePlayerWhitelist = (address: ContractAddress) => { const whitelist = useEntityQuery([HasValue(GuildWhitelist, { address, is_whitelisted: true })]); - return formatPlayerWhitelist(whitelist, GuildWhitelist, getEntityName); + return formatPlayerWhitelist(whitelist, GuildWhitelist, (entityId: number) => getEntityName(entityId) || 'Unknown'); }; const getPlayersInPlayersGuild = useCallback((accountAddress: ContractAddress) => { diff --git a/client/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx b/client/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx index 0812657727..5cbbd61a4b 100644 --- a/client/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx +++ b/client/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx @@ -3,7 +3,7 @@ import { currencyFormat } from "../../../utils/utils"; import { ArmyInfo, getArmyByEntityId } from "@/hooks/helpers/useArmies"; import { useQuery } from "@/hooks/helpers/useQuery"; -import { useIsStructureImmune, useStructureImmunityTimer, useStructures } from "@/hooks/helpers/useStructures"; +import { Structure, useIsStructureImmune, useStructureImmunityTimer, useStructures } from "@/hooks/helpers/useStructures"; import { ArmyCapacity } from "@/ui/elements/ArmyCapacity"; import { BaseThreeTooltip, Position } from "@/ui/elements/BaseThreeTooltip"; import { Headline } from "@/ui/elements/Headline"; @@ -55,7 +55,7 @@ const RaiderInfo = ({ army }: ArmyInfoLabelProps) => { const nextBlockTimestamp = useUIStore((state) => state.nextBlockTimestamp); const isImmune = useIsStructureImmune(structure, nextBlockTimestamp || 0); - const timer = useStructureImmunityTimer(structure, nextBlockTimestamp || 0); + const timer = useStructureImmunityTimer(structure as Structure, nextBlockTimestamp || 0); return ( { battleEntityId={battle.entity_id} dojo={dojo} currentTimestamp={currentTimestamp} - structure={structure} + structure={structure as Structure} /> ))}
diff --git a/client/src/ui/components/worldmap/structures/StructureLabel.tsx b/client/src/ui/components/worldmap/structures/StructureLabel.tsx index 44a6a1ae0e..90340573a2 100644 --- a/client/src/ui/components/worldmap/structures/StructureLabel.tsx +++ b/client/src/ui/components/worldmap/structures/StructureLabel.tsx @@ -1,6 +1,6 @@ import { useGuilds } from "@/hooks/helpers/useGuilds"; import { useQuery } from "@/hooks/helpers/useQuery"; -import { useIsStructureImmune, useStructureImmunityTimer, useStructures } from "@/hooks/helpers/useStructures"; +import { Structure, useIsStructureImmune, useStructureImmunityTimer, useStructures } from "@/hooks/helpers/useStructures"; import { BaseThreeTooltip, Position } from "@/ui/elements/BaseThreeTooltip"; import { Headline } from "@/ui/elements/Headline"; import { formatTime } from "@/ui/utils/utils"; @@ -47,7 +47,7 @@ export const StructureInfoLabel = () => { const nextBlockTimestamp = useUIStore((state) => state.nextBlockTimestamp); const isImmune = useIsStructureImmune(structure, nextBlockTimestamp || 0); - const timer = useStructureImmunityTimer(structure, nextBlockTimestamp || 0); + const timer = useStructureImmunityTimer(structure as Structure, nextBlockTimestamp || 0); return ( <> @@ -65,7 +65,7 @@ export const StructureInfoLabel = () => { )} {}} maxInventory={3} diff --git a/client/src/ui/modules/entity-details/realm/RealmDetails.tsx b/client/src/ui/modules/entity-details/realm/RealmDetails.tsx index 16b9cb6bf6..b416f69d8f 100644 --- a/client/src/ui/modules/entity-details/realm/RealmDetails.tsx +++ b/client/src/ui/modules/entity-details/realm/RealmDetails.tsx @@ -1,4 +1,4 @@ -import { useIsStructureImmune, useStructureByEntityId, useStructureImmunityTimer } from "@/hooks/helpers/useStructures"; +import { Structure, useIsStructureImmune, useStructureByEntityId, useStructureImmunityTimer } from "@/hooks/helpers/useStructures"; import useUIStore from "@/hooks/store/useUIStore"; import { HintSection } from "@/ui/components/hints/HintModal"; import { HintModalButton } from "@/ui/elements/HintModalButton"; @@ -42,7 +42,7 @@ export const RealmDetails = () => { ); const isImmune = useIsStructureImmune(structure, nextBlockTimestamp || 0); - const timer = useStructureImmunityTimer(structure, nextBlockTimestamp || 0); + const timer = useStructureImmunityTimer(structure as Structure, nextBlockTimestamp || 0); return ( structure && ( diff --git a/client/src/ui/modules/military/battle-view/BattleView.tsx b/client/src/ui/modules/military/battle-view/BattleView.tsx index 0c95b363a0..c75609769a 100644 --- a/client/src/ui/modules/military/battle-view/BattleView.tsx +++ b/client/src/ui/modules/military/battle-view/BattleView.tsx @@ -2,7 +2,7 @@ import { BattleManager } from "@/dojo/modelManager/BattleManager"; import { useDojo } from "@/hooks/context/DojoContext"; import { useBattleManager } from "@/hooks/helpers/battles/useBattles"; import { getArmiesByBattleId, getArmyByEntityId, useArmyByArmyEntityId } from "@/hooks/helpers/useArmies"; -import { useStructureByEntityId, useStructureByPosition } from "@/hooks/helpers/useStructures"; +import { Structure, useStructureByEntityId, useStructureByPosition } from "@/hooks/helpers/useStructures"; import useUIStore from "@/hooks/store/useUIStore"; import { BattleSide } from "@bibliothecadao/eternum"; import { useMemo } from "react"; @@ -144,7 +144,7 @@ export const BattleView = () => { defenderHealth={defenderHealth} defenderTroops={defenderTroops} userArmiesInBattle={armies.userArmiesInBattle} - structure={structure} + structure={structure as Structure} /> ); }; From 4f40da4a3dd904730dbbfa08ae2180ecc206b952 Mon Sep 17 00:00:00 2001 From: ponderingdemocritus Date: Tue, 10 Dec 2024 16:53:15 +1100 Subject: [PATCH 4/4] check --- client/src/hooks/context/policies.tsx | 574 +++++++++--------- .../src/hooks/helpers/use-get-all-players.tsx | 2 +- client/src/hooks/helpers/useGuilds.tsx | 16 +- .../worldmap/armies/ArmyInfoLabel.tsx | 7 +- .../worldmap/structures/StructureLabel.tsx | 7 +- .../entity-details/realm/RealmDetails.tsx | 7 +- 6 files changed, 317 insertions(+), 296 deletions(-) diff --git a/client/src/hooks/context/policies.tsx b/client/src/hooks/context/policies.tsx index 14ffa58501..eb08c8a565 100644 --- a/client/src/hooks/context/policies.tsx +++ b/client/src/hooks/context/policies.tsx @@ -1,574 +1,574 @@ export const policies = [ { - "target": "0x354bf76d6828a8f560f3cb521baca00a2088694a858e7e2b06d4c55a912abc1", - "method": "dojo_name" + target: "0x354bf76d6828a8f560f3cb521baca00a2088694a858e7e2b06d4c55a912abc1", + method: "dojo_name", }, { - "target": "0x354bf76d6828a8f560f3cb521baca00a2088694a858e7e2b06d4c55a912abc1", - "method": "change_owner_amm_fee" + target: "0x354bf76d6828a8f560f3cb521baca00a2088694a858e7e2b06d4c55a912abc1", + method: "change_owner_amm_fee", }, { - "target": "0x354bf76d6828a8f560f3cb521baca00a2088694a858e7e2b06d4c55a912abc1", - "method": "change_owner_bridge_fee" + target: "0x354bf76d6828a8f560f3cb521baca00a2088694a858e7e2b06d4c55a912abc1", + method: "change_owner_bridge_fee", }, { - "target": "0x354bf76d6828a8f560f3cb521baca00a2088694a858e7e2b06d4c55a912abc1", - "method": "world_dispatcher" + target: "0x354bf76d6828a8f560f3cb521baca00a2088694a858e7e2b06d4c55a912abc1", + method: "world_dispatcher", }, { - "target": "0x6e2d41849e831e70a6c31fc702d246d242d11768badb8898a37f7289ac98e0b", - "method": "dojo_name" + target: "0x6e2d41849e831e70a6c31fc702d246d242d11768badb8898a37f7289ac98e0b", + method: "dojo_name", }, { - "target": "0x6e2d41849e831e70a6c31fc702d246d242d11768badb8898a37f7289ac98e0b", - "method": "battle_pillage" + target: "0x6e2d41849e831e70a6c31fc702d246d242d11768badb8898a37f7289ac98e0b", + method: "battle_pillage", }, { - "target": "0x6e2d41849e831e70a6c31fc702d246d242d11768badb8898a37f7289ac98e0b", - "method": "world_dispatcher" + target: "0x6e2d41849e831e70a6c31fc702d246d242d11768badb8898a37f7289ac98e0b", + method: "world_dispatcher", }, { - "target": "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", - "method": "dojo_name" + target: "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", + method: "dojo_name", }, { - "target": "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", - "method": "battle_start" + target: "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", + method: "battle_start", }, { - "target": "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", - "method": "battle_force_start" + target: "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", + method: "battle_force_start", }, { - "target": "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", - "method": "battle_join" + target: "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", + method: "battle_join", }, { - "target": "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", - "method": "battle_leave" + target: "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", + method: "battle_leave", }, { - "target": "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", - "method": "battle_claim" + target: "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", + method: "battle_claim", }, { - "target": "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", - "method": "battle_resolve" + target: "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", + method: "battle_resolve", }, { - "target": "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", - "method": "world_dispatcher" + target: "0x1569c4d55448f1de0eda2612b50c50d176399ac5b10e9ccb40ef398de671fc9", + method: "world_dispatcher", }, { - "target": "0x77420eb284da0b923d26bce9e466d0f5688b56c043eb7092a9ddede7036ca76", - "method": "dojo_name" + target: "0x77420eb284da0b923d26bce9e466d0f5688b56c043eb7092a9ddede7036ca76", + method: "dojo_name", }, { - "target": "0x77420eb284da0b923d26bce9e466d0f5688b56c043eb7092a9ddede7036ca76", - "method": "leave_battle" + target: "0x77420eb284da0b923d26bce9e466d0f5688b56c043eb7092a9ddede7036ca76", + method: "leave_battle", }, { - "target": "0x77420eb284da0b923d26bce9e466d0f5688b56c043eb7092a9ddede7036ca76", - "method": "leave_battle_if_ended" + target: "0x77420eb284da0b923d26bce9e466d0f5688b56c043eb7092a9ddede7036ca76", + method: "leave_battle_if_ended", }, { - "target": "0x77420eb284da0b923d26bce9e466d0f5688b56c043eb7092a9ddede7036ca76", - "method": "world_dispatcher" + target: "0x77420eb284da0b923d26bce9e466d0f5688b56c043eb7092a9ddede7036ca76", + method: "world_dispatcher", }, { - "target": "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", - "method": "dojo_name" + target: "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", + method: "dojo_name", }, { - "target": "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", - "method": "create" + target: "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", + method: "create", }, { - "target": "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", - "method": "pause_production" + target: "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", + method: "pause_production", }, { - "target": "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", - "method": "resume_production" + target: "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", + method: "resume_production", }, { - "target": "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", - "method": "destroy" + target: "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", + method: "destroy", }, { - "target": "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", - "method": "world_dispatcher" + target: "0x5db52a0bdfe2220067918e23459075f6af6e1a17592f9b737749c7bfba761cb", + method: "world_dispatcher", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "dojo_name" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "dojo_name", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_world_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_world_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_season_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_season_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_season_bridge_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_season_bridge_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_vrf_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_vrf_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_quest_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_quest_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_quest_reward_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_quest_reward_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_map_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_map_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_capacity_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_capacity_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_travel_stamina_cost_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_travel_stamina_cost_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_weight_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_weight_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_battle_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_battle_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_tick_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_tick_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_stamina_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_stamina_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_travel_food_cost_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_travel_food_cost_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_stamina_refill_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_stamina_refill_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_leveling_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_leveling_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_production_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_production_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_speed_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_speed_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_hyperstructure_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_hyperstructure_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_bank_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_bank_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_troop_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_troop_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_building_category_pop_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_building_category_pop_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_population_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_population_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_building_general_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_building_general_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_building_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_building_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_mercenaries_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_mercenaries_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_resource_bridge_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_resource_bridge_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_resource_bridge_fee_split_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_resource_bridge_fee_split_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_resource_bridge_whitelist_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_resource_bridge_whitelist_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_realm_max_level_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_realm_max_level_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_realm_level_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_realm_level_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "set_settlement_config" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "set_settlement_config", }, { - "target": "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", - "method": "world_dispatcher" + target: "0x735efcd639019c1c44e50d896e5a3791b00ae4d8ec0c9c208c474bfc28df69e", + method: "world_dispatcher", }, { - "target": "0x6ae886f0ecd08b144e0536b009c34c02d7d9f294f63f2c68d683c98b519ff6a", - "method": "dojo_name" + target: "0x6ae886f0ecd08b144e0536b009c34c02d7d9f294f63f2c68d683c98b519ff6a", + method: "dojo_name", }, { - "target": "0x6ae886f0ecd08b144e0536b009c34c02d7d9f294f63f2c68d683c98b519ff6a", - "method": "create_admin_bank" + target: "0x6ae886f0ecd08b144e0536b009c34c02d7d9f294f63f2c68d683c98b519ff6a", + method: "create_admin_bank", }, { - "target": "0x6ae886f0ecd08b144e0536b009c34c02d7d9f294f63f2c68d683c98b519ff6a", - "method": "world_dispatcher" + target: "0x6ae886f0ecd08b144e0536b009c34c02d7d9f294f63f2c68d683c98b519ff6a", + method: "world_dispatcher", }, { - "target": "0x47901f6a54abffda63f707c86397af6e7e9a9dc75fe4ff2d1983eb89af41be7", - "method": "dojo_name" + target: "0x47901f6a54abffda63f707c86397af6e7e9a9dc75fe4ff2d1983eb89af41be7", + method: "dojo_name", }, { - "target": "0x47901f6a54abffda63f707c86397af6e7e9a9dc75fe4ff2d1983eb89af41be7", - "method": "create" + target: "0x47901f6a54abffda63f707c86397af6e7e9a9dc75fe4ff2d1983eb89af41be7", + method: "create", }, { - "target": "0x47901f6a54abffda63f707c86397af6e7e9a9dc75fe4ff2d1983eb89af41be7", - "method": "world_dispatcher" + target: "0x47901f6a54abffda63f707c86397af6e7e9a9dc75fe4ff2d1983eb89af41be7", + method: "world_dispatcher", }, { - "target": "0x50da94aa78f418ff54eecaf32b8ebd0c62728e20ff4964bae59c10e3fd89ec2", - "method": "dojo_name" + target: "0x50da94aa78f418ff54eecaf32b8ebd0c62728e20ff4964bae59c10e3fd89ec2", + method: "dojo_name", }, { - "target": "0x50da94aa78f418ff54eecaf32b8ebd0c62728e20ff4964bae59c10e3fd89ec2", - "method": "mint" + target: "0x50da94aa78f418ff54eecaf32b8ebd0c62728e20ff4964bae59c10e3fd89ec2", + method: "mint", }, { - "target": "0x50da94aa78f418ff54eecaf32b8ebd0c62728e20ff4964bae59c10e3fd89ec2", - "method": "world_dispatcher" + target: "0x50da94aa78f418ff54eecaf32b8ebd0c62728e20ff4964bae59c10e3fd89ec2", + method: "world_dispatcher", }, { - "target": "0x535369080fd8880d899ee75d05585ceaf8295c908558dd2f9404362016a48ed", - "method": "dojo_name" + target: "0x535369080fd8880d899ee75d05585ceaf8295c908558dd2f9404362016a48ed", + method: "dojo_name", }, { - "target": "0x535369080fd8880d899ee75d05585ceaf8295c908558dd2f9404362016a48ed", - "method": "world_dispatcher" + target: "0x535369080fd8880d899ee75d05585ceaf8295c908558dd2f9404362016a48ed", + method: "world_dispatcher", }, { - "target": "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", - "method": "dojo_name" + target: "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", + method: "dojo_name", }, { - "target": "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", - "method": "create_guild" + target: "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", + method: "create_guild", }, { - "target": "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", - "method": "join_guild" + target: "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", + method: "join_guild", }, { - "target": "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", - "method": "whitelist_player" + target: "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", + method: "whitelist_player", }, { - "target": "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", - "method": "transfer_guild_ownership" + target: "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", + method: "transfer_guild_ownership", }, { - "target": "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", - "method": "remove_guild_member" + target: "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", + method: "remove_guild_member", }, { - "target": "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", - "method": "remove_player_from_whitelist" + target: "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", + method: "remove_player_from_whitelist", }, { - "target": "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", - "method": "world_dispatcher" + target: "0x4fbe03b467ec8b6da807f88442e41bb4009245dd1108285c98b66f42a2cb856", + method: "world_dispatcher", }, { - "target": "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", - "method": "dojo_name" + target: "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", + method: "dojo_name", }, { - "target": "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", - "method": "get_points" + target: "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", + method: "get_points", }, { - "target": "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", - "method": "create" + target: "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", + method: "create", }, { - "target": "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", - "method": "contribute_to_construction" + target: "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", + method: "contribute_to_construction", }, { - "target": "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", - "method": "set_co_owners" + target: "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", + method: "set_co_owners", }, { - "target": "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", - "method": "end_game" + target: "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", + method: "end_game", }, { - "target": "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", - "method": "set_access" + target: "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", + method: "set_access", }, { - "target": "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", - "method": "world_dispatcher" + target: "0x54ff99c00d5eba3faa42c4da6ea72120ece56332fb1eba071f6ca75bb7ceeec", + method: "world_dispatcher", }, { - "target": "0x4b35c5abdffe0b35b1823349c8341f4ef6b4f6f28ec8d69401ac29ef4ff95bf", - "method": "dojo_name" + target: "0x4b35c5abdffe0b35b1823349c8341f4ef6b4f6f28ec8d69401ac29ef4ff95bf", + method: "dojo_name", }, { - "target": "0x4b35c5abdffe0b35b1823349c8341f4ef6b4f6f28ec8d69401ac29ef4ff95bf", - "method": "add" + target: "0x4b35c5abdffe0b35b1823349c8341f4ef6b4f6f28ec8d69401ac29ef4ff95bf", + method: "add", }, { - "target": "0x4b35c5abdffe0b35b1823349c8341f4ef6b4f6f28ec8d69401ac29ef4ff95bf", - "method": "remove" + target: "0x4b35c5abdffe0b35b1823349c8341f4ef6b4f6f28ec8d69401ac29ef4ff95bf", + method: "remove", }, { - "target": "0x4b35c5abdffe0b35b1823349c8341f4ef6b4f6f28ec8d69401ac29ef4ff95bf", - "method": "world_dispatcher" + target: "0x4b35c5abdffe0b35b1823349c8341f4ef6b4f6f28ec8d69401ac29ef4ff95bf", + method: "world_dispatcher", }, { - "target": "0x3810016a03df18497b4a14661547dc8cd55b413eed9d4b2d34bbc6403f67dd0", - "method": "dojo_name" + target: "0x3810016a03df18497b4a14661547dc8cd55b413eed9d4b2d34bbc6403f67dd0", + method: "dojo_name", }, { - "target": "0x3810016a03df18497b4a14661547dc8cd55b413eed9d4b2d34bbc6403f67dd0", - "method": "discover_shards_mine" + target: "0x3810016a03df18497b4a14661547dc8cd55b413eed9d4b2d34bbc6403f67dd0", + method: "discover_shards_mine", }, { - "target": "0x3810016a03df18497b4a14661547dc8cd55b413eed9d4b2d34bbc6403f67dd0", - "method": "add_mercenaries_to_structure" + target: "0x3810016a03df18497b4a14661547dc8cd55b413eed9d4b2d34bbc6403f67dd0", + method: "add_mercenaries_to_structure", }, { - "target": "0x3810016a03df18497b4a14661547dc8cd55b413eed9d4b2d34bbc6403f67dd0", - "method": "world_dispatcher" + target: "0x3810016a03df18497b4a14661547dc8cd55b413eed9d4b2d34bbc6403f67dd0", + method: "world_dispatcher", }, { - "target": "0x43312111eb7a0f1388d79dfeed55b7b6380490828badae01580c22824b10660", - "method": "dojo_name" + target: "0x43312111eb7a0f1388d79dfeed55b7b6380490828badae01580c22824b10660", + method: "dojo_name", }, { - "target": "0x43312111eb7a0f1388d79dfeed55b7b6380490828badae01580c22824b10660", - "method": "explore" + target: "0x43312111eb7a0f1388d79dfeed55b7b6380490828badae01580c22824b10660", + method: "explore", }, { - "target": "0x43312111eb7a0f1388d79dfeed55b7b6380490828badae01580c22824b10660", - "method": "world_dispatcher" + target: "0x43312111eb7a0f1388d79dfeed55b7b6380490828badae01580c22824b10660", + method: "world_dispatcher", }, { - "target": "0x1998db30b2ac92835abda4b1ca192497ead01ba57d6336363daec16fe1b1e9f", - "method": "dojo_name" + target: "0x1998db30b2ac92835abda4b1ca192497ead01ba57d6336363daec16fe1b1e9f", + method: "dojo_name", }, { - "target": "0x1998db30b2ac92835abda4b1ca192497ead01ba57d6336363daec16fe1b1e9f", - "method": "set_address_name" + target: "0x1998db30b2ac92835abda4b1ca192497ead01ba57d6336363daec16fe1b1e9f", + method: "set_address_name", }, { - "target": "0x1998db30b2ac92835abda4b1ca192497ead01ba57d6336363daec16fe1b1e9f", - "method": "set_entity_name" + target: "0x1998db30b2ac92835abda4b1ca192497ead01ba57d6336363daec16fe1b1e9f", + method: "set_entity_name", }, { - "target": "0x1998db30b2ac92835abda4b1ca192497ead01ba57d6336363daec16fe1b1e9f", - "method": "world_dispatcher" + target: "0x1998db30b2ac92835abda4b1ca192497ead01ba57d6336363daec16fe1b1e9f", + method: "world_dispatcher", }, { - "target": "0x4939f89faf664ec0d2537c92d1595158f5c6c47ff1f40986f18366f686623ef", - "method": "dojo_name" + target: "0x4939f89faf664ec0d2537c92d1595158f5c6c47ff1f40986f18366f686623ef", + method: "dojo_name", }, { - "target": "0x4939f89faf664ec0d2537c92d1595158f5c6c47ff1f40986f18366f686623ef", - "method": "transfer_ownership" + target: "0x4939f89faf664ec0d2537c92d1595158f5c6c47ff1f40986f18366f686623ef", + method: "transfer_ownership", }, { - "target": "0x4939f89faf664ec0d2537c92d1595158f5c6c47ff1f40986f18366f686623ef", - "method": "world_dispatcher" + target: "0x4939f89faf664ec0d2537c92d1595158f5c6c47ff1f40986f18366f686623ef", + method: "world_dispatcher", }, { - "target": "0x584e6efb92e8316525fb64f4db6630a6e7bb26b0716a2a6264c629e233c680e", - "method": "dojo_name" + target: "0x584e6efb92e8316525fb64f4db6630a6e7bb26b0716a2a6264c629e233c680e", + method: "dojo_name", }, { - "target": "0x584e6efb92e8316525fb64f4db6630a6e7bb26b0716a2a6264c629e233c680e", - "method": "create" + target: "0x584e6efb92e8316525fb64f4db6630a6e7bb26b0716a2a6264c629e233c680e", + method: "create", }, { - "target": "0x584e6efb92e8316525fb64f4db6630a6e7bb26b0716a2a6264c629e233c680e", - "method": "upgrade_level" + target: "0x584e6efb92e8316525fb64f4db6630a6e7bb26b0716a2a6264c629e233c680e", + method: "upgrade_level", }, { - "target": "0x584e6efb92e8316525fb64f4db6630a6e7bb26b0716a2a6264c629e233c680e", - "method": "quest_claim" + target: "0x584e6efb92e8316525fb64f4db6630a6e7bb26b0716a2a6264c629e233c680e", + method: "quest_claim", }, { - "target": "0x584e6efb92e8316525fb64f4db6630a6e7bb26b0716a2a6264c629e233c680e", - "method": "world_dispatcher" + target: "0x584e6efb92e8316525fb64f4db6630a6e7bb26b0716a2a6264c629e233c680e", + method: "world_dispatcher", }, { - "target": "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", - "method": "dojo_name" + target: "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", + method: "dojo_name", }, { - "target": "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", - "method": "deposit_initial" + target: "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", + method: "deposit_initial", }, { - "target": "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", - "method": "deposit" + target: "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", + method: "deposit", }, { - "target": "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", - "method": "start_withdraw" + target: "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", + method: "start_withdraw", }, { - "target": "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", - "method": "finish_withdraw" + target: "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", + method: "finish_withdraw", }, { - "target": "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", - "method": "world_dispatcher" + target: "0x5277d931bb386fa7e1436b3f2f2141ae7071a5066bc3f47bf865e6bbc67cdc2", + method: "world_dispatcher", }, { - "target": "0x4b3d415b5f96e4c53d6245e9a695d97ae42777abeee0c776ee5ee4eba84ab2b", - "method": "dojo_name" + target: "0x4b3d415b5f96e4c53d6245e9a695d97ae42777abeee0c776ee5ee4eba84ab2b", + method: "dojo_name", }, { - "target": "0x4b3d415b5f96e4c53d6245e9a695d97ae42777abeee0c776ee5ee4eba84ab2b", - "method": "approve" + target: "0x4b3d415b5f96e4c53d6245e9a695d97ae42777abeee0c776ee5ee4eba84ab2b", + method: "approve", }, { - "target": "0x4b3d415b5f96e4c53d6245e9a695d97ae42777abeee0c776ee5ee4eba84ab2b", - "method": "send" + target: "0x4b3d415b5f96e4c53d6245e9a695d97ae42777abeee0c776ee5ee4eba84ab2b", + method: "send", }, { - "target": "0x4b3d415b5f96e4c53d6245e9a695d97ae42777abeee0c776ee5ee4eba84ab2b", - "method": "pickup" + target: "0x4b3d415b5f96e4c53d6245e9a695d97ae42777abeee0c776ee5ee4eba84ab2b", + method: "pickup", }, { - "target": "0x4b3d415b5f96e4c53d6245e9a695d97ae42777abeee0c776ee5ee4eba84ab2b", - "method": "world_dispatcher" + target: "0x4b3d415b5f96e4c53d6245e9a695d97ae42777abeee0c776ee5ee4eba84ab2b", + method: "world_dispatcher", }, { - "target": "0x969e0c5d366b05711d01c963ec1f8cef0f23a5115d92f71a693523d27ffe8b", - "method": "dojo_name" + target: "0x969e0c5d366b05711d01c963ec1f8cef0f23a5115d92f71a693523d27ffe8b", + method: "dojo_name", }, { - "target": "0x969e0c5d366b05711d01c963ec1f8cef0f23a5115d92f71a693523d27ffe8b", - "method": "register_to_leaderboard" + target: "0x969e0c5d366b05711d01c963ec1f8cef0f23a5115d92f71a693523d27ffe8b", + method: "register_to_leaderboard", }, { - "target": "0x969e0c5d366b05711d01c963ec1f8cef0f23a5115d92f71a693523d27ffe8b", - "method": "claim_leaderboard_rewards" + target: "0x969e0c5d366b05711d01c963ec1f8cef0f23a5115d92f71a693523d27ffe8b", + method: "claim_leaderboard_rewards", }, { - "target": "0x969e0c5d366b05711d01c963ec1f8cef0f23a5115d92f71a693523d27ffe8b", - "method": "world_dispatcher" + target: "0x969e0c5d366b05711d01c963ec1f8cef0f23a5115d92f71a693523d27ffe8b", + method: "world_dispatcher", }, { - "target": "0x385203a480effb436baf980afc730ec65b00a7cf7668c03fa821095a03e3d6a", - "method": "dojo_name" + target: "0x385203a480effb436baf980afc730ec65b00a7cf7668c03fa821095a03e3d6a", + method: "dojo_name", }, { - "target": "0x385203a480effb436baf980afc730ec65b00a7cf7668c03fa821095a03e3d6a", - "method": "buy" + target: "0x385203a480effb436baf980afc730ec65b00a7cf7668c03fa821095a03e3d6a", + method: "buy", }, { - "target": "0x385203a480effb436baf980afc730ec65b00a7cf7668c03fa821095a03e3d6a", - "method": "sell" + target: "0x385203a480effb436baf980afc730ec65b00a7cf7668c03fa821095a03e3d6a", + method: "sell", }, { - "target": "0x385203a480effb436baf980afc730ec65b00a7cf7668c03fa821095a03e3d6a", - "method": "world_dispatcher" + target: "0x385203a480effb436baf980afc730ec65b00a7cf7668c03fa821095a03e3d6a", + method: "world_dispatcher", }, { - "target": "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", - "method": "dojo_name" + target: "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", + method: "dojo_name", }, { - "target": "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", - "method": "create_order" + target: "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", + method: "create_order", }, { - "target": "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", - "method": "accept_order" + target: "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", + method: "accept_order", }, { - "target": "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", - "method": "accept_partial_order" + target: "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", + method: "accept_partial_order", }, { - "target": "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", - "method": "cancel_order" + target: "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", + method: "cancel_order", }, { - "target": "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", - "method": "world_dispatcher" + target: "0x2a3bbf9c7dbc06455e85754a581f52736d2e7705e2440bb86c114a02e8123eb", + method: "world_dispatcher", }, { - "target": "0x5eb7095584392d5342723dd3507bb09b24bb5b11934d1589e2d4e6b1be5b60d", - "method": "dojo_name" + target: "0x5eb7095584392d5342723dd3507bb09b24bb5b11934d1589e2d4e6b1be5b60d", + method: "dojo_name", }, { - "target": "0x5eb7095584392d5342723dd3507bb09b24bb5b11934d1589e2d4e6b1be5b60d", - "method": "travel_hex" + target: "0x5eb7095584392d5342723dd3507bb09b24bb5b11934d1589e2d4e6b1be5b60d", + method: "travel_hex", }, { - "target": "0x5eb7095584392d5342723dd3507bb09b24bb5b11934d1589e2d4e6b1be5b60d", - "method": "world_dispatcher" + target: "0x5eb7095584392d5342723dd3507bb09b24bb5b11934d1589e2d4e6b1be5b60d", + method: "world_dispatcher", }, { - "target": "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", - "method": "dojo_name" + target: "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", + method: "dojo_name", }, { - "target": "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", - "method": "army_create" + target: "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", + method: "army_create", }, { - "target": "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", - "method": "army_delete" + target: "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", + method: "army_delete", }, { - "target": "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", - "method": "army_buy_troops" + target: "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", + method: "army_buy_troops", }, { - "target": "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", - "method": "army_merge_troops" + target: "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", + method: "army_merge_troops", }, { - "target": "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", - "method": "world_dispatcher" - } + target: "0x37aa3fcb87db8ac9f44dfe761e571efeff7b244d245abd158bc27e4b8f3e840", + method: "world_dispatcher", + }, ]; diff --git a/client/src/hooks/helpers/use-get-all-players.tsx b/client/src/hooks/helpers/use-get-all-players.tsx index 2dcde2bc42..b600208338 100644 --- a/client/src/hooks/helpers/use-get-all-players.tsx +++ b/client/src/hooks/helpers/use-get-all-players.tsx @@ -69,7 +69,7 @@ export const useGetAllPlayers = () => { ]).size, hyperstructures: runQuery([Has(Hyperstructure), HasValue(Owner, { address: player.address })]).size, isAlive: player.isAlive, - guildName: player.guildName || "", + guildName: player.guildName || "", }; }); }; diff --git a/client/src/hooks/helpers/useGuilds.tsx b/client/src/hooks/helpers/useGuilds.tsx index 0b8a11fdb1..b2b8cdbe33 100644 --- a/client/src/hooks/helpers/useGuilds.tsx +++ b/client/src/hooks/helpers/useGuilds.tsx @@ -186,7 +186,7 @@ export const useGuilds = () => { guilds, nextBlockTimestamp, account.address, - (entityId: number) => getEntityName(entityId) || 'Unknown', + (entityId: number) => getEntityName(entityId) || "Unknown", Guild, Owner, GuildMember, @@ -202,7 +202,7 @@ export const useGuilds = () => { [getEntityIdFromKeys([BigInt(entityId)])], nextBlockTimestamp, account.address, - (entityId: number) => getEntityName(entityId) || 'Unknown', + (entityId: number) => getEntityName(entityId) || "Unknown", Guild, Owner, GuildMember, @@ -222,7 +222,7 @@ export const useGuilds = () => { const guild = getComponentValue(Guild, getEntityIdFromKeys([BigInt(guildMember.guild_entity_id)])); const owner = getComponentValue(Owner, getEntityIdFromKeys([BigInt(guildMember.guild_entity_id)])); - const name = guildMember.guild_entity_id ? getEntityName(guildMember.guild_entity_id) || 'Unknown' : "Unknown"; + const name = guildMember.guild_entity_id ? getEntityName(guildMember.guild_entity_id) || "Unknown" : "Unknown"; return { entityId: guildMember?.guild_entity_id, @@ -254,13 +254,19 @@ export const useGuilds = () => { HasValue(GuildWhitelist, { guild_entity_id: guildEntityId, is_whitelisted: true }), ]); - return formatGuildWhitelist(whitelist, players, GuildWhitelist, getAddressName, (entityId: number) => getEntityName(entityId) || 'Unknown'); + return formatGuildWhitelist( + whitelist, + players, + GuildWhitelist, + getAddressName, + (entityId: number) => getEntityName(entityId) || "Unknown", + ); }; const usePlayerWhitelist = (address: ContractAddress) => { const whitelist = useEntityQuery([HasValue(GuildWhitelist, { address, is_whitelisted: true })]); - return formatPlayerWhitelist(whitelist, GuildWhitelist, (entityId: number) => getEntityName(entityId) || 'Unknown'); + return formatPlayerWhitelist(whitelist, GuildWhitelist, (entityId: number) => getEntityName(entityId) || "Unknown"); }; const getPlayersInPlayersGuild = useCallback((accountAddress: ContractAddress) => { diff --git a/client/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx b/client/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx index 5cbbd61a4b..4309bc1e99 100644 --- a/client/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx +++ b/client/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx @@ -3,7 +3,12 @@ import { currencyFormat } from "../../../utils/utils"; import { ArmyInfo, getArmyByEntityId } from "@/hooks/helpers/useArmies"; import { useQuery } from "@/hooks/helpers/useQuery"; -import { Structure, useIsStructureImmune, useStructureImmunityTimer, useStructures } from "@/hooks/helpers/useStructures"; +import { + Structure, + useIsStructureImmune, + useStructureImmunityTimer, + useStructures, +} from "@/hooks/helpers/useStructures"; import { ArmyCapacity } from "@/ui/elements/ArmyCapacity"; import { BaseThreeTooltip, Position } from "@/ui/elements/BaseThreeTooltip"; import { Headline } from "@/ui/elements/Headline"; diff --git a/client/src/ui/components/worldmap/structures/StructureLabel.tsx b/client/src/ui/components/worldmap/structures/StructureLabel.tsx index 90340573a2..ef0384fa34 100644 --- a/client/src/ui/components/worldmap/structures/StructureLabel.tsx +++ b/client/src/ui/components/worldmap/structures/StructureLabel.tsx @@ -1,6 +1,11 @@ import { useGuilds } from "@/hooks/helpers/useGuilds"; import { useQuery } from "@/hooks/helpers/useQuery"; -import { Structure, useIsStructureImmune, useStructureImmunityTimer, useStructures } from "@/hooks/helpers/useStructures"; +import { + Structure, + useIsStructureImmune, + useStructureImmunityTimer, + useStructures, +} from "@/hooks/helpers/useStructures"; import { BaseThreeTooltip, Position } from "@/ui/elements/BaseThreeTooltip"; import { Headline } from "@/ui/elements/Headline"; import { formatTime } from "@/ui/utils/utils"; diff --git a/client/src/ui/modules/entity-details/realm/RealmDetails.tsx b/client/src/ui/modules/entity-details/realm/RealmDetails.tsx index b416f69d8f..43cf81d8b4 100644 --- a/client/src/ui/modules/entity-details/realm/RealmDetails.tsx +++ b/client/src/ui/modules/entity-details/realm/RealmDetails.tsx @@ -1,4 +1,9 @@ -import { Structure, useIsStructureImmune, useStructureByEntityId, useStructureImmunityTimer } from "@/hooks/helpers/useStructures"; +import { + Structure, + useIsStructureImmune, + useStructureByEntityId, + useStructureImmunityTimer, +} from "@/hooks/helpers/useStructures"; import useUIStore from "@/hooks/store/useUIStore"; import { HintSection } from "@/ui/components/hints/HintModal"; import { HintModalButton } from "@/ui/elements/HintModalButton";