Commit f7b96892 authored by timel's avatar timel

style: eslint autofix import

parent 85fe308f
Pipeline #21242 failed with stages
in 4 minutes and 14 seconds
import axios from "axios"; import axios from "axios";
import sqliteMiddleWare, { sqliteCmd } from "@/middleware/sqlite"; import sqliteMiddleWare, { sqliteCmd } from "@/middleware/sqlite";
export interface CardMeta { export interface CardMeta {
......
import { YgoProPacket } from "./packet";
import { ygopro } from "../idl/ocgcore"; import { ygopro } from "../idl/ocgcore";
import { YgoProPacket } from "./packet";
import { import {
STOC_CHAT, STOC_CHAT,
STOC_DECK_COUNT,
STOC_DUEL_START,
STOC_GAME_MSG,
STOC_HAND_RESULT,
STOC_HS_PLAYER_CHANGE, STOC_HS_PLAYER_CHANGE,
STOC_HS_PLAYER_ENTER, STOC_HS_PLAYER_ENTER,
STOC_HS_WATCH_CHANGE, STOC_HS_WATCH_CHANGE,
STOC_JOIN_GAME, STOC_JOIN_GAME,
STOC_TYPE_CHANGE,
STOC_SELECT_HAND, STOC_SELECT_HAND,
STOC_SELECT_TP, STOC_SELECT_TP,
STOC_HAND_RESULT,
STOC_DECK_COUNT,
STOC_DUEL_START,
STOC_GAME_MSG,
STOC_TIME_LIMIT, STOC_TIME_LIMIT,
STOC_TYPE_CHANGE,
} from "./protoDecl"; } from "./protoDecl";
import StocChat from "./stoc/stocChat"; import StocChat from "./stoc/stocChat";
import StocJoinGame from "./stoc/stocJoinGame"; import StocDeckCount from "./stoc/stocDeckCount";
import StocHsPlayerEnter from "./stoc/stocHsPlayerEnter"; import StocDuelStart from "./stoc/stocDuelStart";
import StocGameMsg from "./stoc/stocGameMsg/mod";
import StocHsPlayerChange from "./stoc/stocHsPlayerChange"; import StocHsPlayerChange from "./stoc/stocHsPlayerChange";
import StocHsPlayerEnter from "./stoc/stocHsPlayerEnter";
import StocHsWatchChange from "./stoc/stocHsWatchChange"; import StocHsWatchChange from "./stoc/stocHsWatchChange";
import StocTypeChange from "./stoc/stocTypeChange"; import StocJoinGame from "./stoc/stocJoinGame";
import StocSelectHand from "./stoc/stocSelectHand"; import StocSelectHand from "./stoc/stocSelectHand";
import StocSelectTp from "./stoc/stocSelectTp"; import StocSelectTp from "./stoc/stocSelectTp";
import StocDeckCount from "./stoc/stocDeckCount";
import StocTimeLimit from "./stoc/stocTimeLimit"; import StocTimeLimit from "./stoc/stocTimeLimit";
import StocGameMsg from "./stoc/stocGameMsg/mod"; import StocTypeChange from "./stoc/stocTypeChange";
import StocDuelStart from "./stoc/stocDuelStart";
/* /*
* 将[`ygoProPacket`]对象转换成[`ygopro.YgoStocMsg`]对象 * 将[`ygoProPacket`]对象转换成[`ygopro.YgoStocMsg`]对象
......
import { BufferReader } from "rust-src";
import { ygopro } from "../idl/ocgcore"; import { ygopro } from "../idl/ocgcore";
import { numberToCardPosition, numberToCardZone } from "./util"; import { numberToCardPosition, numberToCardZone } from "./util";
import { BufferReader } from "rust-src";
const LOCATION_OVERLAY = 0x80; const LOCATION_OVERLAY = 0x80;
......
import { ygopro } from "../../../idl/ocgcore"; import { ygopro } from "../../../idl/ocgcore";
import { YgoProPacket } from "../../packet"; import { YgoProPacket } from "../../packet";
import { CTOS_RESPONSE } from "../../protoDecl"; import { CTOS_RESPONSE } from "../../protoDecl";
import adaptSelectIdleCmdResponse from "./selectIdleCmd"; import adaptSelectBattleCmdResponse from "./selectBattleCmd";
import adaptSelectPlaceResponse from "./selectPlace";
import adaptSelectCardResponse from "./selectCard"; import adaptSelectCardResponse from "./selectCard";
import adaptSelectChainResponse from "./selectChain"; import adaptSelectChainResponse from "./selectChain";
import adaptSelectCounterResponse from "./selectCounter";
import adaptSelectEffectYnResponse from "./selectEffectYn"; import adaptSelectEffectYnResponse from "./selectEffectYn";
import adaptSelectPositionResponse from "./selectPosition"; import adaptSelectIdleCmdResponse from "./selectIdleCmd";
import adaptSelectOptionResponse from "./selectOption"; import adaptSelectOptionResponse from "./selectOption";
import adaptSelectBattleCmdResponse from "./selectBattleCmd"; import adaptSelectPlaceResponse from "./selectPlace";
import adaptSelectPositionResponse from "./selectPosition";
import adaptSelectUnselectCardResponse from "./selectUnselectCard"; import adaptSelectUnselectCardResponse from "./selectUnselectCard";
import adaptSelectCounterResponse from "./selectCounter";
import adaptSortCardResponse from "./sortCard"; import adaptSortCardResponse from "./sortCard";
/* /*
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
export default ( export default (
response: ygopro.CtosGameMsgResponse.SelectBattleCmdResponse response: ygopro.CtosGameMsgResponse.SelectBattleCmdResponse
) => { ) => {
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
export default (response: ygopro.CtosGameMsgResponse.SelectCardResponse) => { export default (response: ygopro.CtosGameMsgResponse.SelectCardResponse) => {
const writer = new BufferWriter(); const writer = new BufferWriter();
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
export default (response: ygopro.CtosGameMsgResponse.SelectChainResponse) => { export default (response: ygopro.CtosGameMsgResponse.SelectChainResponse) => {
const writer = new BufferWriter(); const writer = new BufferWriter();
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
export default (response: ygopro.CtosGameMsgResponse.SelectCounterResponse) => { export default (response: ygopro.CtosGameMsgResponse.SelectCounterResponse) => {
const writer = new BufferWriter(); const writer = new BufferWriter();
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
export default ( export default (
response: ygopro.CtosGameMsgResponse.SelectEffectYnResponse response: ygopro.CtosGameMsgResponse.SelectEffectYnResponse
) => { ) => {
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
export default (response: ygopro.CtosGameMsgResponse.SelectIdleCmdResponse) => { export default (response: ygopro.CtosGameMsgResponse.SelectIdleCmdResponse) => {
const writer = new BufferWriter(); const writer = new BufferWriter();
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
export default (response: ygopro.CtosGameMsgResponse.SelectOptionResponse) => { export default (response: ygopro.CtosGameMsgResponse.SelectOptionResponse) => {
const writer = new BufferWriter(); const writer = new BufferWriter();
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
import { cardZoneToNumber } from "../../util"; import { cardZoneToNumber } from "../../util";
export default (response: ygopro.CtosGameMsgResponse.SelectPlaceResponse) => { export default (response: ygopro.CtosGameMsgResponse.SelectPlaceResponse) => {
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
export default ( export default (
response: ygopro.CtosGameMsgResponse.SelectPositionResponse response: ygopro.CtosGameMsgResponse.SelectPositionResponse
) => { ) => {
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
export default ( export default (
response: ygopro.CtosGameMsgResponse.SelectUnselectCardResponse response: ygopro.CtosGameMsgResponse.SelectUnselectCardResponse
) => { ) => {
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "rust-src"; import { BufferWriter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
export default (response: ygopro.CtosGameMsgResponse.SortCardResponse) => { export default (response: ygopro.CtosGameMsgResponse.SortCardResponse) => {
const writer = new BufferWriter(); const writer = new BufferWriter();
......
import { ygopro } from "../../idl/ocgcore"; import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet"; import { StocAdapter, YgoProPacket } from "../packet";
/* /*
* STOC Chat * STOC Chat
......
import { ygopro } from "../../idl/ocgcore"; import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet"; import { StocAdapter, YgoProPacket } from "../packet";
const LITTLE_ENDIAN = true; const LITTLE_ENDIAN = true;
const INT16_BYTE_OFFSET = 2; const INT16_BYTE_OFFSET = 2;
......
import { ygopro } from "../../idl/ocgcore"; import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet"; import { StocAdapter, YgoProPacket } from "../packet";
/* /*
* STOC DuelStart * STOC DuelStart
......
import { ygopro } from "../../../idl/ocgcore";
import { ocgDamageAdapter } from "rust-src"; import { ocgDamageAdapter } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
/* /*
* Msg Damage * Msg Damage
* *
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "rust-src"; import { BufferReader } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
/* /*
* MSG Draw * MSG Draw
* *
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "rust-src"; import { BufferReader } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
/* /*
* Msg Hint * Msg Hint
* *
......
...@@ -4,35 +4,35 @@ ...@@ -4,35 +4,35 @@
* */ * */
import { ygopro } from "../../../idl/ocgcore"; import { ygopro } from "../../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../../packet"; import { StocAdapter, YgoProPacket } from "../../packet";
import * as GAME_MSG from "../../protoDecl"; import * as GAME_MSG from "../../protoDecl";
import MsgStartAdapter from "./start"; import MsgAddCounter from "./addCounter";
import MsgDamage from "./damage";
import MsgDrawAdapter from "./draw"; import MsgDrawAdapter from "./draw";
import MsgNewTurnAdapter from "./newTurn";
import MsgNewPhaseAdapter from "./newPhase";
import MsgHintAdapter from "./hint"; import MsgHintAdapter from "./hint";
import MsgSelectIdleCmdAdapter from "./selectIdleCmd"; import MsgNewPhaseAdapter from "./newPhase";
import MsgSelectPlaceAdapter from "./selectPlace"; import MsgNewTurnAdapter from "./newTurn";
import PENETRATE from "./penetrate";
import MsgRecover from "./recover";
import MsgReloadFieldAdapter from "./reloadField";
import MsgRemoveCounter from "./removeCounter";
import MsgSelectBattleCmdAdapter from "./selectBattleCmd";
import MsgSelectCardAdapter from "./selectCard"; import MsgSelectCardAdapter from "./selectCard";
import MsgSelectTributeAdapter from "./selectTribute";
import MsgSelectChainAdapter from "./selectChain"; import MsgSelectChainAdapter from "./selectChain";
import MsgSelectCounter from "./selectCounter";
import MsgSelectEffectYnAdapter from "./selectEffectYn"; import MsgSelectEffectYnAdapter from "./selectEffectYn";
import MsgSelectPositionAdapter from "./selectPosition"; import MsgSelectIdleCmdAdapter from "./selectIdleCmd";
import MsgSelectOptionAdapter from "./selectOption"; import MsgSelectOptionAdapter from "./selectOption";
import MsgSelectBattleCmdAdapter from "./selectBattleCmd"; import MsgSelectPlaceAdapter from "./selectPlace";
import MsgSelectPositionAdapter from "./selectPosition";
import MsgSelectSum from "./selectSum";
import MsgSelectTributeAdapter from "./selectTribute";
import MsgSelectUnselectCardAdapter from "./selectUnselectCard"; import MsgSelectUnselectCardAdapter from "./selectUnselectCard";
import MsgSortCard from "./sortCard";
import MsgStartAdapter from "./start";
import MsgUpdateDataAdapter from "./updateData";
import MsgWaitAdapter from "./wait"; import MsgWaitAdapter from "./wait";
import MsgDamage from "./damage";
import MsgRecover from "./recover";
import MsgWin from "./win"; import MsgWin from "./win";
import MsgUpdateDataAdapter from "./updateData";
import MsgReloadFieldAdapter from "./reloadField";
import MsgSelectSum from "./selectSum";
import MsgAddCounter from "./addCounter";
import MsgRemoveCounter from "./removeCounter";
import MsgSelectCounter from "./selectCounter";
import MsgSortCard from "./sortCard";
import PENETRATE from "./penetrate";
/* /*
* STOC GameMsg * STOC GameMsg
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "rust-src"; import { BufferReader } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
/* /*
* Msg New Phase * Msg New Phase
* *
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "rust-src"; import { BufferReader } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
/* /*
* MSG New Turn * MSG New Turn
* *
......
//! 透传协议 //! 透传协议
import PenetrateData from "./penetrate.json";
import { BufferReaderExt } from "../../bufferIO";
import { ygopro } from "../../../idl/ocgcore"; import { ygopro } from "../../../idl/ocgcore";
import { BufferReaderExt } from "../../bufferIO";
import { numberToCardPosition } from "../../util"; import { numberToCardPosition } from "../../util";
import PenetrateData from "./penetrate.json";
type Constructor<T = any> = new (...args: any[]) => T; type Constructor<T = any> = new (...args: any[]) => T;
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "rust-src"; import { BufferReader } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
/* /*
* Msg Recover * Msg Recover
* *
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "rust-src"; import { BufferReader } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
import MsgSelectOption = ygopro.StocGameMessage.MsgSelectOption; import MsgSelectOption = ygopro.StocGameMessage.MsgSelectOption;
/* /*
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "rust-src"; import { BufferReader } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
import MsgSelectPlace = ygopro.StocGameMessage.MsgSelectPlace; import MsgSelectPlace = ygopro.StocGameMessage.MsgSelectPlace;
/* /*
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "rust-src"; import { BufferReader } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
import MsgSelectPosition = ygopro.StocGameMessage.MsgSelectPosition; import MsgSelectPosition = ygopro.StocGameMessage.MsgSelectPosition;
/* /*
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "rust-src"; import { BufferReader } from "rust-src";
import { ygopro } from "../../../idl/ocgcore";
import MsgWin = ygopro.StocGameMessage.MsgWin; import MsgWin = ygopro.StocGameMessage.MsgWin;
/* /*
......
import { ygopro } from "../../idl/ocgcore"; import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet"; import { StocAdapter, YgoProPacket } from "../packet";
/* /*
* STOC HsPlayerChange * STOC HsPlayerChange
......
import { ygopro } from "../../idl/ocgcore"; import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet"; import { StocAdapter, YgoProPacket } from "../packet";
import { UTF16_BUFFER_MAX_LEN, _cutoff_name } from "../util"; import { _cutoff_name, UTF16_BUFFER_MAX_LEN } from "../util";
const UINT8_PER_UINT16 = 2; const UINT8_PER_UINT16 = 2;
......
import { ygopro } from "../../idl/ocgcore"; import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet"; import { StocAdapter, YgoProPacket } from "../packet";
/* /*
* STOC HsWatchChange * STOC HsWatchChange
......
import { ygopro } from "../../idl/ocgcore"; import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet"; import { StocAdapter, YgoProPacket } from "../packet";
/* /*
* STOC JoinGame * STOC JoinGame
......
import { ygopro } from "../../idl/ocgcore"; import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet"; import { StocAdapter, YgoProPacket } from "../packet";
/* /*
* STOC SelectHand * STOC SelectHand
......
import { ygopro } from "../../idl/ocgcore"; import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet"; import { StocAdapter, YgoProPacket } from "../packet";
/* /*
* STOC SelectTp * STOC SelectTp
......
import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet";
import { BufferReader } from "rust-src"; import { BufferReader } from "rust-src";
import { ygopro } from "../../idl/ocgcore";
import { StocAdapter, YgoProPacket } from "../packet";
/* /*
* STOC TimeLimit * STOC TimeLimit
* *
......
import { ygopro } from "../../idl/ocgcore"; import { ygopro } from "../../idl/ocgcore";
import { YgoProPacket, StocAdapter } from "../packet"; import { StocAdapter, YgoProPacket } from "../packet";
/* /*
* STOC TypeChange * STOC TypeChange
......
...@@ -2,20 +2,21 @@ ...@@ -2,20 +2,21 @@
* 一些发ygopro协议数据包的辅助函数,用于简化业务代码。 * 一些发ygopro协议数据包的辅助函数,用于简化业务代码。
* *
* */ * */
import { ygopro } from "./idl/ocgcore";
import socketMiddleWare, { socketCmd } from "@/middleware/socket"; import socketMiddleWare, { socketCmd } from "@/middleware/socket";
import { IDeck } from "../deck"; import { IDeck } from "../deck";
import PlayerInfoAdapter from "./ocgAdapter/ctos/ctosPlayerInfo"; import { ygopro } from "./idl/ocgcore";
import JoinGameAdapter from "./ocgAdapter/ctos/ctosJoinGame"; import Chat from "./ocgAdapter/ctos/ctosChat";
import UpdateDeckAdapter from "./ocgAdapter/ctos/ctosUpdateDeck"; import GameMsgResponse from "./ocgAdapter/ctos/ctosGameMsgResponse/mod";
import HandResult from "./ocgAdapter/ctos/ctosHandResult";
import HsReadyAdapter from "./ocgAdapter/ctos/ctosHsReady"; import HsReadyAdapter from "./ocgAdapter/ctos/ctosHsReady";
import HsStartAdapter from "./ocgAdapter/ctos/ctosHsStart"; import HsStartAdapter from "./ocgAdapter/ctos/ctosHsStart";
import HandResult from "./ocgAdapter/ctos/ctosHandResult"; import JoinGameAdapter from "./ocgAdapter/ctos/ctosJoinGame";
import TpResult from "./ocgAdapter/ctos/ctosTpResult"; import PlayerInfoAdapter from "./ocgAdapter/ctos/ctosPlayerInfo";
import TimeConfirm from "./ocgAdapter/ctos/ctosTimeConfirm";
import Surrender from "./ocgAdapter/ctos/ctosSurrender"; import Surrender from "./ocgAdapter/ctos/ctosSurrender";
import GameMsgResponse from "./ocgAdapter/ctos/ctosGameMsgResponse/mod"; import TimeConfirm from "./ocgAdapter/ctos/ctosTimeConfirm";
import Chat from "./ocgAdapter/ctos/ctosChat"; import TpResult from "./ocgAdapter/ctos/ctosTpResult";
import UpdateDeckAdapter from "./ocgAdapter/ctos/ctosUpdateDeck";
export function sendUpdateDeck(deck: IDeck) { export function sendUpdateDeck(deck: IDeck) {
const updateDeck = new ygopro.YgoCtosMsg({ const updateDeck = new ygopro.YgoCtosMsg({
......
import axios from "axios"; import axios from "axios";
import NeosConfig from "../../neos.config.json"; import NeosConfig from "../../neos.config.json";
import { getCardStr, fetchCard } from "./cards"; import { fetchCard, getCardStr } from "./cards";
export const DESCRIPTION_LIMIT = 10000; export const DESCRIPTION_LIMIT = 10000;
......
import { useEnv } from "@/hook"; import { useEnv } from "@/hook";
import NeosDevConfig from "../../neos.config.json"; import NeosDevConfig from "../../neos.config.json";
import NeosProdConfig from "../../neos.config.prod.json"; import NeosProdConfig from "../../neos.config.prod.json";
......
import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux"; import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux";
import type { RootState, AppDispatch } from "@/store";
import type { AppDispatch, RootState } from "@/store";
// Use throughout your app instead of plain `useDispatch` and `useSelector` // Use throughout your app instead of plain `useDispatch` and `useSelector`
export const useAppDispatch: () => AppDispatch = useDispatch; export const useAppDispatch: () => AppDispatch = useDispatch;
......
// 一些自定义`Hook` // 一些自定义`Hook`
import { ActionEvent } from "@babylonjs/core"; import { ActionEvent } from "@babylonjs/core";
import { MutableRefObject, useEffect, useRef } from "react";
import { Nullable } from "@babylonjs/core/types.js";
import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
import { ActionManager } from "@babylonjs/core/Actions/actionManager.js";
import { IAction } from "@babylonjs/core/Actions/action.js"; import { IAction } from "@babylonjs/core/Actions/action.js";
import { ActionManager } from "@babylonjs/core/Actions/actionManager.js";
import { ExecuteCodeAction } from "@babylonjs/core/Actions/directActions.js"; import { ExecuteCodeAction } from "@babylonjs/core/Actions/directActions.js";
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
import { Nullable } from "@babylonjs/core/types.js";
import { MutableRefObject, useEffect, useRef } from "react";
export interface MeshEventType { export interface MeshEventType {
(env: ActionEvent): void; (env: ActionEvent): void;
......
...@@ -19,14 +19,15 @@ ...@@ -19,14 +19,15 @@
* 在进行代码开发的时候需要注意这点。 * 在进行代码开发的时候需要注意这点。
* *
* */ * */
import { ConfigProvider, theme } from "antd";
import zhCN from "antd/locale/zh_CN";
import React from "react"; import React from "react";
import ReactDOM from "react-dom/client"; import ReactDOM from "react-dom/client";
import Neos from "./ui/Neos";
import { BrowserRouter } from "react-router-dom";
import { Provider } from "react-redux"; import { Provider } from "react-redux";
import { BrowserRouter } from "react-router-dom";
import { store } from "./store"; import { store } from "./store";
import { ConfigProvider, theme } from "antd"; import Neos from "./ui/Neos";
import zhCN from "antd/locale/zh_CN";
const root = ReactDOM.createRoot( const root = ReactDOM.createRoot(
document.getElementById("root") as HTMLElement document.getElementById("root") as HTMLElement
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
* 所有长连接/Websocket相关的逻辑都应该收敛在这里。 * 所有长连接/Websocket相关的逻辑都应该收敛在这里。
* *
* */ * */
import handleSocketOpen from "../service/onSocketOpen";
import handleSocketMessage from "../service/onSocketMessage"; import handleSocketMessage from "../service/onSocketMessage";
import handleSocketOpen from "../service/onSocketOpen";
export enum socketCmd { export enum socketCmd {
// 建立长连接 // 建立长连接
......
...@@ -6,7 +6,9 @@ ...@@ -6,7 +6,9 @@
* */ * */
import initSqlJs, { Database } from "sql.js"; import initSqlJs, { Database } from "sql.js";
import { CardMeta, CardData, CardText } from "@/api/cards";
import { CardData, CardMeta, CardText } from "@/api/cards";
import NeosConfig from "../../neos.config.json"; import NeosConfig from "../../neos.config.json";
export enum sqliteCmd { export enum sqliteCmd {
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* *
* */ * */
import { createSlice, PayloadAction } from "@reduxjs/toolkit"; import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { RootState } from "@/store"; import { RootState } from "@/store";
export interface chatState { export interface chatState {
......
import { judgeSelf } from "./util";
import { import {
PayloadAction,
CaseReducer,
ActionReducerMapBuilder, ActionReducerMapBuilder,
CaseReducer,
PayloadAction,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { DuelState } from "./mod";
import { RootState } from "@/store";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store";
import { import {
createAsyncMetaThunk, createAsyncMetaThunk,
DuelFieldState, DuelFieldState,
extendState,
extendMeta,
removeCard,
DuelReducer, DuelReducer,
Interactivity,
extendIdleInteractivities, extendIdleInteractivities,
extendMeta,
extendState,
Interactivity,
removeCard,
} from "./generic"; } from "./generic";
import { DuelState } from "./mod";
import { judgeSelf } from "./util";
export interface CemeteryState extends DuelFieldState {} export interface CemeteryState extends DuelFieldState {}
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { import {
clearIdleInteractivities, clearIdleInteractivities,
clearPlaceInteractivities, clearPlaceInteractivities,
......
import { judgeSelf } from "./util"; import { CaseReducer, PayloadAction } from "@reduxjs/toolkit";
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit";
import { DuelState } from "./mod";
import { RootState } from "@/store";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { DuelFieldState, CardState } from "./generic"; import { RootState } from "@/store";
import { CardState, DuelFieldState } from "./generic";
import { DuelState } from "./mod";
import { judgeSelf } from "./util";
export interface DeckState extends DuelFieldState {} export interface DeckState extends DuelFieldState {}
......
import { judgeSelf } from "./util";
import { import {
PayloadAction,
CaseReducer,
ActionReducerMapBuilder, ActionReducerMapBuilder,
CaseReducer,
PayloadAction,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { DuelState } from "./mod";
import { RootState } from "@/store";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store";
import { import {
createAsyncMetaThunk, createAsyncMetaThunk,
DuelFieldState, DuelFieldState,
extendState,
extendMeta,
removeCard,
DuelReducer, DuelReducer,
Interactivity,
extendIdleInteractivities, extendIdleInteractivities,
extendMeta,
extendState,
Interactivity,
removeCard,
} from "./generic"; } from "./generic";
import { DuelState } from "./mod";
import { judgeSelf } from "./util";
export interface ExclusionState extends DuelFieldState {} export interface ExclusionState extends DuelFieldState {}
......
import { ActionReducerMapBuilder } from "@reduxjs/toolkit"; import { ActionReducerMapBuilder } from "@reduxjs/toolkit";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { import {
createAsyncMetaThunk, createAsyncMetaThunk,
createAsyncRepeatedMetaThunk, createAsyncRepeatedMetaThunk,
......
...@@ -4,8 +4,10 @@ import { ...@@ -4,8 +4,10 @@ import {
createAsyncThunk, createAsyncThunk,
PayloadAction, PayloadAction,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { CardMeta, fetchCard } from "@/api/cards"; import { CardMeta, fetchCard } from "@/api/cards";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { DuelState } from "./mod"; import { DuelState } from "./mod";
import ReloadFieldAction = ygopro.StocGameMessage.MsgReloadField.ZoneAction; import ReloadFieldAction = ygopro.StocGameMessage.MsgReloadField.ZoneAction;
type UpdateDataAction = ReturnType< type UpdateDataAction = ReturnType<
......
...@@ -3,20 +3,22 @@ import { ...@@ -3,20 +3,22 @@ import {
CaseReducer, CaseReducer,
PayloadAction, PayloadAction,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { DuelState } from "./mod";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { judgeSelf } from "./util";
import { import {
Interactivity,
DuelFieldState,
removeCard,
createAsyncMetaThunk, createAsyncMetaThunk,
insertCard,
extendMeta,
createAsyncRepeatedMetaThunk, createAsyncRepeatedMetaThunk,
DuelFieldState,
extendMeta,
insertCard,
Interactivity,
removeCard,
updateCardMeta, updateCardMeta,
} from "./generic"; } from "./generic";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { DuelState } from "./mod";
import { judgeSelf } from "./util";
export interface HandState extends DuelFieldState {} export interface HandState extends DuelFieldState {}
......
import { createAsyncThunk, ActionReducerMapBuilder } from "@reduxjs/toolkit"; import { ActionReducerMapBuilder, createAsyncThunk } from "@reduxjs/toolkit";
import { DuelState } from "./mod";
import { RootState } from "@/store";
import { DESCRIPTION_LIMIT, fetchStrings, getStrings } from "@/api/strings";
import { findCardByLocation } from "./util";
import { fetchCard } from "@/api/cards"; import { fetchCard } from "@/api/cards";
import { DuelReducer } from "./generic";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { DESCRIPTION_LIMIT, fetchStrings, getStrings } from "@/api/strings";
import { RootState } from "@/store";
import { DuelReducer } from "./generic";
import { DuelState } from "./mod";
import { findCardByLocation } from "./util";
export interface HintState { export interface HintState {
code: number; code: number;
......
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit"; import { CaseReducer, PayloadAction } from "@reduxjs/toolkit";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { DuelState } from "./mod"; import { DuelState } from "./mod";
import { judgeSelf } from "./util"; import { judgeSelf } from "./util";
import MsgUpdateHp = ygopro.StocGameMessage.MsgUpdateHp; import MsgUpdateHp = ygopro.StocGameMessage.MsgUpdateHp;
......
import { judgeSelf } from "./util";
import { import {
PayloadAction,
CaseReducer,
ActionReducerMapBuilder, ActionReducerMapBuilder,
CaseReducer,
PayloadAction,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { DuelState } from "./mod";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { import {
clearIdleInteractivities,
clearPlaceInteractivities,
createAsyncMetaThunk, createAsyncMetaThunk,
DuelFieldState, DuelFieldState,
extendIdleInteractivities,
extendOccupant, extendOccupant,
extendPlaceInteractivity, extendPlaceInteractivity,
clearPlaceInteractivities,
removeOccupant,
Interactivity, Interactivity,
extendIdleInteractivities, removeOccupant,
clearIdleInteractivities,
setPosition, setPosition,
} from "./generic"; } from "./generic";
import { DuelState } from "./mod";
import { judgeSelf } from "./util";
export interface MagicState extends DuelFieldState {} export interface MagicState extends DuelFieldState {}
......
...@@ -3,121 +3,123 @@ ...@@ -3,121 +3,123 @@
* *
* */ * */
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { createSlice, PayloadAction } from "@reduxjs/toolkit"; import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { InitInfo, infoInitImpl, updateHpImpl } from "./initInfoSlice";
import { TimeLimit, updateTimeLimitImpl } from "./timeLimit"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store";
import {
addCemeteryIdleInteractivitiesImpl,
cemeteryCase,
CemeteryState,
initCemeteryImpl,
removeCemeteryImpl,
} from "./cemeretySlice";
import {
clearAllIdleInteractivitiesImpl,
clearAllPlaceInteractivitiesImpl,
reloadFieldImpl,
updateFieldDataImpl,
} from "./commonSlice";
import { DeckState, initDeckImpl } from "./deckSlice";
import {
addExclusionIdleInteractivitiesImpl,
exclusionCase,
ExclusionState,
initExclusionImpl,
removeExclusionImpl,
} from "./exclusionSlice";
import {
addExtraDeckIdleInteractivitiesImpl,
extraDeckCase,
ExtraDeckState,
removeExtraDeckImpl,
} from "./extraDeckSlice";
import { import {
HandState,
handsCase,
clearHandsIdleInteractivityImpl,
addHandsIdleInteractivityImpl, addHandsIdleInteractivityImpl,
clearHandsIdleInteractivityImpl,
handsCase,
HandState,
removeHandImpl, removeHandImpl,
} from "./handsSlice"; } from "./handsSlice";
import { newTurnImpl } from "./turnSlice"; import { hintCase, HintState, initHintImpl } from "./hintSlice";
import { infoInitImpl, InitInfo, updateHpImpl } from "./initInfoSlice";
import { import {
newPhaseImpl, addMagicIdleInteractivitiesImpl,
PhaseState, addMagicPlaceInteractivitiesImpl,
setEnableBpImpl, clearMagicIdleInteractivitiesImpl,
setEnableM2Impl, clearMagicPlaceInteractivitiesImpl,
setEnableEpImpl, initMagicsImpl,
} from "./phaseSlice"; magicCase,
import { RootState } from "@/store"; MagicState,
import { HintState, hintCase, initHintImpl } from "./hintSlice"; removeMagicImpl,
setMagicPositionImpl,
} from "./magicSlice";
import { import {
checkCardModalCase,
checkCardModalV2Case,
checkCardModalV3Case,
clearCheckCounterImpl,
ModalState, ModalState,
optionModalCase,
resetCheckCardModalImpl,
resetCheckCardModalV2Impl,
resetCheckCardModalV3Impl,
resetOptionModalImpl,
resetPositionModalImpl,
resetSortCardModalImpl,
setCardListModalInfoImpl,
setCardListModalIsOpenImpl,
setCardModalCountersImpl,
setCardModalInteractiviesImpl,
setCardModalIsOpenImpl, setCardModalIsOpenImpl,
setCardModalMetaImpl, setCardModalMetaImpl,
setCardModalInteractiviesImpl, setCheckCardMOdalCancelAbleImpl,
setCardListModalIsOpenImpl, setCheckCardModalCancelResponseImpl,
setCardListModalInfoImpl,
setCheckCardModalIsOpenImpl, setCheckCardModalIsOpenImpl,
setCheckCardModalMinMaxImpl, setCheckCardModalMinMaxImpl,
setCheckCardModalOnSubmitImpl, setCheckCardModalOnSubmitImpl,
setCheckCardMOdalCancelAbleImpl,
setCheckCardModalCancelResponseImpl,
resetCheckCardModalImpl,
setYesNoModalIsOpenImpl,
checkCardModalCase,
YesNoModalCase,
setPositionModalIsOpenImpl,
setPositionModalPositionsImpl,
resetPositionModalImpl,
setOptionModalIsOpenImpl,
resetOptionModalImpl,
optionModalCase,
setCheckCardModalV2IsOpenImpl,
setCheckCardModalV2CancelAbleImpl, setCheckCardModalV2CancelAbleImpl,
setCheckCardModalV2MinMaxImpl,
setCheckCardModalV2FinishAbleImpl, setCheckCardModalV2FinishAbleImpl,
resetCheckCardModalV2Impl, setCheckCardModalV2IsOpenImpl,
setCheckCardModalV2MinMaxImpl,
setCheckCardModalV2ResponseAbleImpl, setCheckCardModalV2ResponseAbleImpl,
checkCardModalV2Case, setCheckCardModalV3AllLevelImpl,
setCheckCardModalV3IsOpenImpl, setCheckCardModalV3IsOpenImpl,
setCheckCardModalV3MinMaxImpl, setCheckCardModalV3MinMaxImpl,
setCheckCardModalV3AllLevelImpl,
setCheckCardModalV3OverFlowImpl, setCheckCardModalV3OverFlowImpl,
setCheckCardModalV3ResponseAbleImpl, setCheckCardModalV3ResponseAbleImpl,
resetCheckCardModalV3Impl,
checkCardModalV3Case,
setCardModalCountersImpl,
setCheckCounterImpl, setCheckCounterImpl,
clearCheckCounterImpl, setOptionModalIsOpenImpl,
setPositionModalIsOpenImpl,
setPositionModalPositionsImpl,
setSortCardModalIsOpenImpl, setSortCardModalIsOpenImpl,
resetSortCardModalImpl, setYesNoModalIsOpenImpl,
sortCardModalCase, sortCardModalCase,
YesNoModalCase,
} from "./modal/mod"; } from "./modal/mod";
import { import {
MonsterState,
initMonstersImpl,
addMonsterPlaceInteractivitiesImpl,
clearMonsterPlaceInteractivitiesImpl,
addMonsterIdleInteractivitiesImpl, addMonsterIdleInteractivitiesImpl,
addMonsterPlaceInteractivitiesImpl,
clearMonsterIdleInteractivitiesImpl, clearMonsterIdleInteractivitiesImpl,
clearMonsterPlaceInteractivitiesImpl,
initMonstersImpl,
monsterCase,
MonsterState,
removeMonsterImpl, removeMonsterImpl,
setMonsterPositionImpl,
removeOverlayImpl, removeOverlayImpl,
setMonsterPositionImpl,
updateMonsterCountersImpl, updateMonsterCountersImpl,
monsterCase,
} from "./monstersSlice"; } from "./monstersSlice";
import { import {
MagicState, newPhaseImpl,
initMagicsImpl, PhaseState,
addMagicPlaceInteractivitiesImpl, setEnableBpImpl,
clearMagicPlaceInteractivitiesImpl, setEnableEpImpl,
addMagicIdleInteractivitiesImpl, setEnableM2Impl,
clearMagicIdleInteractivitiesImpl, } from "./phaseSlice";
removeMagicImpl, import { TimeLimit, updateTimeLimitImpl } from "./timeLimit";
setMagicPositionImpl, import { newTurnImpl } from "./turnSlice";
magicCase,
} from "./magicSlice";
import {
CemeteryState,
initCemeteryImpl,
removeCemeteryImpl,
cemeteryCase,
addCemeteryIdleInteractivitiesImpl,
} from "./cemeretySlice";
import {
ExclusionState,
initExclusionImpl,
removeExclusionImpl,
exclusionCase,
addExclusionIdleInteractivitiesImpl,
} from "./exclusionSlice";
import { DeckState, initDeckImpl } from "./deckSlice";
import {
clearAllIdleInteractivitiesImpl,
clearAllPlaceInteractivitiesImpl,
updateFieldDataImpl,
reloadFieldImpl,
} from "./commonSlice";
import {
ExtraDeckState,
extraDeckCase,
removeExtraDeckImpl,
addExtraDeckIdleInteractivitiesImpl,
} from "./extraDeckSlice";
import MsgWin = ygopro.StocGameMessage.MsgWin; import MsgWin = ygopro.StocGameMessage.MsgWin;
export interface DuelState { export interface DuelState {
......
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit"; import { CaseReducer, PayloadAction } from "@reduxjs/toolkit";
import { DuelState } from "../mod";
import { RootState } from "@/store";
import { CardMeta } from "@/api/cards"; import { CardMeta } from "@/api/cards";
import { RootState } from "@/store";
import { DuelState } from "../mod";
// 更新卡牌列表弹窗打开状态 // 更新卡牌列表弹窗打开状态
export const setCardListModalIsOpenImpl: CaseReducer< export const setCardListModalIsOpenImpl: CaseReducer<
......
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit"; import { CaseReducer, PayloadAction } from "@reduxjs/toolkit";
import { DuelState } from "../mod";
import { RootState } from "@/store";
import { CardMeta } from "@/api/cards"; import { CardMeta } from "@/api/cards";
import { RootState } from "@/store";
import { DuelState } from "../mod";
// 更新卡牌弹窗打开状态 // 更新卡牌弹窗打开状态
export const setCardModalIsOpenImpl: CaseReducer< export const setCardModalIsOpenImpl: CaseReducer<
......
import { import {
PayloadAction, ActionReducerMapBuilder,
CaseReducer, CaseReducer,
createAsyncThunk, createAsyncThunk,
ActionReducerMapBuilder, PayloadAction,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { fetchCard, getCardStr } from "@/api/cards";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { DuelState } from "../mod"; import { DuelState } from "../mod";
import { cmpCardLocation, findCardByLocation, judgeSelf } from "../util"; import { cmpCardLocation, findCardByLocation, judgeSelf } from "../util";
import { fetchCard, getCardStr } from "@/api/cards";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
// 更新卡牌选择弹窗打开状态 // 更新卡牌选择弹窗打开状态
export const setCheckCardModalIsOpenImpl: CaseReducer< export const setCheckCardModalIsOpenImpl: CaseReducer<
......
import { DuelState } from "../mod";
import { DuelReducer } from "../generic";
import { import {
ActionReducerMapBuilder, ActionReducerMapBuilder,
CaseReducer, CaseReducer,
createAsyncThunk, createAsyncThunk,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { fetchCard } from "@/api/cards"; import { fetchCard } from "@/api/cards";
import { RootState } from "@/store";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store";
import { DuelReducer } from "../generic";
import { DuelState } from "../mod";
import { findCardByLocation } from "../util"; import { findCardByLocation } from "../util";
// 更新打开状态 // 更新打开状态
......
import { DuelState } from "../mod";
import { DuelReducer } from "../generic";
import { import {
ActionReducerMapBuilder, ActionReducerMapBuilder,
CaseReducer, CaseReducer,
createAsyncThunk, createAsyncThunk,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { fetchCard } from "@/api/cards"; import { fetchCard } from "@/api/cards";
import { RootState } from "@/store";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store";
import { DuelReducer } from "../generic";
import { DuelState } from "../mod";
import { findCardByLocation } from "../util"; import { findCardByLocation } from "../util";
// 更新打开状态 // 更新打开状态
......
// 后续对于`MSG_SELECT_XXX`的处理UI都尽量用`Babylon.js`实现而不会通过`Antd`的`Modal`实现,因此这里不追求工程质量,暂时简单实现下。 // 后续对于`MSG_SELECT_XXX`的处理UI都尽量用`Babylon.js`实现而不会通过`Antd`的`Modal`实现,因此这里不追求工程质量,暂时简单实现下。
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit"; import { CaseReducer, PayloadAction } from "@reduxjs/toolkit";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { DuelState } from "../mod"; import { DuelState } from "../mod";
import { findCardByLocation } from "../util"; import { findCardByLocation } from "../util";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
type SelectCounter = ReturnType< type SelectCounter = ReturnType<
typeof ygopro.StocGameMessage.MsgSelectCounter.prototype.toObject typeof ygopro.StocGameMessage.MsgSelectCounter.prototype.toObject
>; >;
......
...@@ -114,13 +114,13 @@ export interface ModalState { ...@@ -114,13 +114,13 @@ export interface ModalState {
}; };
} }
export * from "./cardModalSlice";
export * from "./cardListModalSlice"; export * from "./cardListModalSlice";
export * from "./cardModalSlice";
export * from "./checkCardModalSlice"; export * from "./checkCardModalSlice";
export * from "./yesNoModalSlice";
export * from "./positionModalSlice";
export * from "./optionModalSlice";
export * from "./checkCardModalV2Slice"; export * from "./checkCardModalV2Slice";
export * from "./checkCardModalV3Slice"; export * from "./checkCardModalV3Slice";
export * from "./checkCounterModalSlice"; export * from "./checkCounterModalSlice";
export * from "./optionModalSlice";
export * from "./positionModalSlice";
export * from "./sortCardModalSlice"; export * from "./sortCardModalSlice";
export * from "./yesNoModalSlice";
import { import {
PayloadAction, ActionReducerMapBuilder,
CaseReducer, CaseReducer,
createAsyncThunk, createAsyncThunk,
ActionReducerMapBuilder, PayloadAction,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { DuelState } from "../mod";
import { fetchCard, getCardStr } from "@/api/cards"; import { fetchCard, getCardStr } from "@/api/cards";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { DuelState } from "../mod";
export const setOptionModalIsOpenImpl: CaseReducer< export const setOptionModalIsOpenImpl: CaseReducer<
DuelState, DuelState,
PayloadAction<boolean> PayloadAction<boolean>
......
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit"; import { CaseReducer, PayloadAction } from "@reduxjs/toolkit";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { DuelState } from "../mod"; import { DuelState } from "../mod";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
export const setPositionModalIsOpenImpl: CaseReducer< export const setPositionModalIsOpenImpl: CaseReducer<
DuelState, DuelState,
......
...@@ -3,9 +3,11 @@ import { ...@@ -3,9 +3,11 @@ import {
CaseReducer, CaseReducer,
createAsyncThunk, createAsyncThunk,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { fetchCard } from "@/api/cards"; import { fetchCard } from "@/api/cards";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { DuelReducer } from "../generic"; import { DuelReducer } from "../generic";
import { DuelState } from "../mod"; import { DuelState } from "../mod";
type SortCard = ReturnType< type SortCard = ReturnType<
......
import { import {
PayloadAction, ActionReducerMapBuilder,
CaseReducer, CaseReducer,
createAsyncThunk, createAsyncThunk,
ActionReducerMapBuilder, PayloadAction,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { CardMeta, fetchCard } from "@/api/cards"; import { CardMeta, fetchCard } from "@/api/cards";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { fetchStrings, getStrings } from "@/api/strings"; import { fetchStrings, getStrings } from "@/api/strings";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { DuelState } from "../mod"; import { DuelState } from "../mod";
// 更新YesNo弹窗是否打开状态 // 更新YesNo弹窗是否打开状态
......
import { judgeSelf } from "./util";
import { import {
PayloadAction,
CaseReducer,
ActionReducerMapBuilder, ActionReducerMapBuilder,
CaseReducer,
createAsyncThunk, createAsyncThunk,
PayloadAction,
} from "@reduxjs/toolkit"; } from "@reduxjs/toolkit";
import { DuelState } from "./mod";
import { fetchCard } from "@/api/cards";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { import {
DuelFieldState, clearIdleInteractivities,
Interactivity, clearPlaceInteractivities,
createAsyncMetaThunk, createAsyncMetaThunk,
DuelFieldState,
extendIdleInteractivities,
extendOccupant, extendOccupant,
extendPlaceInteractivity, extendPlaceInteractivity,
clearPlaceInteractivities, Interactivity,
removeOccupant, removeOccupant,
extendIdleInteractivities,
clearIdleInteractivities,
setPosition,
removeOverlay, removeOverlay,
setPosition,
} from "./generic"; } from "./generic";
import { fetchCard } from "@/api/cards"; import { DuelState } from "./mod";
import { judgeSelf } from "./util";
type MsgUpdateCounter = ReturnType< type MsgUpdateCounter = ReturnType<
typeof ygopro.StocGameMessage.MsgUpdateCounter.prototype.toObject typeof ygopro.StocGameMessage.MsgUpdateCounter.prototype.toObject
>; >;
......
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit"; import { CaseReducer, PayloadAction } from "@reduxjs/toolkit";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { DuelState } from "./mod"; import { DuelState } from "./mod";
export interface PhaseState { export interface PhaseState {
......
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit"; import { CaseReducer, PayloadAction } from "@reduxjs/toolkit";
import { DuelState } from "./mod"; import { DuelState } from "./mod";
import { judgeSelf } from "./util"; import { judgeSelf } from "./util";
......
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit"; import { CaseReducer, PayloadAction } from "@reduxjs/toolkit";
import { RootState } from "@/store"; import { RootState } from "@/store";
import { DuelState } from "./mod"; import { DuelState } from "./mod";
import { judgeSelf } from "./util"; import { judgeSelf } from "./util";
......
...@@ -3,10 +3,12 @@ ...@@ -3,10 +3,12 @@
* *
* */ * */
import { DuelState } from "./mod";
import { Draft } from "@reduxjs/toolkit"; import { Draft } from "@reduxjs/toolkit";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { CardState } from "./generic"; import { CardState } from "./generic";
import { DuelState } from "./mod";
type Location = type Location =
| ygopro.CardLocation | ygopro.CardLocation
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* *
* */ * */
import { createSlice } from "@reduxjs/toolkit"; import { createSlice } from "@reduxjs/toolkit";
import { RootState } from "@/store"; import { RootState } from "@/store";
export interface JoinState { export interface JoinState {
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* *
* */ * */
import { createSlice } from "@reduxjs/toolkit"; import { createSlice } from "@reduxjs/toolkit";
import { RootState } from "@/store"; import { RootState } from "@/store";
export interface moraState { export interface moraState {
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* *
* */ * */
import { createSlice, PayloadAction } from "@reduxjs/toolkit"; import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { RootState } from "@/store"; import { RootState } from "@/store";
export interface Player { export interface Player {
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { AppDispatch } from "@/store";
import { fetchHandsMeta } from "@/reducers/duel/handsSlice"; import { fetchHandsMeta } from "@/reducers/duel/handsSlice";
import { fetchEsHintMeta } from "@/reducers/duel/hintSlice"; import { fetchEsHintMeta } from "@/reducers/duel/hintSlice";
import { AppDispatch } from "@/store";
export default ( export default (
draw: ygopro.StocGameMessage.MsgDraw, draw: ygopro.StocGameMessage.MsgDraw,
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { setWaiting } from "@/reducers/duel/mod";
import { store } from "@/store"; import { store } from "@/store";
import onMsgStart from "./start";
import onMsgAttack from "./attack";
import onMsgAttackDisable from "./attackDisable";
import onMsgChaining from "./chaining";
import onMsgDraw from "./draw"; import onMsgDraw from "./draw";
import onMsgNewTurn from "./newTurn"; import onMsgFilpSummoned from "./flipSummoned";
import onMsgNewPhase from "./newPhase"; import onMsgFlipSummoning from "./flipSummoning";
import onMsgHint from "./hint"; import onMsgHint from "./hint";
import onMsgSelectIdleCmd from "./selectIdleCmd";
import onMsgSelectPlace from "./selectPlace";
import onMsgMove from "./move"; import onMsgMove from "./move";
import onMsgNewPhase from "./newPhase";
import onMsgNewTurn from "./newTurn";
import onMsgPosChange from "./posChange";
import onMsgReloadField from "./reloadField";
import onMsgSelectBattleCmd from "./selectBattleCmd";
import onMsgSelectCard from "./selectCard"; import onMsgSelectCard from "./selectCard";
import onMsgSelectChain from "./selectChain"; import onMsgSelectChain from "./selectChain";
import onMsgSelectCounter from "./selectCounter";
import onMsgSelectEffectYn from "./selectEffectYn"; import onMsgSelectEffectYn from "./selectEffectYn";
import onMsgSelectPosition from "./selectPosition"; import onMsgSelectIdleCmd from "./selectIdleCmd";
import onMsgSelectOption from "./selectOption"; import onMsgSelectOption from "./selectOption";
import onMsgShuffleHand from "./shuffleHand"; import onMsgSelectPlace from "./selectPlace";
import onMsgSelectBattleCmd from "./selectBattleCmd"; import onMsgSelectPosition from "./selectPosition";
import onMsgPosChange from "./posChange";
import onMsgSelectUnselectCard from "./selectUnselectCard";
import onMsgSelectYesNo from "./selectYesNo";
import onMsgUpdateHp from "./updateHp";
import onMsgWin from "./win";
import onMsgWait from "./wait";
import onUnimplemented from "./unimplemented";
import onMsgUpdateData from "./updateData";
import onMsgReloadField from "./reloadField";
import onMsgSelectSum from "./selectSum"; import onMsgSelectSum from "./selectSum";
import onMsgSelectTribute from "./selectTribute"; import onMsgSelectTribute from "./selectTribute";
import onMsgUpdateCounter from "./updateCounter"; import onMsgSelectUnselectCard from "./selectUnselectCard";
import onMsgSelectCounter from "./selectCounter"; import onMsgSelectYesNo from "./selectYesNo";
import onMsgSortCard from "./sortCard";
import onMsgSet from "./set"; import onMsgSet from "./set";
import onMsgSwap from "./swap"; import onMsgShuffleHand from "./shuffleHand";
import onMsgAttack from "./attack"; import onMsgSortCard from "./sortCard";
import onMsgAttackDisable from "./attackDisable";
import onMsgChaining from "./chaining";
import onMsgFlipSummoning from "./flipSummoning";
import onMsgFilpSummoned from "./flipSummoned";
import onMsgSpSummoning from "./spSummoning";
import onMsgSpSummoned from "./spSummoned"; import onMsgSpSummoned from "./spSummoned";
import onMsgSummoning from "./summoning"; import onMsgSpSummoning from "./spSummoning";
import onMsgStart from "./start";
import onMsgSummoned from "./summoned"; import onMsgSummoned from "./summoned";
import { setWaiting } from "@/reducers/duel/mod"; import onMsgSummoning from "./summoning";
import onMsgSwap from "./swap";
import onUnimplemented from "./unimplemented";
import onMsgUpdateCounter from "./updateCounter";
import onMsgUpdateData from "./updateData";
import onMsgUpdateHp from "./updateHp";
import onMsgWait from "./wait";
import onMsgWin from "./win";
const ActiveList = [ const ActiveList = [
"select_idle_cmd", "select_idle_cmd",
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { AppDispatch } from "@/store";
import { import {
fetchCommonHintMeta, fetchCommonHintMeta,
fetchEsHintMeta, fetchEsHintMeta,
fetchSelectHintMeta, fetchSelectHintMeta,
} from "@/reducers/duel/hintSlice"; } from "@/reducers/duel/hintSlice";
import { AppDispatch } from "@/store";
import MsgHint = ygopro.StocGameMessage.MsgHint; import MsgHint = ygopro.StocGameMessage.MsgHint;
export default (hint: MsgHint, dispatch: AppDispatch) => { export default (hint: MsgHint, dispatch: AppDispatch) => {
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import MsgMove = ygopro.StocGameMessage.MsgMove; import MsgMove = ygopro.StocGameMessage.MsgMove;
import { AppDispatch } from "@/store"; import { fetchCemeteryMeta } from "@/reducers/duel/cemeretySlice";
import { import { fetchExclusionMeta } from "@/reducers/duel/exclusionSlice";
fetchMonsterMeta, import { fetchExtraDeckMeta } from "@/reducers/duel/extraDeckSlice";
fetchOverlayMeta, import { insertHandMeta } from "@/reducers/duel/handsSlice";
} from "@/reducers/duel/monstersSlice"; import { fetchMagicMeta } from "@/reducers/duel/magicSlice";
import { import {
removeCemetery, removeCemetery,
removeExclusion, removeExclusion,
...@@ -14,11 +14,12 @@ import { ...@@ -14,11 +14,12 @@ import {
removeMonster, removeMonster,
removeOverlay, removeOverlay,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { fetchMagicMeta } from "@/reducers/duel/magicSlice"; import {
import { fetchCemeteryMeta } from "@/reducers/duel/cemeretySlice"; fetchMonsterMeta,
import { insertHandMeta } from "@/reducers/duel/handsSlice"; fetchOverlayMeta,
import { fetchExclusionMeta } from "@/reducers/duel/exclusionSlice"; } from "@/reducers/duel/monstersSlice";
import { fetchExtraDeckMeta } from "@/reducers/duel/extraDeckSlice"; import { AppDispatch } from "@/store";
import { REASON_MATERIAL } from "../../common"; import { REASON_MATERIAL } from "../../common";
const OVERLAY_STACK: { code: number; sequence: number }[] = []; const OVERLAY_STACK: { code: number; sequence: number }[] = [];
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { AppDispatch } from "@/store";
import { updatePhase } from "@/reducers/duel/mod"; import { updatePhase } from "@/reducers/duel/mod";
import { AppDispatch } from "@/store";
export default ( export default (
newPhase: ygopro.StocGameMessage.MsgNewPhase, newPhase: ygopro.StocGameMessage.MsgNewPhase,
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { AppDispatch } from "@/store";
import { updateTurn } from "@/reducers/duel/mod"; import { updateTurn } from "@/reducers/duel/mod";
import { AppDispatch } from "@/store";
export default ( export default (
newTurn: ygopro.StocGameMessage.MsgNewTurn, newTurn: ygopro.StocGameMessage.MsgNewTurn,
......
import { ActionCreatorWithPayload } from "@reduxjs/toolkit"; import { ActionCreatorWithPayload } from "@reduxjs/toolkit";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { Interactivity, InteractType } from "@/reducers/duel/generic"; import { Interactivity, InteractType } from "@/reducers/duel/generic";
import { import {
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { AppDispatch } from "@/store";
import { import {
setCheckCardModalIsOpen, setCheckCardModalIsOpen,
setCheckCardModalMinMax, setCheckCardModalMinMax,
setCheckCardModalOnSubmit, setCheckCardModalOnSubmit,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { fetchCheckCardMeta } from "@/reducers/duel/modal/mod"; import { fetchCheckCardMeta } from "@/reducers/duel/modal/mod";
import { AppDispatch } from "@/store";
import MsgSelectCard = ygopro.StocGameMessage.MsgSelectCard; import MsgSelectCard = ygopro.StocGameMessage.MsgSelectCard;
import { CardZoneToChinese } from "./util"; import { CardZoneToChinese } from "./util";
......
...@@ -10,6 +10,7 @@ import { ...@@ -10,6 +10,7 @@ import {
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { fetchCheckCardMeta } from "@/reducers/duel/modal/mod"; import { fetchCheckCardMeta } from "@/reducers/duel/modal/mod";
import { AppDispatch } from "@/store"; import { AppDispatch } from "@/store";
import { CardZoneToChinese } from "./util"; import { CardZoneToChinese } from "./util";
import MsgSelectChain = ygopro.StocGameMessage.MsgSelectChain; import MsgSelectChain = ygopro.StocGameMessage.MsgSelectChain;
......
...@@ -3,6 +3,7 @@ import { ygopro } from "@/api/ocgcore/idl/ocgcore"; ...@@ -3,6 +3,7 @@ import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { setYesNoModalIsOpen } from "@/reducers/duel/mod"; import { setYesNoModalIsOpen } from "@/reducers/duel/mod";
import { fetchYesNoMeta } from "@/reducers/duel/modal/mod"; import { fetchYesNoMeta } from "@/reducers/duel/modal/mod";
import { AppDispatch } from "@/store"; import { AppDispatch } from "@/store";
import { CardZoneToChinese } from "./util"; import { CardZoneToChinese } from "./util";
import MsgSelectEffectYn = ygopro.StocGameMessage.MsgSelectEffectYn; import MsgSelectEffectYn = ygopro.StocGameMessage.MsgSelectEffectYn;
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { AppDispatch } from "@/store";
import { Interactivity, InteractType } from "@/reducers/duel/generic"; import { Interactivity, InteractType } from "@/reducers/duel/generic";
import { import {
addCemeteryIdleInteractivities,
addExclusionIdleInteractivities,
addExtraDeckIdleInteractivities,
addHandsIdleInteractivity, addHandsIdleInteractivity,
addMonsterIdleInteractivities,
addMagicIdleInteractivities, addMagicIdleInteractivities,
addMonsterIdleInteractivities,
clearAllIdleInteractivities,
setEnableBp, setEnableBp,
setEnableEp, setEnableEp,
addCemeteryIdleInteractivities,
clearAllIdleInteractivities,
addExclusionIdleInteractivities,
addExtraDeckIdleInteractivities,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { AppDispatch } from "@/store";
import MsgSelectIdleCmd = ygopro.StocGameMessage.MsgSelectIdleCmd; import MsgSelectIdleCmd = ygopro.StocGameMessage.MsgSelectIdleCmd;
import { ActionCreatorWithPayload } from "@reduxjs/toolkit"; import { ActionCreatorWithPayload } from "@reduxjs/toolkit";
......
...@@ -2,8 +2,8 @@ import { ygopro } from "@/api/ocgcore/idl/ocgcore"; ...@@ -2,8 +2,8 @@ import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { AppDispatch } from "@/store"; import { AppDispatch } from "@/store";
import MsgSelectPlace = ygopro.StocGameMessage.MsgSelectPlace; import MsgSelectPlace = ygopro.StocGameMessage.MsgSelectPlace;
import { import {
addMonsterPlaceInteractivities,
addMagicPlaceInteractivities, addMagicPlaceInteractivities,
addMonsterPlaceInteractivities,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
export default (selectPlace: MsgSelectPlace, dispatch: AppDispatch) => { export default (selectPlace: MsgSelectPlace, dispatch: AppDispatch) => {
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { AppDispatch } from "@/store";
import { import {
infoInit, infoInit,
setSelfType,
initMonsters,
initMagics,
initCemetery, initCemetery,
initDeck, initDeck,
initExclusion, initExclusion,
initHint, initHint,
initMagics,
initMonsters,
setSelfType,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { AppDispatch } from "@/store";
export default ( export default (
start: ygopro.StocGameMessage.MsgStart, start: ygopro.StocGameMessage.MsgStart,
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { store } from "@/store";
import { updateTimeLimit } from "@/reducers/duel/mod";
import { sendTimeConfirm } from "@/api/ocgcore/ocgHelper"; import { sendTimeConfirm } from "@/api/ocgcore/ocgHelper";
import { updateTimeLimit } from "@/reducers/duel/mod";
import { store } from "@/store";
export default function handleTimeLimit(timeLimit: ygopro.StocTimeLimit) { export default function handleTimeLimit(timeLimit: ygopro.StocTimeLimit) {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { setUnimplemented } from "@/reducers/duel/mod"; import { setUnimplemented } from "@/reducers/duel/mod";
import { AppDispatch } from "@/store"; import { AppDispatch } from "@/store";
import NeosConfig from "../../../neos.config.json"; import NeosConfig from "../../../neos.config.json";
export default ( export default (
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { store } from "@/store";
import { player0DeckInfo, player1DeckInfo } from "@/reducers/playerSlice"; import { player0DeckInfo, player1DeckInfo } from "@/reducers/playerSlice";
import { store } from "@/store";
// FIXME: player0 不一定是当前玩家 // FIXME: player0 不一定是当前玩家
export default function handleDeckCount(pb: ygopro.YgoStocMsg) { export default function handleDeckCount(pb: ygopro.YgoStocMsg) {
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { store } from "@/store";
import { selectHandAble } from "@/reducers/moraSlice"; import { selectHandAble } from "@/reducers/moraSlice";
import { store } from "@/store";
export default function handleSelectHand(_: ygopro.YgoStocMsg) { export default function handleSelectHand(_: ygopro.YgoStocMsg) {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { store } from "@/store";
import { selectTpAble } from "@/reducers/moraSlice"; import { selectTpAble } from "@/reducers/moraSlice";
import { store } from "@/store";
export default function handleSelectTp(_: ygopro.YgoStocMsg) { export default function handleSelectTp(_: ygopro.YgoStocMsg) {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
...@@ -2,20 +2,21 @@ ...@@ -2,20 +2,21 @@
* 长连接消息事件订阅处理逻辑 * 长连接消息事件订阅处理逻辑
* *
* */ * */
import handleHsPlayerChange from "./room/hsPlayerChange";
import handleTypeChange from "./room/typeChange";
import handleHsPlayerEnter from "./room/hsPlayerEnter";
import handleJoinGame from "./room/joinGame";
import handleChat from "./room/chat";
import handleHsWatchChange from "./room/hsWatchChange";
import { YgoProPacket } from "@/api/ocgcore/ocgAdapter/packet";
import { adaptStoc } from "@/api/ocgcore/ocgAdapter/adapter"; import { adaptStoc } from "@/api/ocgcore/ocgAdapter/adapter";
import handleSelectHand from "./mora/selectHand"; import { YgoProPacket } from "@/api/ocgcore/ocgAdapter/packet";
import handleSelectTp from "./mora/selectTp";
import handleDeckCount from "./mora/deckCount";
import handleGameMsg from "./duel/gameMsg"; import handleGameMsg from "./duel/gameMsg";
import handleTimeLimit from "./duel/timeLimit"; import handleTimeLimit from "./duel/timeLimit";
import handleDeckCount from "./mora/deckCount";
import handleSelectHand from "./mora/selectHand";
import handleSelectTp from "./mora/selectTp";
import handleChat from "./room/chat";
import handleDuelStart from "./room/duelStart"; import handleDuelStart from "./room/duelStart";
import handleHsPlayerChange from "./room/hsPlayerChange";
import handleHsPlayerEnter from "./room/hsPlayerEnter";
import handleHsWatchChange from "./room/hsWatchChange";
import handleJoinGame from "./room/joinGame";
import handleTypeChange from "./room/typeChange";
/* /*
* 先将从长连接中读取到的二进制数据通过Adapter转成protobuf结构体, * 先将从长连接中读取到的二进制数据通过Adapter转成protobuf结构体,
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* *
* */ * */
import { sendJoinGame, sendPlayerInfo } from "@/api/ocgcore/ocgHelper"; import { sendJoinGame, sendPlayerInfo } from "@/api/ocgcore/ocgHelper";
import NeosConfig from "../../neos.config.json"; import NeosConfig from "../../neos.config.json";
/* /*
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { store } from "@/store";
import { import {
player0Update, observerIncrement,
player1Update,
player0Leave, player0Leave,
player0Update,
player1Leave, player1Leave,
observerIncrement, player1Update,
} from "@/reducers/playerSlice"; } from "@/reducers/playerSlice";
import { store } from "@/store";
const READY_STATE = "ready"; const READY_STATE = "ready";
const NO_READY_STATE = "not ready"; const NO_READY_STATE = "not ready";
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { store } from "@/store";
import { player0Enter, player1Enter } from "@/reducers/playerSlice"; import { player0Enter, player1Enter } from "@/reducers/playerSlice";
import { store } from "@/store";
export default function handleHsPlayerEnter(pb: ygopro.YgoStocMsg) { export default function handleHsPlayerEnter(pb: ygopro.YgoStocMsg) {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { store } from "@/store";
import { setJoined } from "@/reducers/joinSlice"; import { setJoined } from "@/reducers/joinSlice";
import { store } from "@/store";
export default function handleJoinGame(pb: ygopro.YgoStocMsg) { export default function handleJoinGame(pb: ygopro.YgoStocMsg) {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { import {
hostChange,
player0Update, player0Update,
player1Update, player1Update,
hostChange,
updateIsHost, updateIsHost,
} from "@/reducers/playerSlice"; } from "@/reducers/playerSlice";
import { store } from "@/store"; import { store } from "@/store";
......
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
* 全局状态存储模块 * 全局状态存储模块
* */ * */
import { configureStore, Unsubscribe } from "@reduxjs/toolkit"; import { configureStore, Unsubscribe } from "@reduxjs/toolkit";
import joinedReducer from "./reducers/joinSlice";
import chatReducer from "./reducers/chatSlice"; import chatReducer from "./reducers/chatSlice";
import playerReducer from "./reducers/playerSlice";
import moraReducer from "./reducers/moraSlice";
import duelReducer from "./reducers/duel/mod"; import duelReducer from "./reducers/duel/mod";
import joinedReducer from "./reducers/joinSlice";
import moraReducer from "./reducers/moraSlice";
import playerReducer from "./reducers/playerSlice";
export const store = configureStore({ export const store = configureStore({
reducer: { reducer: {
......
import React from "react";
import { Layout } from "antd"; import { Layout } from "antd";
import React from "react";
import NeosConfig from "../../../neos.config.json"; import NeosConfig from "../../../neos.config.json";
const layoutConfig = NeosConfig.ui.layout; const layoutConfig = NeosConfig.ui.layout;
......
import * as BABYLON from "@babylonjs/core";
import { Row } from "antd";
import React from "react"; import React from "react";
import { Engine, Scene } from "react-babylonjs"; import { Engine, Scene } from "react-babylonjs";
import { ReactReduxContext, Provider } from "react-redux"; import { Provider, ReactReduxContext } from "react-redux";
import * as BABYLON from "@babylonjs/core";
import { import NeosConfig from "../../../neos.config.json";
Hands, import NeosLayout from "./Layout";
Monsters,
Magics,
Field,
Graveyard,
ExtraDeck,
} from "./PlayMat";
import { import {
CardModal, Alert,
HintNotification,
CardListModal, CardListModal,
CardModal,
CheckCardModal, CheckCardModal,
YesNoModal,
PositionModal,
OptionModal,
Phase,
CheckCardModalV2, CheckCardModalV2,
DuelTimeLine,
SendBox,
PlayerStatus,
Alert,
CheckCardModalV3, CheckCardModalV3,
CheckCounterModal, CheckCounterModal,
DuelTimeLine,
HintNotification,
OptionModal,
Phase,
PlayerStatus,
PositionModal,
SendBox,
SortCardModal, SortCardModal,
YesNoModal,
} from "./Message"; } from "./Message";
import { CommonDeck } from "./PlayMat/Deck"; import {
ExtraDeck,
Field,
Graveyard,
Hands,
Magics,
Monsters,
} from "./PlayMat";
import { BanishedZone } from "./PlayMat/BanishedZone"; import { BanishedZone } from "./PlayMat/BanishedZone";
import NeosLayout from "./Layout"; import { CommonDeck } from "./PlayMat/Deck";
import NeosConfig from "../../../neos.config.json";
import { Row } from "antd";
// Ref: https://github.com/brianzinn/react-babylonjs/issues/126 // Ref: https://github.com/brianzinn/react-babylonjs/issues/126
const NeosDuel = () => { const NeosDuel = () => {
......
import { Alert as AntdAlert } from "antd";
import React from "react"; import React from "react";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { sendSurrender } from "@/api/ocgcore/ocgHelper"; import { sendSurrender } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { selectUnimplemented } from "@/reducers/duel/mod"; import { selectUnimplemented } from "@/reducers/duel/mod";
import { Alert as AntdAlert } from "antd";
export const Alert = () => { export const Alert = () => {
const unimplemented = useAppSelector(selectUnimplemented); const unimplemented = useAppSelector(selectUnimplemented);
......
import { Button, Drawer, List } from "antd";
import React from "react"; import React from "react";
import { sendSelectIdleCmdResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { store } from "@/store";
import {
selectCardListModalIsOpen,
selectCardListModalInfo,
} from "@/reducers/duel/modal/mod";
import { import {
clearAllIdleInteractivities, clearAllIdleInteractivities,
setCardListModalIsOpen, setCardListModalIsOpen,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { Drawer, List, Button } from "antd"; import {
import { sendSelectIdleCmdResponse } from "@/api/ocgcore/ocgHelper"; selectCardListModalInfo,
selectCardListModalIsOpen,
} from "@/reducers/duel/modal/mod";
import { store } from "@/store";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
const CARD_WIDTH = 100; const CARD_WIDTH = 100;
......
import Icon, { StarOutlined } from "@ant-design/icons";
import { Button, Card, Col, Modal, Row } from "antd";
import React from "react"; import React from "react";
import { sendSelectIdleCmdResponse } from "@/api/ocgcore/ocgHelper";
import { fetchStrings } from "@/api/strings";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { store } from "@/store";
import { import {
selectCardModalIsOpen, clearAllIdleInteractivities,
setCardModalIsOpen,
} from "@/reducers/duel/mod";
import {
selectCardModalCounters,
selectCardModalInteractivies, selectCardModalInteractivies,
selectCardModalIsOpen,
selectCardModalMeta, selectCardModalMeta,
selectCardModalCounters,
} from "@/reducers/duel/modal/mod"; } from "@/reducers/duel/modal/mod";
import { import { store } from "@/store";
setCardModalIsOpen,
clearAllIdleInteractivities,
} from "@/reducers/duel/mod";
import { Modal, Card, Button, Row, Col } from "antd";
import { sendSelectIdleCmdResponse } from "@/api/ocgcore/ocgHelper";
import Icon, { StarOutlined } from "@ant-design/icons";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { ReactComponent as BattleSvg } from "../../../../neos-assets/battle-axe.svg"; import { ReactComponent as BattleSvg } from "../../../../neos-assets/battle-axe.svg";
import { ReactComponent as DefenceSvg } from "../../../../neos-assets/checked-shield.svg"; import { ReactComponent as DefenceSvg } from "../../../../neos-assets/checked-shield.svg";
import { import {
extraCardTypes,
Type2StringCodeMap,
Attribute2StringCodeMap, Attribute2StringCodeMap,
extraCardTypes,
Race2StringCodeMap, Race2StringCodeMap,
Type2StringCodeMap,
} from "../../../common"; } from "../../../common";
import { fetchStrings } from "@/api/strings";
const { Meta } = Card; const { Meta } = Card;
const CARD_WIDTH = 240; const CARD_WIDTH = 240;
......
import { ThunderboltOutlined } from "@ant-design/icons";
import { CheckCard, CheckCardProps } from "@ant-design/pro-components";
import { Button, Col, Popover, Row } from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import {
sendSelectCardResponse,
sendSelectChainResponse,
} from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { store } from "@/store"; import { selectHint } from "@/reducers/duel/hintSlice";
import {
resetCheckCardModal,
setCheckCardModalIsOpen,
} from "@/reducers/duel/mod";
import { import {
selectCheckCardModalCacnelResponse, selectCheckCardModalCacnelResponse,
selectCheckCardModalCancelAble, selectCheckCardModalCancelAble,
...@@ -9,20 +21,10 @@ import { ...@@ -9,20 +21,10 @@ import {
selectCheckCardModalOnSubmit, selectCheckCardModalOnSubmit,
selectCheckCardModalTags, selectCheckCardModalTags,
} from "@/reducers/duel/modal/mod"; } from "@/reducers/duel/modal/mod";
import { import { store } from "@/store";
resetCheckCardModal,
setCheckCardModalIsOpen,
} from "@/reducers/duel/mod";
import { Button, Row, Col, Popover } from "antd";
import { CheckCard, CheckCardProps } from "@ant-design/pro-components";
import {
sendSelectCardResponse,
sendSelectChainResponse,
} from "@/api/ocgcore/ocgHelper";
import { ThunderboltOutlined } from "@ant-design/icons";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
import { selectHint } from "@/reducers/duel/hintSlice";
export const CheckCardModal = () => { export const CheckCardModal = () => {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import { CheckCard } from "@ant-design/pro-components";
import { Button, Card, Col, Row } from "antd";
import React from "react"; import React from "react";
import { sendSelectUnselectCardResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { store } from "@/store"; import { selectHint } from "@/reducers/duel/hintSlice";
import { Button, Card, Row, Col } from "antd"; import {
import { CheckCard } from "@ant-design/pro-components"; resetCheckCardModalV2,
setCheckCardModalV2IsOpen,
setCheckCardModalV2ResponseAble,
} from "@/reducers/duel/mod";
import { import {
selectCheckCardModalV2CancelAble, selectCheckCardModalV2CancelAble,
selectCheckCardModalV2FinishAble, selectCheckCardModalV2FinishAble,
...@@ -12,15 +19,10 @@ import { ...@@ -12,15 +19,10 @@ import {
selectCheckCardModalV2SelectAbleOptions, selectCheckCardModalV2SelectAbleOptions,
selectCheckCardModalV2SelectedOptions, selectCheckCardModalV2SelectedOptions,
} from "@/reducers/duel/modal/checkCardModalV2Slice"; } from "@/reducers/duel/modal/checkCardModalV2Slice";
import { sendSelectUnselectCardResponse } from "@/api/ocgcore/ocgHelper"; import { store } from "@/store";
import {
resetCheckCardModalV2,
setCheckCardModalV2IsOpen,
setCheckCardModalV2ResponseAble,
} from "@/reducers/duel/mod";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
import { selectHint } from "@/reducers/duel/hintSlice";
export const CheckCardModalV2 = () => { export const CheckCardModalV2 = () => {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import React, { useState } from "react";
import { useAppSelector } from "@/hook";
import { store } from "@/store";
import { Button, Card, Row, Col } from "antd";
import { CheckCard } from "@ant-design/pro-components"; import { CheckCard } from "@ant-design/pro-components";
import { Button, Card, Col, Row } from "antd";
import React, { useState } from "react";
import { sendSelectCardResponse } from "@/api/ocgcore/ocgHelper"; import { sendSelectCardResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook";
import { selectHint } from "@/reducers/duel/hintSlice";
import { import {
resetCheckCardModalV3, resetCheckCardModalV3,
setCheckCardModalV3IsOpen, setCheckCardModalV3IsOpen,
setCheckCardModalV3ResponseAble, setCheckCardModalV3ResponseAble,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import NeosConfig from "../../../../neos.config.json";
import { selectCheckCardModalV3 } from "@/reducers/duel/modal/checkCardModalV3Slice"; import { selectCheckCardModalV3 } from "@/reducers/duel/modal/checkCardModalV3Slice";
import { store } from "@/store";
import NeosConfig from "../../../../neos.config.json";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
import { selectHint } from "@/reducers/duel/hintSlice";
export const CheckCardModalV3 = () => { export const CheckCardModalV3 = () => {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import { Button, Row, Col, Card, InputNumber } from "antd"; import { Button, Card, Col, InputNumber, Row } from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import { sendSelectCounterResponse } from "@/api/ocgcore/ocgHelper"; import { sendSelectCounterResponse } from "@/api/ocgcore/ocgHelper";
import { fetchStrings } from "@/api/strings"; import { fetchStrings } from "@/api/strings";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { clearCheckCounter } from "@/reducers/duel/mod"; import { clearCheckCounter } from "@/reducers/duel/mod";
import { selectCheckCounterModal } from "@/reducers/duel/modal/checkCounterModalSlice"; import { selectCheckCounterModal } from "@/reducers/duel/modal/checkCounterModalSlice";
import { store } from "@/store"; import { store } from "@/store";
import { DragModal } from "./DragModal";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { DragModal } from "./DragModal";
export const CheckCounterModal = () => { export const CheckCounterModal = () => {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
// 经过封装的可拖拽`Modal` // 经过封装的可拖拽`Modal`
import { Modal, ModalProps } from "antd";
import React, { useRef, useState } from "react"; import React, { useRef, useState } from "react";
import type { DraggableData, DraggableEvent } from "react-draggable"; import type { DraggableData, DraggableEvent } from "react-draggable";
import Draggable from "react-draggable"; import Draggable from "react-draggable";
import { Modal, ModalProps } from "antd";
export interface DragModalProps extends ModalProps {} export interface DragModalProps extends ModalProps {}
......
import { notification } from "antd";
import React, { useEffect } from "react"; import React, { useEffect } from "react";
import { useNavigate } from "react-router-dom";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { selectHint } from "@/reducers/duel/hintSlice"; import { selectHint } from "@/reducers/duel/hintSlice";
import { selectCurrentPhase } from "@/reducers/duel/phaseSlice";
import { notification } from "antd";
import { selectDuelResult, selectWaiting } from "@/reducers/duel/mod"; import { selectDuelResult, selectWaiting } from "@/reducers/duel/mod";
import { useNavigate } from "react-router-dom"; import { selectCurrentPhase } from "@/reducers/duel/phaseSlice";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import MsgWin = ygopro.StocGameMessage.MsgWin; import MsgWin = ygopro.StocGameMessage.MsgWin;
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
......
import { CheckCard } from "@ant-design/pro-components";
import { Button } from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import { sendSelectOptionResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { store } from "@/store"; import { resetOptionModal, setOptionModalIsOpen } from "@/reducers/duel/mod";
import { Button } from "antd";
import { CheckCard } from "@ant-design/pro-components";
import { import {
selectOptionModalIsOpen, selectOptionModalIsOpen,
selectOptionModalOptions, selectOptionModalOptions,
} from "@/reducers/duel/modal/mod"; } from "@/reducers/duel/modal/mod";
import { sendSelectOptionResponse } from "@/api/ocgcore/ocgHelper"; import { store } from "@/store";
import { resetOptionModal, setOptionModalIsOpen } from "@/reducers/duel/mod";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
export const OptionModal = () => { export const OptionModal = () => {
......
import Icon from "@ant-design/icons";
import { Button, Modal, Space } from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import { store } from "@/store";
import { useAppSelector } from "@/hook";
import {
selectCurrentPhase,
selectEnableBp,
selectEnableEp,
selectEnableM2,
} from "@/reducers/duel/phaseSlice";
import { import {
sendSelectBattleCmdResponse, sendSelectBattleCmdResponse,
sendSelectIdleCmdResponse, sendSelectIdleCmdResponse,
sendSurrender, sendSurrender,
} from "@/api/ocgcore/ocgHelper"; } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook";
import { import {
clearAllIdleInteractivities, clearAllIdleInteractivities,
setEnableBp, setEnableBp,
setEnableEp, setEnableEp,
setEnableM2, setEnableM2,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { Button, Modal, Space } from "antd"; import {
import Icon from "@ant-design/icons"; selectCurrentPhase,
selectEnableBp,
selectEnableEp,
selectEnableM2,
} from "@/reducers/duel/phaseSlice";
import { store } from "@/store";
import { ReactComponent as BattleSvg } from "../../../../neos-assets/crossed-swords.svg"; import { ReactComponent as BattleSvg } from "../../../../neos-assets/crossed-swords.svg";
import { ReactComponent as Main2Svg } from "../../../../neos-assets/sword-in-stone.svg";
import { ReactComponent as EpSvg } from "../../../../neos-assets/power-button.svg"; import { ReactComponent as EpSvg } from "../../../../neos-assets/power-button.svg";
import { ReactComponent as Main2Svg } from "../../../../neos-assets/sword-in-stone.svg";
import { ReactComponent as SurrenderSvg } from "../../../../neos-assets/truce.svg"; import { ReactComponent as SurrenderSvg } from "../../../../neos-assets/truce.svg";
const IconSize = "150%"; const IconSize = "150%";
......
import React, { useState } from "react"; import { CheckCard } from "@ant-design/pro-components";
import { useAppSelector } from "@/hook";
import { store } from "@/store";
import { Button } from "antd"; import { Button } from "antd";
import { sendSelectPositionResponse } from "@/api/ocgcore/ocgHelper"; import React, { useState } from "react";
import {
selectPositionModalIsOpen,
selectPositionModalPositions,
} from "@/reducers/duel/modal/mod";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { sendSelectPositionResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook";
import { import {
resetPositionModal, resetPositionModal,
setPositionModalIsOpen, setPositionModalIsOpen,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { CheckCard } from "@ant-design/pro-components"; import {
selectPositionModalIsOpen,
selectPositionModalPositions,
} from "@/reducers/duel/modal/mod";
import { store } from "@/store";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
export const PositionModal = () => { export const PositionModal = () => {
......
import React, { useState } from "react";
import { Input, Button, Row, Col } from "antd";
import { SendOutlined } from "@ant-design/icons"; import { SendOutlined } from "@ant-design/icons";
import { Button, Col, Input, Row } from "antd";
import React, { useState } from "react";
import { sendChat } from "@/api/ocgcore/ocgHelper"; import { sendChat } from "@/api/ocgcore/ocgHelper";
export const SendBox = () => { export const SendBox = () => {
......
import React, { useEffect, useState } from "react";
import { import {
DndContext,
closestCenter, closestCenter,
DndContext,
DragEndEvent,
KeyboardSensor, KeyboardSensor,
PointerSensor, PointerSensor,
useSensor, useSensor,
useSensors, useSensors,
DragEndEvent,
} from "@dnd-kit/core"; } from "@dnd-kit/core";
import { import {
arrayMove, arrayMove,
SortableContext, SortableContext,
sortableKeyboardCoordinates, sortableKeyboardCoordinates,
verticalListSortingStrategy,
useSortable, useSortable,
verticalListSortingStrategy,
} from "@dnd-kit/sortable"; } from "@dnd-kit/sortable";
import { CSS } from "@dnd-kit/utilities"; import { CSS } from "@dnd-kit/utilities";
import { Button, Card, Modal } from "antd";
import React, { useEffect, useState } from "react";
import { CardMeta } from "@/api/cards";
import { sendSortCardResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { resetSortCardModal } from "@/reducers/duel/mod";
import { selectSortCardModal } from "@/reducers/duel/modal/sortCardModalSlice"; import { selectSortCardModal } from "@/reducers/duel/modal/sortCardModalSlice";
import { sendSortCardResponse } from "@/api/ocgcore/ocgHelper";
import { store } from "@/store"; import { store } from "@/store";
import { resetSortCardModal } from "@/reducers/duel/mod";
import { Modal, Button, Card } from "antd";
import { CardMeta } from "@/api/cards";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
export const SortCardModal = () => { export const SortCardModal = () => {
......
import React from "react";
import { UserOutlined } from "@ant-design/icons"; import { UserOutlined } from "@ant-design/icons";
import { Avatar } from "antd";
import { CheckCard } from "@ant-design/pro-components"; import { CheckCard } from "@ant-design/pro-components";
import NeosConfig from "../../../../neos.config.json"; import { Avatar } from "antd";
import React from "react";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { import {
selectMeInitInfo, selectMeInitInfo,
...@@ -10,6 +10,8 @@ import { ...@@ -10,6 +10,8 @@ import {
} from "@/reducers/duel/initInfoSlice"; } from "@/reducers/duel/initInfoSlice";
import { selectWaiting } from "@/reducers/duel/mod"; import { selectWaiting } from "@/reducers/duel/mod";
import NeosConfig from "../../../../neos.config.json";
const Config = NeosConfig.ui.status; const Config = NeosConfig.ui.status;
const avatarSize = 40; const avatarSize = 40;
const ME_VALUE = "myself"; const ME_VALUE = "myself";
......
import React, { useEffect, useState } from "react";
import { Timeline, TimelineItemProps } from "antd";
import { MessageOutlined } from "@ant-design/icons"; import { MessageOutlined } from "@ant-design/icons";
import { Timeline, TimelineItemProps } from "antd";
import React, { useEffect, useState } from "react";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { selectChat } from "@/reducers/chatSlice"; import { selectChat } from "@/reducers/chatSlice";
......
import React from "react";
import { useAppSelector } from "@/hook";
import { store } from "@/store";
import { Button } from "antd"; import { Button } from "antd";
import React from "react";
import { sendSelectEffectYnResponse } from "@/api/ocgcore/ocgHelper"; import { sendSelectEffectYnResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook";
import { selectHint } from "@/reducers/duel/hintSlice";
import { setYesNoModalIsOpen } from "@/reducers/duel/mod";
import { import {
selectYesNoModalIsOpen, selectYesNoModalIsOpen,
selectYesNOModalMsg, selectYesNOModalMsg,
} from "@/reducers/duel/modal/mod"; } from "@/reducers/duel/modal/mod";
import { setYesNoModalIsOpen } from "@/reducers/duel/mod"; import { store } from "@/store";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
import { selectHint } from "@/reducers/duel/hintSlice";
export const YesNoModal = () => { export const YesNoModal = () => {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import { Alert as AntdAlert } from "antd";
import React from "react"; import React from "react";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { sendSurrender } from "@/api/ocgcore/ocgHelper"; import { sendSurrender } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { selectUnimplemented } from "@/reducers/duel/mod"; import { selectUnimplemented } from "@/reducers/duel/mod";
import { Alert as AntdAlert } from "antd";
export const Alert = () => { export const Alert = () => {
const unimplemented = useAppSelector(selectUnimplemented); const unimplemented = useAppSelector(selectUnimplemented);
......
import { Button, Drawer, List } from "antd";
import React from "react"; import React from "react";
import { sendSelectIdleCmdResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { store } from "@/store";
import {
selectCardListModalIsOpen,
selectCardListModalInfo,
} from "@/reducers/duel/modal/mod";
import { import {
clearAllIdleInteractivities, clearAllIdleInteractivities,
setCardListModalIsOpen, setCardListModalIsOpen,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { Drawer, List, Button } from "antd"; import {
import { sendSelectIdleCmdResponse } from "@/api/ocgcore/ocgHelper"; selectCardListModalInfo,
selectCardListModalIsOpen,
} from "@/reducers/duel/modal/mod";
import { store } from "@/store";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
const CARD_WIDTH = 100; const CARD_WIDTH = 100;
......
import Icon, { StarOutlined } from "@ant-design/icons";
import { Button, Card, Col, Modal, Row } from "antd";
import React from "react"; import React from "react";
import { sendSelectIdleCmdResponse } from "@/api/ocgcore/ocgHelper";
import { fetchStrings } from "@/api/strings";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { store } from "@/store";
import { import {
selectCardModalIsOpen, clearAllIdleInteractivities,
setCardModalIsOpen,
} from "@/reducers/duel/mod";
import {
selectCardModalCounters,
selectCardModalInteractivies, selectCardModalInteractivies,
selectCardModalIsOpen,
selectCardModalMeta, selectCardModalMeta,
selectCardModalCounters,
} from "@/reducers/duel/modal/mod"; } from "@/reducers/duel/modal/mod";
import { import { store } from "@/store";
setCardModalIsOpen,
clearAllIdleInteractivities,
} from "@/reducers/duel/mod";
import { Modal, Card, Button, Row, Col } from "antd";
import { sendSelectIdleCmdResponse } from "@/api/ocgcore/ocgHelper";
import Icon, { StarOutlined } from "@ant-design/icons";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { ReactComponent as BattleSvg } from "../../../../neos-assets/battle-axe.svg"; import { ReactComponent as BattleSvg } from "../../../../neos-assets/battle-axe.svg";
import { ReactComponent as DefenceSvg } from "../../../../neos-assets/checked-shield.svg"; import { ReactComponent as DefenceSvg } from "../../../../neos-assets/checked-shield.svg";
import { import {
extraCardTypes,
Type2StringCodeMap,
Attribute2StringCodeMap, Attribute2StringCodeMap,
extraCardTypes,
Race2StringCodeMap, Race2StringCodeMap,
Type2StringCodeMap,
} from "../../../common"; } from "../../../common";
import { fetchStrings } from "@/api/strings";
const { Meta } = Card; const { Meta } = Card;
const CARD_WIDTH = 240; const CARD_WIDTH = 240;
......
import { ThunderboltOutlined } from "@ant-design/icons";
import { CheckCard, CheckCardProps } from "@ant-design/pro-components";
import { Button, Col, Popover, Row } from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import {
sendSelectCardResponse,
sendSelectChainResponse,
} from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { store } from "@/store"; import { selectHint } from "@/reducers/duel/hintSlice";
import {
resetCheckCardModal,
setCheckCardModalIsOpen,
} from "@/reducers/duel/mod";
import { import {
selectCheckCardModalCacnelResponse, selectCheckCardModalCacnelResponse,
selectCheckCardModalCancelAble, selectCheckCardModalCancelAble,
...@@ -9,20 +21,10 @@ import { ...@@ -9,20 +21,10 @@ import {
selectCheckCardModalOnSubmit, selectCheckCardModalOnSubmit,
selectCheckCardModalTags, selectCheckCardModalTags,
} from "@/reducers/duel/modal/mod"; } from "@/reducers/duel/modal/mod";
import { import { store } from "@/store";
resetCheckCardModal,
setCheckCardModalIsOpen,
} from "@/reducers/duel/mod";
import { Button, Row, Col, Popover } from "antd";
import { CheckCard, CheckCardProps } from "@ant-design/pro-components";
import {
sendSelectCardResponse,
sendSelectChainResponse,
} from "@/api/ocgcore/ocgHelper";
import { ThunderboltOutlined } from "@ant-design/icons";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
import { selectHint } from "@/reducers/duel/hintSlice";
export const CheckCardModal = () => { export const CheckCardModal = () => {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import { CheckCard } from "@ant-design/pro-components";
import { Button, Card, Col, Row } from "antd";
import React from "react"; import React from "react";
import { sendSelectUnselectCardResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { store } from "@/store"; import { selectHint } from "@/reducers/duel/hintSlice";
import { Button, Card, Row, Col } from "antd"; import {
import { CheckCard } from "@ant-design/pro-components"; resetCheckCardModalV2,
setCheckCardModalV2IsOpen,
setCheckCardModalV2ResponseAble,
} from "@/reducers/duel/mod";
import { import {
selectCheckCardModalV2CancelAble, selectCheckCardModalV2CancelAble,
selectCheckCardModalV2FinishAble, selectCheckCardModalV2FinishAble,
...@@ -12,15 +19,10 @@ import { ...@@ -12,15 +19,10 @@ import {
selectCheckCardModalV2SelectAbleOptions, selectCheckCardModalV2SelectAbleOptions,
selectCheckCardModalV2SelectedOptions, selectCheckCardModalV2SelectedOptions,
} from "@/reducers/duel/modal/checkCardModalV2Slice"; } from "@/reducers/duel/modal/checkCardModalV2Slice";
import { sendSelectUnselectCardResponse } from "@/api/ocgcore/ocgHelper"; import { store } from "@/store";
import {
resetCheckCardModalV2,
setCheckCardModalV2IsOpen,
setCheckCardModalV2ResponseAble,
} from "@/reducers/duel/mod";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
import { selectHint } from "@/reducers/duel/hintSlice";
export const CheckCardModalV2 = () => { export const CheckCardModalV2 = () => {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import React, { useState } from "react";
import { useAppSelector } from "@/hook";
import { store } from "@/store";
import { Button, Card, Row, Col } from "antd";
import { CheckCard } from "@ant-design/pro-components"; import { CheckCard } from "@ant-design/pro-components";
import { Button, Card, Col, Row } from "antd";
import React, { useState } from "react";
import { sendSelectCardResponse } from "@/api/ocgcore/ocgHelper"; import { sendSelectCardResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook";
import { selectHint } from "@/reducers/duel/hintSlice";
import { import {
resetCheckCardModalV3, resetCheckCardModalV3,
setCheckCardModalV3IsOpen, setCheckCardModalV3IsOpen,
setCheckCardModalV3ResponseAble, setCheckCardModalV3ResponseAble,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import NeosConfig from "../../../../neos.config.json";
import { selectCheckCardModalV3 } from "@/reducers/duel/modal/checkCardModalV3Slice"; import { selectCheckCardModalV3 } from "@/reducers/duel/modal/checkCardModalV3Slice";
import { store } from "@/store";
import NeosConfig from "../../../../neos.config.json";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
import { selectHint } from "@/reducers/duel/hintSlice";
export const CheckCardModalV3 = () => { export const CheckCardModalV3 = () => {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import { Button, Row, Col, Card, InputNumber } from "antd"; import { Button, Card, Col, InputNumber, Row } from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import { sendSelectCounterResponse } from "@/api/ocgcore/ocgHelper"; import { sendSelectCounterResponse } from "@/api/ocgcore/ocgHelper";
import { fetchStrings } from "@/api/strings"; import { fetchStrings } from "@/api/strings";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { clearCheckCounter } from "@/reducers/duel/mod"; import { clearCheckCounter } from "@/reducers/duel/mod";
import { selectCheckCounterModal } from "@/reducers/duel/modal/checkCounterModalSlice"; import { selectCheckCounterModal } from "@/reducers/duel/modal/checkCounterModalSlice";
import { store } from "@/store"; import { store } from "@/store";
import { DragModal } from "./DragModal";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { DragModal } from "./DragModal";
export const CheckCounterModal = () => { export const CheckCounterModal = () => {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
// 经过封装的可拖拽`Modal` // 经过封装的可拖拽`Modal`
import { Modal, ModalProps } from "antd";
import React, { useRef, useState } from "react"; import React, { useRef, useState } from "react";
import type { DraggableData, DraggableEvent } from "react-draggable"; import type { DraggableData, DraggableEvent } from "react-draggable";
import Draggable from "react-draggable"; import Draggable from "react-draggable";
import { Modal, ModalProps } from "antd";
export interface DragModalProps extends ModalProps {} export interface DragModalProps extends ModalProps {}
......
import { notification } from "antd";
import React, { useEffect } from "react"; import React, { useEffect } from "react";
import { useNavigate } from "react-router-dom";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { selectHint } from "@/reducers/duel/hintSlice"; import { selectHint } from "@/reducers/duel/hintSlice";
import { selectCurrentPhase } from "@/reducers/duel/phaseSlice";
import { notification } from "antd";
import { selectDuelResult, selectWaiting } from "@/reducers/duel/mod"; import { selectDuelResult, selectWaiting } from "@/reducers/duel/mod";
import { useNavigate } from "react-router-dom"; import { selectCurrentPhase } from "@/reducers/duel/phaseSlice";
import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import MsgWin = ygopro.StocGameMessage.MsgWin; import MsgWin = ygopro.StocGameMessage.MsgWin;
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
......
import { CheckCard } from "@ant-design/pro-components";
import { Button } from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import { sendSelectOptionResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { store } from "@/store"; import { resetOptionModal, setOptionModalIsOpen } from "@/reducers/duel/mod";
import { Button } from "antd";
import { CheckCard } from "@ant-design/pro-components";
import { import {
selectOptionModalIsOpen, selectOptionModalIsOpen,
selectOptionModalOptions, selectOptionModalOptions,
} from "@/reducers/duel/modal/mod"; } from "@/reducers/duel/modal/mod";
import { sendSelectOptionResponse } from "@/api/ocgcore/ocgHelper"; import { store } from "@/store";
import { resetOptionModal, setOptionModalIsOpen } from "@/reducers/duel/mod";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
export const OptionModal = () => { export const OptionModal = () => {
......
import Icon from "@ant-design/icons";
import { Button, Modal, Space } from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import { store } from "@/store";
import { useAppSelector } from "@/hook";
import {
selectCurrentPhase,
selectEnableBp,
selectEnableEp,
selectEnableM2,
} from "@/reducers/duel/phaseSlice";
import { import {
sendSelectBattleCmdResponse, sendSelectBattleCmdResponse,
sendSelectIdleCmdResponse, sendSelectIdleCmdResponse,
sendSurrender, sendSurrender,
} from "@/api/ocgcore/ocgHelper"; } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook";
import { import {
clearAllIdleInteractivities, clearAllIdleInteractivities,
setEnableBp, setEnableBp,
setEnableEp, setEnableEp,
setEnableM2, setEnableM2,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { Button, Modal, Space } from "antd"; import {
import Icon from "@ant-design/icons"; selectCurrentPhase,
selectEnableBp,
selectEnableEp,
selectEnableM2,
} from "@/reducers/duel/phaseSlice";
import { store } from "@/store";
import { ReactComponent as BattleSvg } from "../../../../neos-assets/crossed-swords.svg"; import { ReactComponent as BattleSvg } from "../../../../neos-assets/crossed-swords.svg";
import { ReactComponent as Main2Svg } from "../../../../neos-assets/sword-in-stone.svg";
import { ReactComponent as EpSvg } from "../../../../neos-assets/power-button.svg"; import { ReactComponent as EpSvg } from "../../../../neos-assets/power-button.svg";
import { ReactComponent as Main2Svg } from "../../../../neos-assets/sword-in-stone.svg";
import { ReactComponent as SurrenderSvg } from "../../../../neos-assets/truce.svg"; import { ReactComponent as SurrenderSvg } from "../../../../neos-assets/truce.svg";
const IconSize = "150%"; const IconSize = "150%";
......
import React, { useState } from "react"; import { CheckCard } from "@ant-design/pro-components";
import { useAppSelector } from "@/hook";
import { store } from "@/store";
import { Button } from "antd"; import { Button } from "antd";
import { sendSelectPositionResponse } from "@/api/ocgcore/ocgHelper"; import React, { useState } from "react";
import {
selectPositionModalIsOpen,
selectPositionModalPositions,
} from "@/reducers/duel/modal/mod";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { sendSelectPositionResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook";
import { import {
resetPositionModal, resetPositionModal,
setPositionModalIsOpen, setPositionModalIsOpen,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { CheckCard } from "@ant-design/pro-components"; import {
selectPositionModalIsOpen,
selectPositionModalPositions,
} from "@/reducers/duel/modal/mod";
import { store } from "@/store";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
export const PositionModal = () => { export const PositionModal = () => {
......
import React, { useState } from "react";
import { Input, Button, Row, Col } from "antd";
import { SendOutlined } from "@ant-design/icons"; import { SendOutlined } from "@ant-design/icons";
import { Button, Col, Input, Row } from "antd";
import React, { useState } from "react";
import { sendChat } from "@/api/ocgcore/ocgHelper"; import { sendChat } from "@/api/ocgcore/ocgHelper";
export const SendBox = () => { export const SendBox = () => {
......
import React, { useEffect, useState } from "react";
import { import {
DndContext,
closestCenter, closestCenter,
DndContext,
DragEndEvent,
KeyboardSensor, KeyboardSensor,
PointerSensor, PointerSensor,
useSensor, useSensor,
useSensors, useSensors,
DragEndEvent,
} from "@dnd-kit/core"; } from "@dnd-kit/core";
import { import {
arrayMove, arrayMove,
SortableContext, SortableContext,
sortableKeyboardCoordinates, sortableKeyboardCoordinates,
verticalListSortingStrategy,
useSortable, useSortable,
verticalListSortingStrategy,
} from "@dnd-kit/sortable"; } from "@dnd-kit/sortable";
import { CSS } from "@dnd-kit/utilities"; import { CSS } from "@dnd-kit/utilities";
import { Button, Card, Modal } from "antd";
import React, { useEffect, useState } from "react";
import { CardMeta } from "@/api/cards";
import { sendSortCardResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { resetSortCardModal } from "@/reducers/duel/mod";
import { selectSortCardModal } from "@/reducers/duel/modal/sortCardModalSlice"; import { selectSortCardModal } from "@/reducers/duel/modal/sortCardModalSlice";
import { sendSortCardResponse } from "@/api/ocgcore/ocgHelper";
import { store } from "@/store"; import { store } from "@/store";
import { resetSortCardModal } from "@/reducers/duel/mod";
import { Modal, Button, Card } from "antd";
import { CardMeta } from "@/api/cards";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
export const SortCardModal = () => { export const SortCardModal = () => {
......
import React from "react";
import { UserOutlined } from "@ant-design/icons"; import { UserOutlined } from "@ant-design/icons";
import { Avatar } from "antd";
import { CheckCard } from "@ant-design/pro-components"; import { CheckCard } from "@ant-design/pro-components";
import NeosConfig from "../../../../neos.config.json"; import { Avatar } from "antd";
import React from "react";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { import {
selectMeInitInfo, selectMeInitInfo,
...@@ -10,6 +10,8 @@ import { ...@@ -10,6 +10,8 @@ import {
} from "@/reducers/duel/initInfoSlice"; } from "@/reducers/duel/initInfoSlice";
import { selectWaiting } from "@/reducers/duel/mod"; import { selectWaiting } from "@/reducers/duel/mod";
import NeosConfig from "../../../../neos.config.json";
const Config = NeosConfig.ui.status; const Config = NeosConfig.ui.status;
const avatarSize = 40; const avatarSize = 40;
const ME_VALUE = "myself"; const ME_VALUE = "myself";
......
import React, { useEffect, useState } from "react";
import { Timeline, TimelineItemProps } from "antd";
import { MessageOutlined } from "@ant-design/icons"; import { MessageOutlined } from "@ant-design/icons";
import { Timeline, TimelineItemProps } from "antd";
import React, { useEffect, useState } from "react";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { selectChat } from "@/reducers/chatSlice"; import { selectChat } from "@/reducers/chatSlice";
......
import React from "react";
import { useAppSelector } from "@/hook";
import { store } from "@/store";
import { Button } from "antd"; import { Button } from "antd";
import React from "react";
import { sendSelectEffectYnResponse } from "@/api/ocgcore/ocgHelper"; import { sendSelectEffectYnResponse } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook";
import { selectHint } from "@/reducers/duel/hintSlice";
import { setYesNoModalIsOpen } from "@/reducers/duel/mod";
import { import {
selectYesNoModalIsOpen, selectYesNoModalIsOpen,
selectYesNOModalMsg, selectYesNOModalMsg,
} from "@/reducers/duel/modal/mod"; } from "@/reducers/duel/modal/mod";
import { setYesNoModalIsOpen } from "@/reducers/duel/mod"; import { store } from "@/store";
import { DragModal } from "./DragModal"; import { DragModal } from "./DragModal";
import { selectHint } from "@/reducers/duel/hintSlice";
export const YesNoModal = () => { export const YesNoModal = () => {
const dispatch = store.dispatch; const dispatch = store.dispatch;
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { import {
selectMeExclusion, selectMeExclusion,
selectopExclusion, selectopExclusion,
} from "@/reducers/duel/exclusionSlice"; } from "@/reducers/duel/exclusionSlice";
import { SingleSlot, Depth } from "./SingleSlot";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotRotation } from "../utils"; import { cardSlotRotation } from "../utils";
import { Depth, SingleSlot } from "./SingleSlot";
export const BanishedZone = () => { export const BanishedZone = () => {
const meExclusion = useAppSelector(selectMeExclusion).inner; const meExclusion = useAppSelector(selectMeExclusion).inner;
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { selectMeDeck, selectOpDeck } from "@/reducers/duel/deckSlice"; import { selectMeDeck, selectOpDeck } from "@/reducers/duel/deckSlice";
import { SingleSlot, Depth } from "./SingleSlot";
import { cardSlotRotation } from "../utils";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotRotation } from "../utils";
import { Depth, SingleSlot } from "./SingleSlot";
export const CommonDeck = () => { export const CommonDeck = () => {
const meDeck = useAppSelector(selectMeDeck).inner; const meDeck = useAppSelector(selectMeDeck).inner;
......
import { SingleSlot, Depth } from "./SingleSlot";
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { import {
selectMeExtraDeck, selectMeExtraDeck,
selectOpExtraDeck, selectOpExtraDeck,
} from "@/reducers/duel/extraDeckSlice"; } from "@/reducers/duel/extraDeckSlice";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotRotation } from "../utils"; import { cardSlotRotation } from "../utils";
import { Depth, SingleSlot } from "./SingleSlot";
export const ExtraDeck = () => { export const ExtraDeck = () => {
const meExtraDeck = useAppSelector(selectMeExtraDeck).inner; const meExtraDeck = useAppSelector(selectMeExtraDeck).inner;
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { selectMeMagics, selectOpMagics } from "@/reducers/duel/magicSlice"; import { selectMeMagics, selectOpMagics } from "@/reducers/duel/magicSlice";
import { clearMagicPlaceInteractivities } from "@/reducers/duel/mod"; import { clearMagicPlaceInteractivities } from "@/reducers/duel/mod";
import { FixedSlot } from "./FixedSlot";
import { Depth } from "./SingleSlot";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotRotation } from "../utils"; import { cardSlotRotation } from "../utils";
import { FixedSlot } from "./FixedSlot";
import { Depth } from "./SingleSlot";
export const Field = () => { export const Field = () => {
const meField = useAppSelector(selectMeMagics).inner.find( const meField = useAppSelector(selectMeMagics).inner.find(
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { store } from "@/store"; import { ActionCreatorWithPayload } from "@reduxjs/toolkit";
import { CardState } from "@/reducers/duel/generic";
import { useRef } from "react"; import { useRef } from "react";
import { useClick } from "@/hook";
import { sendSelectPlaceResponse } from "@/api/ocgcore/ocgHelper";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { sendSelectPlaceResponse } from "@/api/ocgcore/ocgHelper";
import { useClick } from "@/hook";
import { CardState } from "@/reducers/duel/generic";
import { import {
setCardListModalInfo, setCardListModalInfo,
setCardListModalIsOpen, setCardListModalIsOpen,
...@@ -13,9 +14,10 @@ import { ...@@ -13,9 +14,10 @@ import {
setCardModalIsOpen, setCardModalIsOpen,
setCardModalMeta, setCardModalMeta,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { ActionCreatorWithPayload } from "@reduxjs/toolkit"; import { store } from "@/store";
import { interactTypeToString } from "../utils";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { interactTypeToString } from "../utils";
const transform = NeosConfig.ui.card.transform; const transform = NeosConfig.ui.card.transform;
const defenceRotation = NeosConfig.ui.card.defenceRotation; const defenceRotation = NeosConfig.ui.card.defenceRotation;
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { useAppSelector } from "@/hook";
import { import {
selectMeCemetery, selectMeCemetery,
selectOpCemetery, selectOpCemetery,
} from "@/reducers/duel/cemeretySlice"; } from "@/reducers/duel/cemeretySlice";
import { useAppSelector } from "@/hook";
import { SingleSlot, Depth } from "./SingleSlot";
import { cardSlotRotation } from "../utils";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotRotation } from "../utils";
import { Depth, SingleSlot } from "./SingleSlot";
export const Graveyard = () => { export const Graveyard = () => {
const meCemetery = useAppSelector(selectMeCemetery).inner; const meCemetery = useAppSelector(selectMeCemetery).inner;
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { useEffect, useRef, useState } from "react";
import { useHover } from "react-babylonjs";
import { useAppSelector, useClick } from "@/hook"; import { useAppSelector, useClick } from "@/hook";
import { selectMeHands, selectOpHands } from "@/reducers/duel/handsSlice";
import { CardState } from "@/reducers/duel/generic"; import { CardState } from "@/reducers/duel/generic";
import { selectMeHands, selectOpHands } from "@/reducers/duel/handsSlice";
import { import {
setCardModalInteractivies,
setCardModalIsOpen, setCardModalIsOpen,
setCardModalMeta, setCardModalMeta,
setCardModalInteractivies,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { store } from "@/store"; import { store } from "@/store";
import { useHover } from "react-babylonjs";
import { useState, useRef, useEffect } from "react";
import { useSpring, animated } from "../spring";
import { zip, interactTypeToString } from "../utils";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { animated, useSpring } from "../spring";
import { interactTypeToString, zip } from "../utils";
const groundShape = NeosConfig.ui.ground; const groundShape = NeosConfig.ui.ground;
const left = -(groundShape.width / 2); const left = -(groundShape.width / 2);
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { selectMeMagics, selectOpMagics } from "@/reducers/duel/magicSlice";
import { CardState } from "@/reducers/duel/generic";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { zip, cardSlotRotation } from "../utils"; import { CardState } from "@/reducers/duel/generic";
import { FixedSlot } from "./FixedSlot"; import { selectMeMagics, selectOpMagics } from "@/reducers/duel/magicSlice";
import { clearMagicPlaceInteractivities } from "@/reducers/duel/mod"; import { clearMagicPlaceInteractivities } from "@/reducers/duel/mod";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotRotation, zip } from "../utils";
import { FixedSlot } from "./FixedSlot";
// TODO: use config // TODO: use config
const left = -2.15; const left = -2.15;
......
import * as BABYLON from "@babylonjs/core";
import { CardState } from "@/reducers/duel/generic";
import "react-babylonjs"; import "react-babylonjs";
import * as BABYLON from "@babylonjs/core";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { CardState } from "@/reducers/duel/generic";
import { clearMonsterPlaceInteractivities } from "@/reducers/duel/mod";
import { import {
selectMeMonsters, selectMeMonsters,
selectOpMonsters, selectOpMonsters,
} from "@/reducers/duel/monstersSlice"; } from "@/reducers/duel/monstersSlice";
import { zip, cardSlotRotation, cardSlotDefenceRotation } from "../utils";
import { FixedSlot } from "./FixedSlot";
import { clearMonsterPlaceInteractivities } from "@/reducers/duel/mod";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotDefenceRotation, cardSlotRotation, zip } from "../utils";
import { FixedSlot } from "./FixedSlot";
const transform = NeosConfig.ui.card.transform; const transform = NeosConfig.ui.card.transform;
const floating = NeosConfig.ui.card.floating; const floating = NeosConfig.ui.card.floating;
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { CardState } from "@/reducers/duel/generic";
import { store } from "@/store";
import { useClick } from "@/hook";
import { useRef } from "react"; import { useRef } from "react";
import { useClick } from "@/hook";
import { CardState } from "@/reducers/duel/generic";
import { import {
setCardListModalInfo, setCardListModalInfo,
setCardListModalIsOpen, setCardListModalIsOpen,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { interactTypeToString } from "../utils"; import { store } from "@/store";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { interactTypeToString } from "../utils";
const transform = NeosConfig.ui.card.transform; const transform = NeosConfig.ui.card.transform;
export const Depth = 0.005; export const Depth = 0.005;
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { selectMeDeck, selectOpDeck } from "@/reducers/duel/deckSlice"; import { selectMeDeck, selectOpDeck } from "@/reducers/duel/deckSlice";
import { SingleSlot, Depth } from "./SingleSlot";
import { cardSlotRotation } from "../utils";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotRotation } from "../utils";
import { Depth, SingleSlot } from "./SingleSlot";
export const CommonDeck = () => { export const CommonDeck = () => {
const meDeck = useAppSelector(selectMeDeck).inner; const meDeck = useAppSelector(selectMeDeck).inner;
......
import { SingleSlot, Depth } from "./SingleSlot";
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { import {
selectMeExtraDeck, selectMeExtraDeck,
selectOpExtraDeck, selectOpExtraDeck,
} from "@/reducers/duel/extraDeckSlice"; } from "@/reducers/duel/extraDeckSlice";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotRotation } from "../utils"; import { cardSlotRotation } from "../utils";
import { Depth, SingleSlot } from "./SingleSlot";
export const ExtraDeck = () => { export const ExtraDeck = () => {
const meExtraDeck = useAppSelector(selectMeExtraDeck).inner; const meExtraDeck = useAppSelector(selectMeExtraDeck).inner;
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { selectMeMagics, selectOpMagics } from "@/reducers/duel/magicSlice"; import { selectMeMagics, selectOpMagics } from "@/reducers/duel/magicSlice";
import { clearMagicPlaceInteractivities } from "@/reducers/duel/mod"; import { clearMagicPlaceInteractivities } from "@/reducers/duel/mod";
import { FixedSlot } from "./FixedSlot";
import { Depth } from "./SingleSlot";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotRotation } from "../utils"; import { cardSlotRotation } from "../utils";
import { FixedSlot } from "./FixedSlot";
import { Depth } from "./SingleSlot";
export const Field = () => { export const Field = () => {
const meField = useAppSelector(selectMeMagics).inner.find( const meField = useAppSelector(selectMeMagics).inner.find(
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { store } from "@/store"; import { ActionCreatorWithPayload } from "@reduxjs/toolkit";
import { CardState } from "@/reducers/duel/generic";
import { useRef } from "react"; import { useRef } from "react";
import { useClick } from "@/hook";
import { sendSelectPlaceResponse } from "@/api/ocgcore/ocgHelper";
import { ygopro } from "@/api/ocgcore/idl/ocgcore"; import { ygopro } from "@/api/ocgcore/idl/ocgcore";
import { sendSelectPlaceResponse } from "@/api/ocgcore/ocgHelper";
import { useClick } from "@/hook";
import { CardState } from "@/reducers/duel/generic";
import { import {
setCardListModalInfo, setCardListModalInfo,
setCardListModalIsOpen, setCardListModalIsOpen,
...@@ -13,9 +14,10 @@ import { ...@@ -13,9 +14,10 @@ import {
setCardModalIsOpen, setCardModalIsOpen,
setCardModalMeta, setCardModalMeta,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { ActionCreatorWithPayload } from "@reduxjs/toolkit"; import { store } from "@/store";
import { interactTypeToString } from "../utils";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { interactTypeToString } from "../utils";
const transform = NeosConfig.ui.card.transform; const transform = NeosConfig.ui.card.transform;
const defenceRotation = NeosConfig.ui.card.defenceRotation; const defenceRotation = NeosConfig.ui.card.defenceRotation;
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { useEffect, useRef, useState } from "react";
import { useHover } from "react-babylonjs";
import { useAppSelector, useClick } from "@/hook"; import { useAppSelector, useClick } from "@/hook";
import { selectMeHands, selectOpHands } from "@/reducers/duel/handsSlice";
import { CardState } from "@/reducers/duel/generic"; import { CardState } from "@/reducers/duel/generic";
import { selectMeHands, selectOpHands } from "@/reducers/duel/handsSlice";
import { import {
setCardModalInteractivies,
setCardModalIsOpen, setCardModalIsOpen,
setCardModalMeta, setCardModalMeta,
setCardModalInteractivies,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { store } from "@/store"; import { store } from "@/store";
import { useHover } from "react-babylonjs";
import { useState, useRef, useEffect } from "react";
import { useSpring, animated } from "../spring";
import { zip, interactTypeToString } from "../utils";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { animated, useSpring } from "../spring";
import { interactTypeToString, zip } from "../utils";
const groundShape = NeosConfig.ui.ground; const groundShape = NeosConfig.ui.ground;
const left = -(groundShape.width / 2); const left = -(groundShape.width / 2);
......
export * from "./FixedSlot";
export * from "./SingleSlot";
export * from "./BanishedZone"; export * from "./BanishedZone";
export * from "./Deck"; export * from "./Deck";
export * from "./ExtraDeck"; export * from "./ExtraDeck";
export * from "./Field"; export * from "./Field";
export * from "./FixedSlot";
export * from "./Graveyard"; export * from "./Graveyard";
export * from "./Hands"; export * from "./Hands";
export * from "./Magics"; export * from "./Magics";
export * from "./Monsters"; export * from "./Monsters";
export * from "./SingleSlot";
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { selectMeMagics, selectOpMagics } from "@/reducers/duel/magicSlice";
import { CardState } from "@/reducers/duel/generic";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { zip, cardSlotRotation } from "../utils"; import { CardState } from "@/reducers/duel/generic";
import { FixedSlot } from "./FixedSlot"; import { selectMeMagics, selectOpMagics } from "@/reducers/duel/magicSlice";
import { clearMagicPlaceInteractivities } from "@/reducers/duel/mod"; import { clearMagicPlaceInteractivities } from "@/reducers/duel/mod";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotRotation, zip } from "../utils";
import { FixedSlot } from "./FixedSlot";
// TODO: use config // TODO: use config
const left = -2.15; const left = -2.15;
......
import * as BABYLON from "@babylonjs/core";
import { CardState } from "@/reducers/duel/generic";
import "react-babylonjs"; import "react-babylonjs";
import * as BABYLON from "@babylonjs/core";
import { useAppSelector } from "@/hook"; import { useAppSelector } from "@/hook";
import { CardState } from "@/reducers/duel/generic";
import { clearMonsterPlaceInteractivities } from "@/reducers/duel/mod";
import { import {
selectMeMonsters, selectMeMonsters,
selectOpMonsters, selectOpMonsters,
} from "@/reducers/duel/monstersSlice"; } from "@/reducers/duel/monstersSlice";
import { zip, cardSlotRotation, cardSlotDefenceRotation } from "../utils";
import { FixedSlot } from "./FixedSlot";
import { clearMonsterPlaceInteractivities } from "@/reducers/duel/mod";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { cardSlotDefenceRotation, cardSlotRotation, zip } from "../utils";
import { FixedSlot } from "./FixedSlot";
const transform = NeosConfig.ui.card.transform; const transform = NeosConfig.ui.card.transform;
const floating = NeosConfig.ui.card.floating; const floating = NeosConfig.ui.card.floating;
......
import * as BABYLON from "@babylonjs/core"; import * as BABYLON from "@babylonjs/core";
import { CardState } from "@/reducers/duel/generic";
import { store } from "@/store";
import { useClick } from "@/hook";
import { useRef } from "react"; import { useRef } from "react";
import { useClick } from "@/hook";
import { CardState } from "@/reducers/duel/generic";
import { import {
setCardListModalInfo, setCardListModalInfo,
setCardListModalIsOpen, setCardListModalIsOpen,
} from "@/reducers/duel/mod"; } from "@/reducers/duel/mod";
import { interactTypeToString } from "../utils"; import { store } from "@/store";
import NeosConfig from "../../../../neos.config.json"; import NeosConfig from "../../../../neos.config.json";
import { interactTypeToString } from "../utils";
const transform = NeosConfig.ui.card.transform; const transform = NeosConfig.ui.card.transform;
export const Depth = 0.005; export const Depth = 0.005;
......
import React from "react";
import { Layout } from "antd"; import { Layout } from "antd";
import React from "react";
import NeosConfig from "../../../neos.config.json"; import NeosConfig from "../../../neos.config.json";
const layoutConfig = NeosConfig.ui.layout; const layoutConfig = NeosConfig.ui.layout;
......
import * as BABYLON from "@babylonjs/core";
import { Row } from "antd";
import React from "react"; import React from "react";
import { Engine, Scene } from "react-babylonjs"; import { Engine, Scene } from "react-babylonjs";
import { ReactReduxContext, Provider } from "react-redux"; import { Provider, ReactReduxContext } from "react-redux";
import * as BABYLON from "@babylonjs/core";
import { import NeosConfig from "../../../neos.config.json";
Hands, import NeosLayout from "./Layout";
Monsters,
Magics,
Field,
Graveyard,
ExtraDeck,
} from "./PlayMat";
import { import {
CardModal, Alert,
HintNotification,
CardListModal, CardListModal,
CardModal,
CheckCardModal, CheckCardModal,
YesNoModal,
PositionModal,
OptionModal,
Phase,
CheckCardModalV2, CheckCardModalV2,
DuelTimeLine,
SendBox,
PlayerStatus,
Alert,
CheckCardModalV3, CheckCardModalV3,
CheckCounterModal, CheckCounterModal,
DuelTimeLine,
HintNotification,
OptionModal,
Phase,
PlayerStatus,
PositionModal,
SendBox,
SortCardModal, SortCardModal,
YesNoModal,
} from "./Message"; } from "./Message";
import { CommonDeck } from "./PlayMat/Deck"; import {
ExtraDeck,
Field,
Graveyard,
Hands,
Magics,
Monsters,
} from "./PlayMat";
import { BanishedZone } from "./PlayMat/BanishedZone"; import { BanishedZone } from "./PlayMat/BanishedZone";
import NeosLayout from "./Layout"; import { CommonDeck } from "./PlayMat/Deck";
import NeosConfig from "../../../neos.config.json";
import { Row } from "antd";
// Ref: https://github.com/brianzinn/react-babylonjs/issues/126 // Ref: https://github.com/brianzinn/react-babylonjs/issues/126
const NeosDuel = () => { const NeosDuel = () => {
......
// Copyright (c) 2020 hooke // Copyright (c) 2020 hooke
import { CSSProperties, ForwardRefExoticComponent, FC } from "react";
import { FluidValue } from "@react-spring/shared"; import { FluidValue } from "@react-spring/shared";
import { import {
AssignableKeys, AssignableKeys,
ComponentPropsWithRef, ComponentPropsWithRef,
ElementType, ElementType,
} from "@react-spring/types"; } from "@react-spring/types";
import { CSSProperties, FC, ForwardRefExoticComponent } from "react";
import { Primitives } from "./primitives"; import { Primitives } from "./primitives";
type AnimatedPrimitives = { type AnimatedPrimitives = {
......
// Copyright (c) 2020 hooke // Copyright (c) 2020 hooke
import { Globals } from "@react-spring/core"; import "./customProps";
import { createHost } from "@react-spring/animated"; import { createHost } from "@react-spring/animated";
import { Globals } from "@react-spring/core";
import { createStringInterpolator } from "@react-spring/shared"; import { createStringInterpolator } from "@react-spring/shared";
import { applyInitialPropsToInstance } from "react-babylonjs"; import { applyInitialPropsToInstance } from "react-babylonjs";
import { primitives } from "./primitives";
import { WithAnimated } from "./animated"; import { WithAnimated } from "./animated";
import "./customProps"; import { primitives } from "./primitives";
// todo: frameLoop can use runRenderLoop // todo: frameLoop can use runRenderLoop
Globals.assign({ Globals.assign({
......
import NeosConfig from "../../../../neos.config.json";
import { Vector3 } from "@babylonjs/core"; import { Vector3 } from "@babylonjs/core";
import NeosConfig from "../../../../neos.config.json";
const cardRotation = NeosConfig.ui.card.rotation; const cardRotation = NeosConfig.ui.card.rotation;
const cardReverseRotation = NeosConfig.ui.card.reverseRotation; const cardReverseRotation = NeosConfig.ui.card.reverseRotation;
const cardDefenceRotation = NeosConfig.ui.card.defenceRotation; const cardDefenceRotation = NeosConfig.ui.card.defenceRotation;
......
export * from "./zip";
export * from "./interactTypeToString";
export * from "./cardSlot"; export * from "./cardSlot";
export * from "./interactTypeToString";
export * from "./zip";
...@@ -6,13 +6,16 @@ ...@@ -6,13 +6,16 @@
* passWd: 房间密码。 * passWd: 房间密码。
* *
* */ * */
import "../styles/core.scss";
import { Input } from "antd"; import { Input } from "antd";
import React, { useState, ChangeEvent, useEffect } from "react"; import React, { ChangeEvent, useEffect, useState } from "react";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import "../styles/core.scss";
import NeosConfig from "../../neos.config.json";
import { useConfig } from "@/config"; import { useConfig } from "@/config";
import NeosConfig from "../../neos.config.json";
const serverConfig = NeosConfig.servers; const serverConfig = NeosConfig.servers;
const { const {
defaults: { defaultPlayer, defaultPassword }, defaults: { defaultPlayer, defaultPassword },
......
import {
ScissorOutlined,
SketchOutlined,
TableOutlined,
} from "@ant-design/icons";
import { Button, Modal } from "antd";
import React, { useEffect } from "react"; import React, { useEffect } from "react";
import { useNavigate, useParams } from "react-router-dom";
import { sendHandResult, sendTpResult } from "@/api/ocgcore/ocgHelper"; import { sendHandResult, sendTpResult } from "@/api/ocgcore/ocgHelper";
import { useAppSelector } from "@/hook";
import { useConfig } from "@/config"; import { useConfig } from "@/config";
import { useAppSelector } from "@/hook";
import { selectDuelHsStart } from "@/reducers/duel/mod";
import { import {
selectHandSelectAble, selectHandSelectAble,
unSelectHandAble,
selectTpSelectAble, selectTpSelectAble,
unSelectHandAble,
unSelectTpAble, unSelectTpAble,
} from "@/reducers/moraSlice"; } from "@/reducers/moraSlice";
import { selectDuelHsStart } from "@/reducers/duel/mod";
import { store } from "@/store"; import { store } from "@/store";
import { useNavigate, useParams } from "react-router-dom";
import { Button, Modal } from "antd";
import {
ScissorOutlined,
SketchOutlined,
TableOutlined,
} from "@ant-design/icons";
const { const {
automation: { isAiMode, isAiFirst }, automation: { isAiMode, isAiFirst },
......
import React, { Suspense } from "react"; import React, { Suspense } from "react";
import { Routes, Route } from "react-router-dom"; import { Route, Routes } from "react-router-dom";
import LazyLoad, { Loading } from "./LazyLoad"; import LazyLoad, { Loading } from "./LazyLoad";
const Login = React.lazy(() => import("./Login")); const Login = React.lazy(() => import("./Login"));
......
import { import {
Modal, CheckCircleFilled,
Checkbox, LoginOutlined,
LogoutOutlined,
SendOutlined,
TagOutlined,
UploadOutlined,
UserOutlined,
} from "@ant-design/icons";
import type { UploadProps } from "antd";
import {
Avatar, Avatar,
Space,
Button, Button,
notification, Checkbox,
Upload,
message, message,
Modal,
notification,
Select, Select,
Space,
Upload,
} from "antd"; } from "antd";
import React, { useEffect, useState } from "react";
import { useNavigate, useParams } from "react-router-dom"; import { useNavigate, useParams } from "react-router-dom";
import React, { useState, useEffect } from "react"; import rustInit from "rust-src";
import YGOProDeck from "ygopro-deck-encode";
import { DeckManager, fetchDeck, type IDeck } from "@/api/deck";
import {
sendHsReady,
sendHsStart,
sendUpdateDeck,
} from "@/api/ocgcore/ocgHelper";
import { initStrings } from "@/api/strings";
import { useConfig } from "@/config";
import { useAppSelector } from "@/hook";
import socketMiddleWare, { socketCmd } from "@/middleware/socket"; import socketMiddleWare, { socketCmd } from "@/middleware/socket";
import sqliteMiddleWare, { sqliteCmd } from "@/middleware/sqlite"; import sqliteMiddleWare, { sqliteCmd } from "@/middleware/sqlite";
import { store } from "@/store"; import { selectChat } from "@/reducers/chatSlice";
import { initMeExtraDeckMeta } from "@/reducers/duel/extraDeckSlice";
import { selectJoined } from "@/reducers/joinSlice";
import { selectDuelStart } from "@/reducers/moraSlice";
import { import {
selectIsHost, selectIsHost,
selectPlayer0, selectPlayer0,
selectPlayer1, selectPlayer1,
} from "@/reducers/playerSlice"; } from "@/reducers/playerSlice";
import { useAppSelector } from "@/hook"; import { store } from "@/store";
import { useConfig } from "@/config";
import { selectJoined } from "@/reducers/joinSlice";
import { selectChat } from "@/reducers/chatSlice";
import { fetchDeck, type IDeck, DeckManager } from "@/api/deck";
import {
sendUpdateDeck,
sendHsReady,
sendHsStart,
} from "@/api/ocgcore/ocgHelper";
import {
UserOutlined,
CheckCircleFilled,
LoginOutlined,
LogoutOutlined,
SendOutlined,
TagOutlined,
UploadOutlined,
} from "@ant-design/icons";
import { initMeExtraDeckMeta } from "@/reducers/duel/extraDeckSlice";
import type { UploadProps } from "antd";
import { selectDuelStart } from "@/reducers/moraSlice";
import NeosConfig from "../../neos.config.json"; import NeosConfig from "../../neos.config.json";
import YGOProDeck from "ygopro-deck-encode";
import rustInit from "rust-src";
import { initStrings } from "@/api/strings";
const READY_STATE = "ready"; const READY_STATE = "ready";
......
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