Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
N
Neos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
love_飞影
Neos
Commits
0e175d8e
Commit
0e175d8e
authored
Jan 12, 2023
by
chechunchi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
generic
parent
f3a23ad7
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
115 additions
and
157 deletions
+115
-157
src/reducers/duel/cemeretySlice.ts
src/reducers/duel/cemeretySlice.ts
+15
-33
src/reducers/duel/exclusionSlice.ts
src/reducers/duel/exclusionSlice.ts
+15
-35
src/reducers/duel/generic.ts
src/reducers/duel/generic.ts
+46
-0
src/reducers/duel/magicSlice.ts
src/reducers/duel/magicSlice.ts
+17
-44
src/reducers/duel/monstersSlice.ts
src/reducers/duel/monstersSlice.ts
+16
-39
src/ui/Duel/cemetery.tsx
src/ui/Duel/cemetery.tsx
+2
-2
src/ui/Duel/magics.tsx
src/ui/Duel/magics.tsx
+2
-2
src/ui/Duel/monsters.tsx
src/ui/Duel/monsters.tsx
+2
-2
No files found.
src/reducers/duel/cemeretySlice.ts
View file @
0e175d8e
...
@@ -6,13 +6,15 @@ import {
...
@@ -6,13 +6,15 @@ import {
}
from
"
@reduxjs/toolkit
"
;
}
from
"
@reduxjs/toolkit
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
CardState
}
from
"
./generic
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
createAsyncMetaThunk
}
from
"
./generic
"
;
import
{
createAsyncMetaThunk
,
DuelFieldState
,
extendState
,
extendMeta
,
}
from
"
./generic
"
;
export
interface
CemeteryState
{
export
interface
CemeteryState
extends
DuelFieldState
{}
cemetery
:
CardState
[];
}
// 初始化墓地状态
// 初始化墓地状态
export
const
initCemeteryImpl
:
CaseReducer
<
DuelState
,
PayloadAction
<
number
>>
=
(
export
const
initCemeteryImpl
:
CaseReducer
<
DuelState
,
PayloadAction
<
number
>>
=
(
...
@@ -21,9 +23,9 @@ export const initCemeteryImpl: CaseReducer<DuelState, PayloadAction<number>> = (
...
@@ -21,9 +23,9 @@ export const initCemeteryImpl: CaseReducer<DuelState, PayloadAction<number>> = (
)
=>
{
)
=>
{
const
player
=
action
.
payload
;
const
player
=
action
.
payload
;
if
(
judgeSelf
(
player
,
state
))
{
if
(
judgeSelf
(
player
,
state
))
{
state
.
meCemetery
=
{
cemetery
:
[]
};
state
.
meCemetery
=
{
inner
:
[]
};
}
else
{
}
else
{
state
.
opCemetery
=
{
cemetery
:
[]
};
state
.
opCemetery
=
{
inner
:
[]
};
}
}
};
};
...
@@ -47,17 +49,9 @@ export const cemeteryCase = (builder: ActionReducerMapBuilder<DuelState>) => {
...
@@ -47,17 +49,9 @@ export const cemeteryCase = (builder: ActionReducerMapBuilder<DuelState>) => {
idleInteractivities
:
[],
idleInteractivities
:
[],
};
};
if
(
judgeSelf
(
controler
,
state
))
{
if
(
judgeSelf
(
controler
,
state
))
{
if
(
state
.
meCemetery
)
{
extendState
(
state
.
meCemetery
,
newCemetery
);
state
.
meCemetery
.
cemetery
.
push
(
newCemetery
);
}
else
{
state
.
meCemetery
=
{
cemetery
:
[
newCemetery
]
};
}
}
else
{
}
else
{
if
(
state
.
opCemetery
)
{
extendState
(
state
.
opCemetery
,
newCemetery
);
state
.
opCemetery
.
cemetery
.
push
(
newCemetery
);
}
else
{
state
.
opCemetery
=
{
cemetery
:
[
newCemetery
]
};
}
}
}
});
});
builder
.
addCase
(
fetchCemeteryMeta
.
fulfilled
,
(
state
,
action
)
=>
{
builder
.
addCase
(
fetchCemeteryMeta
.
fulfilled
,
(
state
,
action
)
=>
{
...
@@ -66,26 +60,14 @@ export const cemeteryCase = (builder: ActionReducerMapBuilder<DuelState>) => {
...
@@ -66,26 +60,14 @@ export const cemeteryCase = (builder: ActionReducerMapBuilder<DuelState>) => {
const
meta
=
action
.
payload
.
meta
;
const
meta
=
action
.
payload
.
meta
;
if
(
judgeSelf
(
controler
,
state
))
{
if
(
judgeSelf
(
controler
,
state
))
{
if
(
state
.
meCemetery
)
{
extendMeta
(
state
.
meCemetery
,
meta
,
sequence
);
for
(
const
cemetery
of
state
.
meCemetery
.
cemetery
)
{
if
(
cemetery
.
location
.
sequence
==
sequence
)
{
cemetery
.
occupant
=
meta
;
}
}
}
}
else
{
}
else
{
if
(
state
.
opCemetery
)
{
extendMeta
(
state
.
opCemetery
,
meta
,
sequence
);
for
(
const
cemetery
of
state
.
opCemetery
.
cemetery
)
{
if
(
cemetery
.
location
.
sequence
==
sequence
)
{
cemetery
.
occupant
=
meta
;
}
}
}
}
}
});
});
};
};
export
const
selectMeCemetery
=
(
state
:
RootState
)
=>
export
const
selectMeCemetery
=
(
state
:
RootState
)
=>
state
.
duel
.
meCemetery
||
{
cemetery
:
[]
};
state
.
duel
.
meCemetery
||
{
inner
:
[]
};
export
const
selectOpCemetery
=
(
state
:
RootState
)
=>
export
const
selectOpCemetery
=
(
state
:
RootState
)
=>
state
.
duel
.
opCemetery
||
{
cemetery
:
[]
};
state
.
duel
.
opCemetery
||
{
inner
:
[]
};
src/reducers/duel/exclusionSlice.ts
View file @
0e175d8e
...
@@ -6,13 +6,15 @@ import {
...
@@ -6,13 +6,15 @@ import {
}
from
"
@reduxjs/toolkit
"
;
}
from
"
@reduxjs/toolkit
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
CardState
}
from
"
./generic
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
createAsyncMetaThunk
}
from
"
./generic
"
;
import
{
createAsyncMetaThunk
,
DuelFieldState
,
extendState
,
extendMeta
,
}
from
"
./generic
"
;
export
interface
ExclusionState
{
export
interface
ExclusionState
extends
DuelFieldState
{}
exclusion
:
CardState
[];
}
// 初始化除外区状态
// 初始化除外区状态
export
const
initExclusionImpl
:
CaseReducer
<
export
const
initExclusionImpl
:
CaseReducer
<
...
@@ -21,9 +23,9 @@ export const initExclusionImpl: CaseReducer<
...
@@ -21,9 +23,9 @@ export const initExclusionImpl: CaseReducer<
>
=
(
state
,
action
)
=>
{
>
=
(
state
,
action
)
=>
{
const
player
=
action
.
payload
;
const
player
=
action
.
payload
;
if
(
judgeSelf
(
player
,
state
))
{
if
(
judgeSelf
(
player
,
state
))
{
state
.
meExclusion
=
{
exclusion
:
[]
};
state
.
meExclusion
=
{
inner
:
[]
};
}
else
{
}
else
{
state
.
opExclusion
=
{
exclusion
:
[]
};
state
.
opExclusion
=
{
inner
:
[]
};
}
}
};
};
...
@@ -49,17 +51,9 @@ export const exclusionCase = (builder: ActionReducerMapBuilder<DuelState>) => {
...
@@ -49,17 +51,9 @@ export const exclusionCase = (builder: ActionReducerMapBuilder<DuelState>) => {
idleInteractivities
:
[],
idleInteractivities
:
[],
};
};
if
(
judgeSelf
(
controler
,
state
))
{
if
(
judgeSelf
(
controler
,
state
))
{
if
(
state
.
meExclusion
)
{
extendState
(
state
.
meExclusion
,
newExclusion
);
state
.
meExclusion
.
exclusion
.
push
(
newExclusion
);
}
else
{
state
.
meExclusion
=
{
exclusion
:
[
newExclusion
]
};
}
}
else
{
}
else
{
if
(
state
.
opExclusion
)
{
extendState
(
state
.
opExclusion
,
newExclusion
);
state
.
opExclusion
.
exclusion
.
push
(
newExclusion
);
}
else
{
state
.
opExclusion
=
{
exclusion
:
[
newExclusion
]
};
}
}
}
});
});
builder
.
addCase
(
fetchExclusionMeta
.
fulfilled
,
(
state
,
action
)
=>
{
builder
.
addCase
(
fetchExclusionMeta
.
fulfilled
,
(
state
,
action
)
=>
{
...
@@ -68,26 +62,12 @@ export const exclusionCase = (builder: ActionReducerMapBuilder<DuelState>) => {
...
@@ -68,26 +62,12 @@ export const exclusionCase = (builder: ActionReducerMapBuilder<DuelState>) => {
const
meta
=
action
.
payload
.
meta
;
const
meta
=
action
.
payload
.
meta
;
if
(
judgeSelf
(
controler
,
state
))
{
if
(
judgeSelf
(
controler
,
state
))
{
if
(
state
.
meExclusion
)
{
extendMeta
(
state
.
meExclusion
,
meta
,
sequence
);
for
(
const
exclusion
of
state
.
meExclusion
.
exclusion
)
{
if
(
exclusion
.
location
.
sequence
==
sequence
)
{
exclusion
.
occupant
=
meta
;
}
}
}
}
else
{
}
else
{
if
(
state
.
opExclusion
)
{
extendMeta
(
state
.
opExclusion
,
meta
,
sequence
);
for
(
const
exclusion
of
state
.
opExclusion
.
exclusion
)
{
if
(
exclusion
.
location
.
sequence
==
sequence
)
{
exclusion
.
occupant
=
meta
;
}
}
}
}
}
});
});
};
};
export
const
selectMeExclusion
=
(
state
:
RootState
)
=>
export
const
selectMeExclusion
=
(
state
:
RootState
)
=>
state
.
duel
.
meExclusion
;
state
.
duel
.
meExclusion
||
{
exclusion
:
[]
};
export
const
selectopExclusion
=
(
state
:
RootState
)
=>
state
.
duel
.
opExclusion
;
export
const
selectopExclusion
=
(
state
:
RootState
)
=>
state
.
duel
.
opExclusion
||
{
exclusion
:
[]
};
src/reducers/duel/generic.ts
View file @
0e175d8e
...
@@ -2,6 +2,11 @@ import { AsyncThunk, createAsyncThunk } from "@reduxjs/toolkit";
...
@@ -2,6 +2,11 @@ import { AsyncThunk, createAsyncThunk } from "@reduxjs/toolkit";
import
{
CardMeta
}
from
"
../../api/cards
"
;
import
{
CardMeta
}
from
"
../../api/cards
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
fetchCard
}
from
"
../../api/cards
"
;
import
{
fetchCard
}
from
"
../../api/cards
"
;
import
{
DuelState
}
from
"
./mod
"
;
export
interface
DuelFieldState
{
inner
:
CardState
[];
}
export
interface
CardState
{
export
interface
CardState
{
occupant
?:
CardMeta
;
// 占据此位置的卡牌元信息
occupant
?:
CardMeta
;
// 占据此位置的卡牌元信息
...
@@ -76,3 +81,44 @@ export function createAsyncMetaThunk(name: string): AsyncThunk<
...
@@ -76,3 +81,44 @@ export function createAsyncMetaThunk(name: string): AsyncThunk<
}
}
);
);
}
}
export
function
extendState
<
T
extends
DuelFieldState
>
(
state
:
T
|
undefined
,
newState
:
CardState
)
{
if
(
state
)
{
state
.
inner
.
push
(
newState
);
}
}
export
function
extendOccupant
<
T
extends
DuelFieldState
>
(
state
:
T
|
undefined
,
newMeta
:
CardMeta
,
sequence
:
number
,
position
?:
ygopro
.
CardPosition
)
{
if
(
state
)
{
for
(
const
item
of
state
.
inner
)
{
if
(
item
.
location
.
sequence
==
sequence
)
{
item
.
occupant
=
newMeta
;
if
(
position
)
{
item
.
location
.
position
=
position
;
}
}
}
}
}
export
function
extendMeta
<
T
extends
DuelFieldState
>
(
state
:
T
|
undefined
,
newMeta
:
CardMeta
,
sequence
:
number
)
{
if
(
state
)
{
for
(
const
item
of
state
.
inner
)
{
if
(
item
.
location
.
sequence
==
sequence
)
{
item
.
occupant
=
newMeta
;
}
}
}
}
src/reducers/duel/magicSlice.ts
View file @
0e175d8e
...
@@ -2,18 +2,19 @@ import { judgeSelf } from "./util";
...
@@ -2,18 +2,19 @@ import { judgeSelf } from "./util";
import
{
import
{
PayloadAction
,
PayloadAction
,
CaseReducer
,
CaseReducer
,
createAsyncThunk
,
ActionReducerMapBuilder
,
ActionReducerMapBuilder
,
}
from
"
@reduxjs/toolkit
"
;
}
from
"
@reduxjs/toolkit
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
fetchCard
}
from
"
../../api/cards
"
;
import
{
import
{
CardState
,
InteractType
,
createAsyncMetaThunk
}
from
"
./generic
"
;
InteractType
,
createAsyncMetaThunk
,
DuelFieldState
,
extendOccupant
,
}
from
"
./generic
"
;
export
interface
MagicState
{
export
interface
MagicState
extends
DuelFieldState
{}
magics
:
CardState
[];
}
// 初始化自己的魔法陷阱区状态
// 初始化自己的魔法陷阱区状态
export
const
initMagicsImpl
:
CaseReducer
<
DuelState
,
PayloadAction
<
number
>>
=
(
export
const
initMagicsImpl
:
CaseReducer
<
DuelState
,
PayloadAction
<
number
>>
=
(
...
@@ -22,7 +23,7 @@ export const initMagicsImpl: CaseReducer<DuelState, PayloadAction<number>> = (
...
@@ -22,7 +23,7 @@ export const initMagicsImpl: CaseReducer<DuelState, PayloadAction<number>> = (
)
=>
{
)
=>
{
const
player
=
action
.
payload
;
const
player
=
action
.
payload
;
const
magics
=
{
const
magics
=
{
magics
:
[
inner
:
[
{
{
location
:
{
location
:
{
controler
:
player
,
controler
:
player
,
...
@@ -82,7 +83,7 @@ export const addMagicPlaceInteractivitiesImpl: CaseReducer<
...
@@ -82,7 +83,7 @@ export const addMagicPlaceInteractivitiesImpl: CaseReducer<
const
magics
=
judgeSelf
(
controler
,
state
)
?
state
.
meMagics
:
state
.
opMagics
;
const
magics
=
judgeSelf
(
controler
,
state
)
?
state
.
meMagics
:
state
.
opMagics
;
if
(
magics
)
{
if
(
magics
)
{
for
(
const
magic
of
magics
.
magics
)
{
for
(
const
magic
of
magics
.
inner
)
{
if
(
magic
.
location
.
sequence
==
sequence
)
{
if
(
magic
.
location
.
sequence
==
sequence
)
{
magic
.
placeInteractivities
=
{
magic
.
placeInteractivities
=
{
interactType
:
InteractType
.
PLACE_SELECTABLE
,
interactType
:
InteractType
.
PLACE_SELECTABLE
,
...
@@ -106,16 +107,14 @@ export const clearMagicPlaceInteractivitiesImpl: CaseReducer<
...
@@ -106,16 +107,14 @@ export const clearMagicPlaceInteractivitiesImpl: CaseReducer<
const
magics
=
judgeSelf
(
player
,
state
)
?
state
.
meMagics
:
state
.
opMagics
;
const
magics
=
judgeSelf
(
player
,
state
)
?
state
.
meMagics
:
state
.
opMagics
;
if
(
magics
)
{
if
(
magics
)
{
for
(
const
magic
of
magics
.
magics
)
{
for
(
const
magic
of
magics
.
inner
)
{
magic
.
placeInteractivities
=
undefined
;
magic
.
placeInteractivities
=
undefined
;
}
}
}
}
};
};
// 增加魔法陷阱
// 增加魔法陷阱
export
const
fetchMagicMeta
=
createAsyncMetaThunk
(
export
const
fetchMagicMeta
=
createAsyncMetaThunk
(
"
duel/fetchMagicMeta
"
);
"
duel/fetchMagicMeta
"
,
);
export
const
magicCase
=
(
builder
:
ActionReducerMapBuilder
<
DuelState
>
)
=>
{
export
const
magicCase
=
(
builder
:
ActionReducerMapBuilder
<
DuelState
>
)
=>
{
builder
.
addCase
(
fetchMagicMeta
.
pending
,
(
state
,
action
)
=>
{
builder
.
addCase
(
fetchMagicMeta
.
pending
,
(
state
,
action
)
=>
{
...
@@ -127,23 +126,9 @@ export const magicCase = (builder: ActionReducerMapBuilder<DuelState>) => {
...
@@ -127,23 +126,9 @@ export const magicCase = (builder: ActionReducerMapBuilder<DuelState>) => {
const
meta
=
{
id
:
code
,
data
:
{},
text
:
{}
};
const
meta
=
{
id
:
code
,
data
:
{},
text
:
{}
};
if
(
judgeSelf
(
controler
,
state
))
{
if
(
judgeSelf
(
controler
,
state
))
{
if
(
state
.
meMagics
)
{
extendOccupant
(
state
.
meMagics
,
meta
,
sequence
,
position
);
for
(
const
magic
of
state
.
meMagics
.
magics
)
{
if
(
magic
.
location
.
sequence
==
sequence
)
{
magic
.
occupant
=
meta
;
magic
.
location
.
position
=
position
;
}
}
}
}
else
{
}
else
{
if
(
state
.
opMagics
)
{
extendOccupant
(
state
.
opMagics
,
meta
,
sequence
,
position
);
for
(
const
magic
of
state
.
opMagics
.
magics
)
{
if
(
magic
.
location
.
sequence
==
sequence
)
{
magic
.
occupant
=
meta
;
magic
.
location
.
position
=
position
;
}
}
}
}
}
});
});
builder
.
addCase
(
fetchMagicMeta
.
fulfilled
,
(
state
,
action
)
=>
{
builder
.
addCase
(
fetchMagicMeta
.
fulfilled
,
(
state
,
action
)
=>
{
...
@@ -152,26 +137,14 @@ export const magicCase = (builder: ActionReducerMapBuilder<DuelState>) => {
...
@@ -152,26 +137,14 @@ export const magicCase = (builder: ActionReducerMapBuilder<DuelState>) => {
const
meta
=
action
.
payload
.
meta
;
const
meta
=
action
.
payload
.
meta
;
if
(
judgeSelf
(
controler
,
state
))
{
if
(
judgeSelf
(
controler
,
state
))
{
if
(
state
.
meMagics
)
{
extendOccupant
(
state
.
meMagics
,
meta
,
sequence
);
for
(
const
magic
of
state
.
meMagics
.
magics
)
{
if
(
magic
.
location
.
sequence
==
sequence
)
{
magic
.
occupant
=
meta
;
}
}
}
}
else
{
}
else
{
if
(
state
.
opMagics
)
{
extendOccupant
(
state
.
opMagics
,
meta
,
sequence
);
for
(
const
magic
of
state
.
opMagics
.
magics
)
{
if
(
magic
.
location
.
sequence
==
sequence
)
{
magic
.
occupant
=
meta
;
}
}
}
}
}
});
});
};
};
export
const
selectMeMagics
=
(
state
:
RootState
)
=>
export
const
selectMeMagics
=
(
state
:
RootState
)
=>
state
.
duel
.
meMagics
||
{
magics
:
[]
};
state
.
duel
.
meMagics
||
{
inner
:
[]
};
export
const
selectOpMagics
=
(
state
:
RootState
)
=>
export
const
selectOpMagics
=
(
state
:
RootState
)
=>
state
.
duel
.
opMagics
||
{
magics
:
[]
};
state
.
duel
.
opMagics
||
{
inner
:
[]
};
src/reducers/duel/monstersSlice.ts
View file @
0e175d8e
...
@@ -7,11 +7,14 @@ import {
...
@@ -7,11 +7,14 @@ import {
import
{
DuelState
}
from
"
./mod
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
CardState
,
InteractType
,
createAsyncMetaThunk
}
from
"
./generic
"
;
import
{
DuelFieldState
,
InteractType
,
createAsyncMetaThunk
,
extendOccupant
,
}
from
"
./generic
"
;
export
interface
MonsterState
{
export
interface
MonsterState
extends
DuelFieldState
{}
monsters
:
CardState
[];
}
// 初始化怪兽区状态
// 初始化怪兽区状态
export
const
initMonstersImpl
:
CaseReducer
<
DuelState
,
PayloadAction
<
number
>>
=
(
export
const
initMonstersImpl
:
CaseReducer
<
DuelState
,
PayloadAction
<
number
>>
=
(
...
@@ -20,7 +23,7 @@ export const initMonstersImpl: CaseReducer<DuelState, PayloadAction<number>> = (
...
@@ -20,7 +23,7 @@ export const initMonstersImpl: CaseReducer<DuelState, PayloadAction<number>> = (
)
=>
{
)
=>
{
const
player
=
action
.
payload
;
const
player
=
action
.
payload
;
const
monsters
=
{
const
monsters
=
{
monsters
:
[
inner
:
[
{
{
location
:
{
location
:
{
controler
:
player
,
controler
:
player
,
...
@@ -82,7 +85,7 @@ export const addMonsterPlaceInteractivitiesImpl: CaseReducer<
...
@@ -82,7 +85,7 @@ export const addMonsterPlaceInteractivitiesImpl: CaseReducer<
?
state
.
meMonsters
?
state
.
meMonsters
:
state
.
opMonsters
;
:
state
.
opMonsters
;
if
(
monsters
)
{
if
(
monsters
)
{
for
(
const
monster
of
monsters
.
monsters
)
{
for
(
const
monster
of
monsters
.
inner
)
{
if
(
monster
.
location
.
sequence
==
sequence
)
{
if
(
monster
.
location
.
sequence
==
sequence
)
{
monster
.
placeInteractivities
=
{
monster
.
placeInteractivities
=
{
interactType
:
InteractType
.
PLACE_SELECTABLE
,
interactType
:
InteractType
.
PLACE_SELECTABLE
,
...
@@ -108,7 +111,7 @@ export const clearMonsterPlaceInteractivitiesImpl: CaseReducer<
...
@@ -108,7 +111,7 @@ export const clearMonsterPlaceInteractivitiesImpl: CaseReducer<
:
state
.
opMonsters
;
:
state
.
opMonsters
;
if
(
monsters
)
{
if
(
monsters
)
{
for
(
const
monster
of
monsters
.
monsters
)
{
for
(
const
monster
of
monsters
.
inner
)
{
monster
.
placeInteractivities
=
undefined
;
monster
.
placeInteractivities
=
undefined
;
}
}
}
}
...
@@ -127,23 +130,9 @@ export const monsterCase = (builder: ActionReducerMapBuilder<DuelState>) => {
...
@@ -127,23 +130,9 @@ export const monsterCase = (builder: ActionReducerMapBuilder<DuelState>) => {
const
meta
=
{
id
:
code
,
data
:
{},
text
:
{}
};
const
meta
=
{
id
:
code
,
data
:
{},
text
:
{}
};
if
(
judgeSelf
(
controler
,
state
))
{
if
(
judgeSelf
(
controler
,
state
))
{
if
(
state
.
meMonsters
)
{
extendOccupant
(
state
.
meMonsters
,
meta
,
sequence
,
position
);
for
(
const
monster
of
state
.
meMonsters
.
monsters
)
{
if
(
monster
.
location
.
sequence
==
sequence
)
{
monster
.
occupant
=
meta
;
monster
.
location
.
position
=
position
;
}
}
}
}
else
{
}
else
{
if
(
state
.
opMonsters
)
{
extendOccupant
(
state
.
opMonsters
,
meta
,
sequence
,
position
);
for
(
const
monster
of
state
.
opMonsters
.
monsters
)
{
if
(
monster
.
location
.
sequence
==
sequence
)
{
monster
.
occupant
=
meta
;
monster
.
location
.
position
=
position
;
}
}
}
}
}
});
});
builder
.
addCase
(
fetchMonsterMeta
.
fulfilled
,
(
state
,
action
)
=>
{
builder
.
addCase
(
fetchMonsterMeta
.
fulfilled
,
(
state
,
action
)
=>
{
...
@@ -152,26 +141,14 @@ export const monsterCase = (builder: ActionReducerMapBuilder<DuelState>) => {
...
@@ -152,26 +141,14 @@ export const monsterCase = (builder: ActionReducerMapBuilder<DuelState>) => {
const
meta
=
action
.
payload
.
meta
;
const
meta
=
action
.
payload
.
meta
;
if
(
judgeSelf
(
controler
,
state
))
{
if
(
judgeSelf
(
controler
,
state
))
{
if
(
state
.
meMonsters
)
{
extendOccupant
(
state
.
meMonsters
,
meta
,
sequence
);
for
(
const
monster
of
state
.
meMonsters
.
monsters
)
{
if
(
monster
.
location
.
sequence
==
sequence
)
{
monster
.
occupant
=
meta
;
}
}
}
}
else
{
}
else
{
if
(
state
.
opMonsters
)
{
extendOccupant
(
state
.
opMonsters
,
meta
,
sequence
);
for
(
const
monster
of
state
.
opMonsters
.
monsters
)
{
if
(
monster
.
location
.
sequence
==
sequence
)
{
monster
.
occupant
=
meta
;
}
}
}
}
}
});
});
};
};
export
const
selectMeMonsters
=
(
state
:
RootState
)
=>
export
const
selectMeMonsters
=
(
state
:
RootState
)
=>
state
.
duel
.
meMonsters
||
{
monsters
:
[]
};
state
.
duel
.
meMonsters
||
{
inner
:
[]
};
export
const
selectOpMonsters
=
(
state
:
RootState
)
=>
export
const
selectOpMonsters
=
(
state
:
RootState
)
=>
state
.
duel
.
opMonsters
||
{
monsters
:
[]
};
state
.
duel
.
opMonsters
||
{
inner
:
[]
};
src/ui/Duel/cemetery.tsx
View file @
0e175d8e
...
@@ -18,8 +18,8 @@ const shape = CONFIG.CemeterySlotShape();
...
@@ -18,8 +18,8 @@ const shape = CONFIG.CemeterySlotShape();
const
depth
=
0.02
;
const
depth
=
0.02
;
const
Cemeteries
=
()
=>
{
const
Cemeteries
=
()
=>
{
const
meCemetery
=
useAppSelector
(
selectMeCemetery
).
cemetery
;
const
meCemetery
=
useAppSelector
(
selectMeCemetery
).
inner
;
const
opCemetery
=
useAppSelector
(
selectOpCemetery
).
cemetery
;
const
opCemetery
=
useAppSelector
(
selectOpCemetery
).
inner
;
return
(
return
(
<>
<>
...
...
src/ui/Duel/magics.tsx
View file @
0e175d8e
...
@@ -22,9 +22,9 @@ const gap = 1.05;
...
@@ -22,9 +22,9 @@ const gap = 1.05;
const
shape
=
CONFIG
.
CardSlotShape
();
const
shape
=
CONFIG
.
CardSlotShape
();
const
Magics
=
()
=>
{
const
Magics
=
()
=>
{
const
meMagics
=
useAppSelector
(
selectMeMagics
).
magics
;
const
meMagics
=
useAppSelector
(
selectMeMagics
).
inner
;
const
meMagicPositions
=
magicPositions
(
0
,
meMagics
);
const
meMagicPositions
=
magicPositions
(
0
,
meMagics
);
const
opMagics
=
useAppSelector
(
selectOpMagics
).
magics
;
const
opMagics
=
useAppSelector
(
selectOpMagics
).
inner
;
const
opMagicPositions
=
magicPositions
(
1
,
opMagics
);
const
opMagicPositions
=
magicPositions
(
1
,
opMagics
);
return
(
return
(
...
...
src/ui/Duel/monsters.tsx
View file @
0e175d8e
...
@@ -26,9 +26,9 @@ const left = -2.15; // TODO: config
...
@@ -26,9 +26,9 @@ const left = -2.15; // TODO: config
const
gap
=
1.05
;
const
gap
=
1.05
;
const
Monsters
=
()
=>
{
const
Monsters
=
()
=>
{
const
meMonsters
=
useAppSelector
(
selectMeMonsters
).
monsters
;
const
meMonsters
=
useAppSelector
(
selectMeMonsters
).
inner
;
const
meMonsterPositions
=
monsterPositions
(
0
,
meMonsters
);
const
meMonsterPositions
=
monsterPositions
(
0
,
meMonsters
);
const
opMonsters
=
useAppSelector
(
selectOpMonsters
).
monsters
;
const
opMonsters
=
useAppSelector
(
selectOpMonsters
).
inner
;
const
opMonsterPositions
=
monsterPositions
(
1
,
opMonsters
);
const
opMonsterPositions
=
monsterPositions
(
1
,
opMonsters
);
return
(
return
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment