UPDATE: Fix bug
All checks were successful
Gitea Auto Deploy / Deploy-Container (push) Successful in 45s

This commit is contained in:
2026-03-06 14:29:26 +07:00
parent f5541c9527
commit 53497d5ece
8 changed files with 28 additions and 34 deletions

View File

@@ -26,11 +26,11 @@ const nextConfig: NextConfig = {
},
{
protocol: "https",
hostname: "cdn.kain.id.vn",
hostname: "r2.kain.id.vn",
pathname: "**",
},
{
protocol: "http",
protocol: "https",
hostname: "cdn.kain.id.vn",
pathname: "**",
}
@@ -40,7 +40,7 @@ const nextConfig: NextConfig = {
styledComponents: true,
},
env: {
CDN_URL: "https://cdn.kain.id.vn/firefly/assets/asbres",
CDN_URL: "https://r2.kain.id.vn/asbres",
},
};

View File

@@ -16,8 +16,8 @@ export default function EnemyBar() {
return (
<div className="p-3 w-full">
<div className="flex gap-3 overflow-x-auto pb-2">
{enemyDetail && Object.values(enemyDetail).filter((enemy) => (enemy.stats?.AV > 0
&& enemy.stats.HP <= enemy.maxHP)).map((enemy, uid) => (
{enemyDetail && Object.values(enemyDetail).filter((enemy) => (
enemy.stats.HP <= enemy.maxHP)).map((enemy, uid) => (
<div key={uid} className="bg-base-200 rounded-lg p-3 border border-gray-700 w-52 shrink-0">
<div className="flex items-center justify-between mb-3">
<div className="flex items-center gap-2">

View File

@@ -1,6 +1,6 @@
"use client";
import useLocaleStore from "@/stores/localeStore";
import { createContext, PropsWithChildren, useEffect } from "react";
import { createContext, PropsWithChildren } from "react";
interface ThemeContextType {
theme?: string;
@@ -10,26 +10,12 @@ export const ThemeContext = createContext<ThemeContextType>({});
export const ThemeProvider = ({ children }: PropsWithChildren) => {
const { theme, setTheme } = useLocaleStore()
useEffect(() => {
if (typeof window !== "undefined") {
const storedTheme = localStorage.getItem("theme");
if (storedTheme) setTheme(storedTheme);
}
}, []);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const changeTheme = (nextTheme: string | null) => {
if (nextTheme) {
setTheme(nextTheme);
if (typeof window !== "undefined") {
localStorage.setItem("theme", nextTheme);
}
} else {
setTheme(theme === "winter" ? "night" : "winter");
if (typeof window !== "undefined") {
localStorage.setItem("theme", theme);
}
}
};

View File

@@ -1,4 +1,4 @@
import { DamageType, AvatarAnalysisJson, UseSkillType, BattleBeginType, BattleEndType, DamageDetailType, EntityDefeatedType, SetBattleLineupType, TurnBeginType, TurnEndType, UpdateCycleType, UpdateWaveType, VersionType, StatChangeType, UpdateTeamFormationType } from '@/types';
import { DamageType, AvatarAnalysisJson, UseSkillType, BattleBeginType, BattleEndType, DamageDetailType, EntityDefeatedType, SetBattleLineupType, TurnBeginType, TurnEndType, UpdateCycleType, UpdateWaveType, VersionType, StatChangeType, UpdateTeamFormationType, Team } from '@/types';
import { InitializeEnemyType } from '@/types/enemy';
import { AvatarBattleInfo, AvatarInfo, BattleDataStateJson, EnemyInfo, SkillBattleInfo, TurnBattleInfo } from '@/types/mics';
import { create } from 'zustand'
@@ -257,24 +257,24 @@ const useBattleDataStore = create<BattleDataState>((set, get) => ({
onUpdateTeamFormation: (data: UpdateTeamFormationType) => {
let avatarDetail = get().avatarDetail
let enemyDetail = get().enemyDetail
if (!avatarDetail) {
avatarDetail = {} as Record<number, AvatarInfo>
for (const entity of data.entities) {
if (entity.team === "Player" && avatarDetail[entity.uid]) {
}
}
}
if (!enemyDetail) {
enemyDetail = {} as Record<number, EnemyInfo>
}
if (!avatarDetail) {
avatarDetail = {} as Record<number, AvatarInfo>
}
if (data.team === Team.Enemy) {
for (let i = 0; i < data.entities.length; i++) {
const entity = data.entities[i];
if (entity.team === "Enemy" && enemyDetail[entity.uid]) {
if (entity.team === Team.Enemy && enemyDetail[entity.uid]) {
enemyDetail[entity.uid].positionIndex = i
enemyDetail[entity.uid].waveIndex = get().waveIndex
}
}
}
set({
avatarDetail: avatarDetail,
enemyDetail: enemyDetail
@@ -290,7 +290,7 @@ const useBattleDataStore = create<BattleDataState>((set, get) => ({
isDie: false,
killer_uid: -1,
positionIndex: enemyDetail[data.enemy.uid].positionIndex,
waveIndex: get().waveIndex,
waveIndex: enemyDetail[data.enemy.uid].waveIndex,
name: data.enemy.name,
maxHP: data.enemy.base_stats.hp,
level: data.enemy.base_stats.level,

View File

@@ -1,6 +1,8 @@
import { Team } from "./team";
export interface EntityType {
uid: number;
team: "Player" | "Enemy";
team: Team;
}
export interface EntityDefeatedType {

View File

@@ -10,3 +10,4 @@ export * from "./version"
export * from "./entity"
export * from "./stat"
export * from "./enemy"
export * from "./team"

View File

@@ -1,4 +1,5 @@
import { EntityType } from "./entity";
import { Team } from "./team";
export interface AvatarType{
id: number;
@@ -12,5 +13,5 @@ export interface SetBattleLineupType {
export interface UpdateTeamFormationType {
entities: EntityType[],
team: "Player" | "Enemy"
team: Team
}

4
src/types/team.ts Normal file
View File

@@ -0,0 +1,4 @@
export enum Team {
Player = "Player",
Enemy = "Enemy"
}