From 8640b62134b44896eea951dcb9699f2059664779 Mon Sep 17 00:00:00 2001 From: AzenKain Date: Tue, 5 May 2026 20:05:33 +0700 Subject: [PATCH] UPDATE: FIx bug --- .gitea/workflows/build.yml | 15 +--- data/avatar_basic.json.br | Bin 2889 -> 3430 bytes data/monster_basic.json.br | Bin 31798 -> 31383 bytes src/app/page.tsx | 2 +- src/components/card/characterCard.tsx | 4 +- src/components/lineupbar/index.tsx | 6 +- src/hooks/useDamagePerCycle.ts | 64 +++++++------- src/stores/battleDataStore.ts | 117 ++++++++++++++++++-------- src/types/attack.ts | 50 ++++++++++- src/types/enemy.ts | 6 +- src/types/skill.ts | 2 +- src/types/stat.ts | 14 ++- 12 files changed, 190 insertions(+), 90 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 6038e66..0f1b04d 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -8,17 +8,8 @@ jobs: runs-on: ubuntu-latest steps: - - name: Check out latest code - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: Stop and remove old containers + - name: Deploy to Container run: | - docker compose down || true - - - name: Remove unused Docker resources - run: | - docker system prune -a --volumes -f - - - name: Build and restart containers - run: | - docker compose up -d \ No newline at end of file + docker compose up -d --build --remove-orphans \ No newline at end of file diff --git a/data/avatar_basic.json.br b/data/avatar_basic.json.br index 649a28b5d4223387bd4b862628370cb0d342abd3..7a4e6a1e9954a92be08c4d9ce6a3004daabf6213 100644 GIT binary patch literal 3430 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 I$O|`_J=dd@%>V!Z literal 2889 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 diff --git a/data/monster_basic.json.br b/data/monster_basic.json.br index e594a14704017651f36d37ff8b7f51eff278a793..230e83522400c33508f238a872aa7a3cffcccfdb 100644 GIT binary patch literal 31383 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 literal 31798 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 diff --git a/src/app/page.tsx b/src/app/page.tsx index 0502512..53f61ff 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -51,7 +51,7 @@ export default function Home() { setMapEnemy(monsterMap) }; fetchData(); - }, [setListAvatar, setListEnemy]); + }, [setListAvatar, setListEnemy, setMapAvatar, setMapEnemy]); useEffect(() => { window.dispatchEvent(new Event('resize')); diff --git a/src/components/card/characterCard.tsx b/src/components/card/characterCard.tsx index 7b5644d..e97aa86 100644 --- a/src/components/card/characterCard.tsx +++ b/src/components/card/characterCard.tsx @@ -42,9 +42,9 @@ export default function CharacterCard({ data }: CharacterCardProps) { height={48} unoptimized crossOrigin="anonymous" - src={`/icon/${data.damageType.toLowerCase()}.webp`} + src={`/icon/${data?.damageType?.toLowerCase()}.webp`} className="absolute top-0 left-0 w-6 h-6" - alt={data.damageType.toLowerCase()} + alt={data?.damageType?.toLowerCase()} /> - lineup.some(av => av.avatarId.toString() === item.id) + const lineupAvatars = listAvatar?.filter(item => + lineup?.some(av => av?.avatarId?.toString() === item.id) ); const handleShow = (modalId: string, item: CharacterBasic) => { @@ -103,7 +103,7 @@ export default function LineupBar() { ) : (
- {lineupAvatars.map((item, index) => { + {lineupAvatars?.map((item, index) => { const lastTurnAvatarId = turnHistory.findLast(i => i?.avatarId)?.avatarId || -1; const isLastTurn = item.id === lastTurnAvatarId.toString(); diff --git a/src/hooks/useDamagePerCycle.ts b/src/hooks/useDamagePerCycle.ts index ab4c1f0..ae20b2d 100644 --- a/src/hooks/useDamagePerCycle.ts +++ b/src/hooks/useDamagePerCycle.ts @@ -6,11 +6,11 @@ import { useMemo } from "react"; type Mode = 0 | 1 | 2; export function useDamagePerCycleForOne(avatarId: number, mode: Mode) { - const { skillHistory, turnHistory, maxCycle } = useBattleDataStore.getState(); + const { skillHistory, turnHistory } = useBattleDataStore.getState(); const transI18n = useTranslations("DataAnalysisPage"); return useMemo(() => { const damageMap = new Map(); - + skillHistory .filter(s => s.avatarId === avatarId) .forEach(s => { @@ -19,9 +19,9 @@ export function useDamagePerCycleForOne(avatarId: number, mode: Mode) { let key = ''; if (mode === 0) { - key = `${transI18n('cycle')} ${maxCycle-turn.cycleIndex} - ${transI18n('wave')} ${turn.waveIndex}`; + key = `${transI18n('cycle')} ${turn.cycleIndex} - ${transI18n('wave')} ${turn.waveIndex}`; } else if (mode === 1) { - key = `${transI18n('cycle')} ${maxCycle-turn.cycleIndex}`; + key = `${transI18n('cycle')} ${turn.cycleIndex}`; } else if (mode === 2) { key = `${transI18n('wave')} ${turn.waveIndex}`; } @@ -39,31 +39,31 @@ export function useDamagePerCycleForOne(avatarId: number, mode: Mode) { export function useDamagePerCycleForAll(mode: Mode) { - const { skillHistory, turnHistory, maxCycle } = useBattleDataStore.getState(); - const transI18n = useTranslations("DataAnalysisPage"); - return useMemo(() => { - const damageMap = new Map(); - - skillHistory.forEach(s => { - const turn = turnHistory[s.turnBattleId]; - if (!turn) return; - - let key = ''; - if (mode === 0) { - key = `${transI18n('cycle')} ${maxCycle-turn.cycleIndex} - ${transI18n('wave')} ${turn.waveIndex}`; - } else if (mode === 1) { - key = `${transI18n('cycle')} ${maxCycle-turn.cycleIndex}`; - } else if (mode === 2) { - key = `${transI18n('wave')} ${turn.waveIndex}`; - } - - damageMap.set(key, (damageMap.get(key) || 0) + s.totalDamage); - }); - - const result = Array.from(damageMap.entries()) - .map(([x, y]) => ({ x, y })) - .sort((a, b) => a.x.localeCompare(b.x, undefined, { numeric: true })); - - return result; - }, [mode, skillHistory, turnHistory, transI18n]); - } \ No newline at end of file + const { skillHistory, turnHistory } = useBattleDataStore.getState(); + const transI18n = useTranslations("DataAnalysisPage"); + return useMemo(() => { + const damageMap = new Map(); + + skillHistory.forEach(s => { + const turn = turnHistory[s.turnBattleId]; + if (!turn) return; + + let key = ''; + if (mode === 0) { + key = `${transI18n('cycle')} ${turn.cycleIndex} - ${transI18n('wave')} ${turn.waveIndex}`; + } else if (mode === 1) { + key = `${transI18n('cycle')} ${turn.cycleIndex}`; + } else if (mode === 2) { + key = `${transI18n('wave')} ${turn.waveIndex}`; + } + + damageMap.set(key, (damageMap.get(key) || 0) + s.totalDamage); + }); + + const result = Array.from(damageMap.entries()) + .map(([x, y]) => ({ x, y })) + .sort((a, b) => a.x.localeCompare(b.x, undefined, { numeric: true })); + + return result; + }, [mode, skillHistory, turnHistory, transI18n]); +} \ No newline at end of file diff --git a/src/stores/battleDataStore.ts b/src/stores/battleDataStore.ts index fb3a708..709724b 100644 --- a/src/stores/battleDataStore.ts +++ b/src/stores/battleDataStore.ts @@ -1,4 +1,4 @@ -import { DamageType, AvatarAnalysisJson, UseSkillType, BattleBeginType, BattleEndType, DamageDetailType, EntityDefeatedType, SetBattleLineupType, TurnBeginType, TurnEndType, UpdateCycleType, UpdateWaveType, VersionType, StatChangeType, UpdateTeamFormationType, Team } from '@/types'; +import { DamageType, AvatarAnalysisJson, UseSkillType, BattleBeginType, BattleEndType, DamageDetailType, EntityDefeatedType, SetBattleLineupType, TurnBeginType, TurnEndType, UpdateCycleType, UpdateWaveType, VersionType, StatChangeType, UpdateTeamFormationType, Team, ParseAttackType } from '@/types'; import { InitializeEnemyType } from '@/types/enemy'; import { AvatarBattleInfo, AvatarInfo, BattleDataStateJson, EnemyInfo, SkillBattleInfo, TurnBattleInfo } from '@/types/mics'; import { create } from 'zustand' @@ -54,10 +54,19 @@ const useBattleDataStore = create((set, get) => ({ avatarDetail: undefined, enemyDetail: undefined, loadBattleDataFromJSON: (data: BattleDataStateJson) => { + const skillHistory = data.skillHistory.map(it => { + it.damageDetail = it.damageDetail.map(it => { + return { + ...it, + damage_type: ParseAttackType(it.damage_type) + } + }) + return it + }) set({ lineup: data.lineup, turnHistory: data.turnHistory, - skillHistory: data.skillHistory, + skillHistory: skillHistory, dataAvatar: data.dataAvatar, totalAV: data.totalAV, totalDamage: data.totalDamage, @@ -82,47 +91,49 @@ const useBattleDataStore = create((set, get) => ({ }) }, onBattleBeginService: (data: BattleBeginType) => { - const current = get() - const updatedHistory = current.turnHistory.map(it => ({ - ...it, - cycleIndex: data.max_cycles - })) set({ maxWave: data.max_waves, - maxCycle: data.max_cycles, - turnHistory: updatedHistory + maxCycle: data.max_cycles }) }, + onSetBattleLineupService: (data: SetBattleLineupType) => { const lineups: AvatarBattleInfo[] = [] for (const avatar of data.avatars) { lineups.push({ avatarId: avatar.id, isDie: false } as AvatarBattleInfo) } - set((state) => ({ + set(() => ({ lineup: lineups, turnHistory: [{ avatarId: -1, actionValue: 0, waveIndex: 1, - cycleIndex: state.maxCycle, + cycleIndex: 0, } as TurnBattleInfo], skillHistory: [], totalAV: 0, totalDamage: 0, damagePerAV: 0, - cycleIndex: state.maxCycle, + cycleIndex: 0, + maxWave: Infinity, + maxCycle: Infinity, waveIndex: 1, })); }, + onDamageService: (data: DamageType) => { const skillHistory = get().skillHistory - + const skillIdx = skillHistory.findLastIndex(it => it.avatarId === data.attacker.uid) if (skillIdx === -1) { return } const newTh = [...skillHistory] - newTh[skillIdx].damageDetail.push({damage: data.damage, damage_type: data?.damage_type} as DamageDetailType) + newTh[skillIdx].damageDetail.push({ + damage: data.damage, + overkill_damage: data.overkill_damage, + damage_type: ParseAttackType(data.damage_type ? data.damage_type : data.type), + } as DamageDetailType) newTh[skillIdx].totalDamage += data.damage set({ skillHistory: newTh, @@ -130,6 +141,7 @@ const useBattleDataStore = create((set, get) => ({ damagePerAV: (get().totalDamage + data.damage) / (get().totalAV === 0 ? 1 : get().totalAV) }) }, + onTurnBeginService: (data: TurnBeginType) => { set((state) => ({ totalAV: data.action_value, @@ -142,14 +154,16 @@ const useBattleDataStore = create((set, get) => ({ } as TurnBattleInfo] })) }, + onTurnEndService: (data: TurnEndType) => { set((state) => ({ totalDamage: state.totalDamage === data.turn_info.total_damage ? data.turn_info.total_damage : state.totalDamage, currentAV: data.turn_info.action_value, - damagePerAV: (state.totalDamage === data.turn_info.total_damage ? data.turn_info.total_damage : state.totalDamage) - / (data.turn_info.action_value === 0 ? 1 : data.turn_info.action_value) + damagePerAV: (state.totalDamage === data.turn_info.total_damage ? data.turn_info.total_damage : state.totalDamage) + / (data.turn_info.action_value === 0 ? 1 : data.turn_info.action_value) })); }, + onEntityDefeatedService: (data: EntityDefeatedType) => { let avatarDetail = get().avatarDetail let enemyDetail = get().enemyDetail @@ -165,38 +179,38 @@ const useBattleDataStore = create((set, get) => ({ } else if (data.killer.team === "Enemy" && avatarDetail[data.entity_defeated.uid]) { avatarDetail[data.entity_defeated.uid].isDie = true avatarDetail[data.entity_defeated.uid].killer_uid = data.killer.uid - } else { - console.error("onEntityDefeatedService", data) - console.error("onEntityDefeatedService", enemyDetail) - console.error("onEntityDefeatedService", avatarDetail) } set({ avatarDetail: avatarDetail, enemyDetail: enemyDetail }) }, + onUseSkillService: (data: UseSkillType) => { set((state) => ({ skillHistory: [...state.skillHistory, { avatarId: data.avatar.uid, damageDetail: [], totalDamage: 0, - skillType: data.skill.type, + skillType: ParseAttackType(data.skill.type), skillName: data.skill.name, - turnBattleId: state.turnHistory.length-1 + turnBattleId: state.turnHistory.length - 1 } as SkillBattleInfo] })) }, + onUpdateWaveService: (data: UpdateWaveType) => { set({ waveIndex: data.wave }) }, + onUpdateCycleService: (data: UpdateCycleType) => { set({ cycleIndex: data.cycle }) }, + onStatChange: (data: StatChangeType) => { let avatarDetail = get().avatarDetail let enemyDetail = get().enemyDetail @@ -206,8 +220,34 @@ const useBattleDataStore = create((set, get) => ({ if (!avatarDetail) { avatarDetail = {} as Record } + + let key: string; + let value: number; + if (data.property) { + key = data.property.type; + value = data.property.value; + } else if (data.stat) { + if ( + data.stat && + typeof data.stat === 'object' && + 'type' in data.stat && + 'value' in data.stat && + typeof data.stat.type === 'string' + ) { + key = data.stat.type; + value = Number(data.stat.value); + } else { + const entries = Object.entries(data.stat); + if (entries.length === 0) return; + [key, value] = entries[0] as [string, number]; + } + } else { + return; + } + + if (key === "CurrentHP") key = "HP"; + if (data.entity.team === "Player") { - const [key, value] = Object.entries(data.stat)[0] const uid = data.entity.uid; if (!avatarDetail[uid]) { @@ -221,11 +261,10 @@ const useBattleDataStore = create((set, get) => ({ } avatarDetail[uid].stats[key] = value avatarDetail[uid].statsHistory.push({ - stats: data.stat, - turnBattleId: get().turnHistory.length-1 + stats: { [key]: value }, + turnBattleId: get().turnHistory.length - 1 }) } else { - const [key, value] = Object.entries(data.stat)[0] const uid = data.entity.uid; if (!enemyDetail[uid]) { @@ -244,8 +283,8 @@ const useBattleDataStore = create((set, get) => ({ } enemyDetail[uid].stats[key] = value enemyDetail[uid].statsHistory.push({ - stats: data.stat, - turnBattleId: get().turnHistory.length-1 + stats: { [key]: value }, + turnBattleId: get().turnHistory.length - 1 }) } set({ @@ -267,7 +306,7 @@ const useBattleDataStore = create((set, get) => ({ if (data.team === Team.Enemy) { for (let i = 0; i < data.entities.length; i++) { const entity = data.entities[i]; - if (entity.team === Team.Enemy && enemyDetail[entity.uid]) { + if (entity.team === Team.Enemy && enemyDetail?.[entity.uid]) { enemyDetail[entity.uid].positionIndex = i enemyDetail[entity.uid].waveIndex = get().waveIndex } @@ -280,20 +319,31 @@ const useBattleDataStore = create((set, get) => ({ enemyDetail: enemyDetail }) }, + onInitializeEnemyService: (data: InitializeEnemyType) => { const enemyDetail = get().enemyDetail if (!enemyDetail) { return } + let maxHP = 0; + let level = 0; + if ('properties' in data.enemy.base_stats) { + maxHP = data.enemy.base_stats.properties["MaxHP"] || 0; + level = data.enemy.base_stats.properties["Level"] || 0; + } else { + maxHP = data.enemy.base_stats.hp || data.enemy.base_stats.CurrentHP || 0; + level = data.enemy.base_stats.level; + } + enemyDetail[data.enemy.uid] = { id: data.enemy.id, isDie: false, killer_uid: -1, - positionIndex: enemyDetail[data.enemy.uid].positionIndex, - waveIndex: enemyDetail[data.enemy.uid].waveIndex, + positionIndex: enemyDetail?.[data.enemy.uid]?.positionIndex || 0, + waveIndex: get().waveIndex, name: data.enemy.name, - maxHP: data.enemy.base_stats.hp, - level: data.enemy.base_stats.level, + maxHP: maxHP, + level: level, stats: {}, statsHistory: [] } @@ -301,6 +351,7 @@ const useBattleDataStore = create((set, get) => ({ enemyDetail: enemyDetail }) }, + onBattleEndService: (data: BattleEndType) => { const lineups: AvatarBattleInfo[] = [] for (const avatar of data.avatars) { diff --git a/src/types/attack.ts b/src/types/attack.ts index 8d28ddf..a94343b 100644 --- a/src/types/attack.ts +++ b/src/types/attack.ts @@ -3,12 +3,15 @@ import { EntityType } from "./entity"; export interface DamageType { attacker: EntityType; damage: number; - damage_type?: AttackType + overkill_damage?: number; + damage_type?: AttackType | string; + type?: AttackType | string; } export interface DamageDetailType { damage: number; - damage_type?: AttackType + overkill_damage?: number; + damage_type?: AttackType; } @@ -30,10 +33,53 @@ export enum AttackType { ElationDamage = 14 } + +const attackTypeMap: Record = { + Talent: AttackType.Unknown, + Basic: AttackType.Normal, + Skill: AttackType.BPSkill, + Ultimate: AttackType.Ultra, + QTE: AttackType.QTE, + DOT: AttackType.DOT, + DoT: AttackType.DOT, + Pursued: AttackType.Pursued, + Additional: AttackType.Pursued, + Technique: AttackType.Maze, + MazeNormal: AttackType.MazeNormal, + "Follow-up": AttackType.Insert, + "Follow-Up": AttackType.Insert, + "Elemental Damage": AttackType.ElementDamage, + Break: AttackType.ElementDamage, + Level: AttackType.Level, + Servant: AttackType.Servant, + "True Damage": AttackType.TrueDamage, + True: AttackType.TrueDamage, + "Elation Damage": AttackType.ElationDamage, + Elation: AttackType.ElationDamage, +}; + +export function ParseAttackType(type: AttackType | string | undefined): AttackType { + if (type === undefined || type === null) { + return AttackType.Unknown; + } + + if (typeof type === "number") { + return type in AttackType ? type : AttackType.Unknown; + } + + const num = Number(type); + if (!isNaN(num)) { + return num in AttackType ? num as AttackType : AttackType.Unknown; + } + + return attackTypeMap[type] ?? AttackType.Unknown; +} + export function attackTypeToString(type: AttackType | undefined): string { if (type === undefined) { return "" } + switch (type) { case AttackType.Unknown: return "Talent"; case AttackType.Normal: return "Basic"; diff --git a/src/types/enemy.ts b/src/types/enemy.ts index 9acb09b..292a8ad 100644 --- a/src/types/enemy.ts +++ b/src/types/enemy.ts @@ -1,10 +1,14 @@ import { StatsType } from "./stat"; +export interface BattleStatsType { + properties: Record; +} + export interface EnemyType { id: number; uid: number; name: string; - base_stats: StatsType + base_stats: BattleStatsType | StatsType; } export interface InitializeEnemyType { diff --git a/src/types/skill.ts b/src/types/skill.ts index 3e14b9f..a579fc7 100644 --- a/src/types/skill.ts +++ b/src/types/skill.ts @@ -4,7 +4,7 @@ import { EntityType } from "./entity"; export interface SkillInfo { name: string; - type: AttackType; + type: AttackType | string; skill_config_id: number; } diff --git a/src/types/stat.ts b/src/types/stat.ts index f17df4e..94a192b 100644 --- a/src/types/stat.ts +++ b/src/types/stat.ts @@ -1,13 +1,21 @@ import { EntityType } from "./entity"; -export type StatType = Record +export type StatType = Record | { value: number; type: string }; + +export interface PropertyType { + value: number; + type: string; +} export interface StatsType { level: number; hp: number; + CurrentHP?: number; + MaxHP?: number; } export interface StatChangeType { - entity: EntityType, - stat: StatType, + entity: EntityType; + stat?: StatType; + property?: PropertyType; } \ No newline at end of file