Commit 76900895 authored by Chunchi Che's avatar Chunchi Che

fix parse deck

parent 3da84301
Pipeline #20492 passed with stages
in 5 minutes and 1 second
......@@ -30,58 +30,3 @@ function _objToMap(object: any): Map<string, IDeck> {
return map;
}
export function parseYdk(text: string): IDeck | undefined {
const lineIter = text.split("\n");
const deck: { main: number[]; extra: number[]; side: number[] } = {
main: [],
extra: [],
side: [],
};
let flag = -1;
for (const line of lineIter) {
switch (line) {
case "#main\r": {
flag = 1;
break;
}
case "#extra\r": {
flag = 2;
break;
}
case "!side\r": {
flag = 3;
break;
}
default: {
let code = Number(line);
if (!isNaN(code)) {
if (code > 100) {
switch (flag) {
case 1: {
deck.main.push(code);
break;
}
case 2: {
deck.extra.push(code);
break;
}
case 3: {
deck.side.push(code);
break;
}
default: {
break;
}
}
}
}
break;
}
}
}
return deck.main.length == 0 ? undefined : deck;
}
......@@ -22,7 +22,7 @@ import {
import { useAppSelector } from "../hook";
import { selectJoined } from "../reducers/joinSlice";
import { selectChat } from "../reducers/chatSlice";
import { fetchDeck, IDeck, parseYdk } from "../api/deck";
import { fetchDeck, IDeck } from "../api/deck";
import {
sendUpdateDeck,
sendHsReady,
......@@ -43,6 +43,7 @@ import type { MenuProps, UploadProps } from "antd";
import { useParams } from "react-router-dom";
import { selectDuelStart } from "../reducers/moraSlice";
import NeosConfig from "../../neos.config.json";
import YGOProDeck from "ygopro-deck-encode";
const READY_STATE = "ready";
......@@ -109,9 +110,16 @@ const WaitRoom = () => {
const reader = new FileReader();
reader.readAsText(file);
reader.onload = (e) => {
const text = e.target?.result as string;
const deck = parseYdk(text);
if (deck) {
const ydk = e.target?.result as string;
const deck = YGOProDeck.fromYdkString(ydk);
if (
!(
deck.main.length == 0 &&
deck.extra.length == 0 &&
deck.side.length == 0
)
) {
// YDK解析成功
message.success(`${file.name}解析成功`);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment