Commit f7b96892 authored by timel's avatar timel

style: eslint autofix import

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