Merge branch 'main' of https://github.com/MasterGordon/minesweeper into main
This commit is contained in:
commit
a5f9ba865d
|
|
@ -1,4 +1,4 @@
|
|||
import { PropsWithChildren, useEffect, useRef, useState } from "react";
|
||||
import { type PropsWithChildren, useEffect, useRef, useState } from "react";
|
||||
import { Button } from "./components/Button";
|
||||
import { motion } from "framer-motion";
|
||||
import {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { atom } from "jotai";
|
||||
import { atomWithStorage } from "jotai/utils";
|
||||
import { FeedItem } from "./components/Feed/FeedItem";
|
||||
import type { FeedItem } from "./components/Feed/FeedItem";
|
||||
|
||||
export const gameIdAtom = atom<string | undefined>(undefined);
|
||||
export const loginTokenAtom = atomWithStorage<string | undefined>(
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { motion } from "framer-motion";
|
||||
import { PropsWithChildren } from "react";
|
||||
import type { PropsWithChildren } from "react";
|
||||
import { formatTimeSpan } from "../../../shared/time";
|
||||
import GemsIcon from "../GemIcon";
|
||||
import { Rarity as RarityType } from "../../../shared/lootboxes";
|
||||
import type { Rarity as RarityType } from "../../../shared/lootboxes";
|
||||
import { Rarity } from "../Rarity";
|
||||
import { themes } from "../../themes";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { Link } from "wouter";
|
||||
import { ServerGame } from "../../shared/game";
|
||||
import type { ServerGame } from "../../shared/game";
|
||||
import { formatRelativeTime, formatTimeSpan } from "../../shared/time";
|
||||
import { Button } from "./Button";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
||||
import { forwardRef, PropsWithChildren } from "react";
|
||||
import { forwardRef, type PropsWithChildren } from "react";
|
||||
import { cn } from "../lib/utils";
|
||||
|
||||
const Popover = PopoverPrimitive.Root;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { PropsWithChildren } from "react";
|
||||
import type { PropsWithChildren } from "react";
|
||||
import { cn } from "../lib/utils";
|
||||
import { rarities } from "../../shared/lootboxes";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
import React from "react";
|
||||
import type { Application } from "pixi.js";
|
||||
import { IClampZoomOptions, Viewport as PixiViewport } from "pixi-viewport";
|
||||
import {
|
||||
type IClampZoomOptions,
|
||||
Viewport as PixiViewport,
|
||||
} from "pixi-viewport";
|
||||
import { PixiComponent, useApp } from "@pixi/react";
|
||||
import { BaseTexture, SCALE_MODES } from "pixi.js";
|
||||
BaseTexture.defaultOptions.scaleMode = SCALE_MODES.NEAREST;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,20 @@ export type LoadedTheme = Record<
|
|||
size: number;
|
||||
};
|
||||
|
||||
export const even = (...sprites: LazySprite[]): WeightedLazySprites[] => {
|
||||
return sprites.map((sprite) => ({ weight: 0.5, sprite }));
|
||||
};
|
||||
|
||||
export const mainWithSpecials = (
|
||||
...sprites: LazySprite[]
|
||||
): WeightedLazySprites[] => {
|
||||
const [main, ...specials] = sprites;
|
||||
return [
|
||||
{ weight: 1, sprite: main },
|
||||
...specials.map((sprite) => ({ weight: 0.05, sprite })),
|
||||
];
|
||||
};
|
||||
|
||||
export const useTheme = (theme: Theme) => {
|
||||
const [loadedTheme, setLoadedTheme] = useState<LoadedTheme | undefined>(
|
||||
undefined,
|
||||
|
|
|
|||
|
|
@ -1,17 +1,11 @@
|
|||
import type { Theme } from "./Theme";
|
||||
import { even, type Theme } from "./Theme";
|
||||
|
||||
export const techiesDireTheme: Theme = {
|
||||
size: 32,
|
||||
mine: [
|
||||
{
|
||||
weight: 0.5,
|
||||
sprite: () => import("../assets/themes/techies/dire/mine-1.png"),
|
||||
},
|
||||
{
|
||||
weight: 0.5,
|
||||
sprite: () => import("../assets/themes/techies/dire/mine-2.png"),
|
||||
},
|
||||
],
|
||||
mine: even(
|
||||
() => import("../assets/themes/techies/dire/mine-1.png"),
|
||||
() => import("../assets/themes/techies/dire/mine-2.png"),
|
||||
),
|
||||
tile: () => import("../assets/themes/techies/dire/tile-1.png"),
|
||||
revealed: () => import("../assets/themes/techies/dire/revealed.png"),
|
||||
flag: () => import("../assets/themes/techies/flag.png"),
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { ReactNode } from "react";
|
||||
import type { ReactNode } from "react";
|
||||
import { Switch } from "../../components/Switch";
|
||||
import { useWSMutation, useWSQuery } from "../../hooks";
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ const createWSClient = () => {
|
|||
let ws = new WebSocket(connectionString);
|
||||
let reconnectAttempts = 0;
|
||||
const maxReconnectAttempts = 5;
|
||||
let isAuthenticated = false;
|
||||
|
||||
const connect = () => {
|
||||
ws = new WebSocket(connectionString);
|
||||
|
|
@ -35,7 +34,6 @@ const createWSClient = () => {
|
|||
if (token) {
|
||||
try {
|
||||
await dispatch("user.loginWithToken", { token: JSON.parse(token) });
|
||||
isAuthenticated = true;
|
||||
} catch (e) {
|
||||
console.error("Re-authentication failed", e);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue