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
390c9585
Commit
390c9585
authored
Jan 23, 2023
by
Chunchi Che
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update extraDeck slice
parent
ae30741c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
96 additions
and
2 deletions
+96
-2
src/reducers/duel/commonSlice.ts
src/reducers/duel/commonSlice.ts
+2
-0
src/reducers/duel/extraDeckSlice.ts
src/reducers/duel/extraDeckSlice.ts
+82
-1
src/reducers/duel/mod.ts
src/reducers/duel/mod.ts
+12
-1
No files found.
src/reducers/duel/commonSlice.ts
View file @
390c9585
...
...
@@ -18,6 +18,7 @@ export const clearAllIdleInteractivitiesImpl: DuelReducer<number> = (
state
.
meMagics
,
state
.
meCemetery
,
state
.
meExclusion
,
state
.
meExtraDeck
,
]
:
[
state
.
opHands
,
...
...
@@ -25,6 +26,7 @@ export const clearAllIdleInteractivitiesImpl: DuelReducer<number> = (
state
.
opMagics
,
state
.
opCemetery
,
state
.
opExclusion
,
state
.
opExtraDeck
,
];
states
.
forEach
((
item
)
=>
clearIdleInteractivities
(
item
));
...
...
src/reducers/duel/extraDeckSlice.ts
View file @
390c9585
import
{
ActionReducerMapBuilder
}
from
"
@reduxjs/toolkit
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
createAsyncRepeatedMetaThunk
,
DuelFieldState
}
from
"
./generic
"
;
import
{
createAsyncMetaThunk
,
createAsyncRepeatedMetaThunk
,
DuelFieldState
,
DuelReducer
,
extendIdleInteractivities
,
extendMeta
,
extendState
,
Interactivity
,
removeCard
,
updateCardMeta
,
}
from
"
./generic
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
judgeSelf
}
from
"
./util
"
;
...
...
@@ -12,6 +23,11 @@ export const initExtraDeckMeta = createAsyncRepeatedMetaThunk(
"
duel/initExtraDeckMeta
"
);
// 增加额外卡组
export
const
fetchExtraDeckMeta
=
createAsyncMetaThunk
(
"
duel/fetchExtraDeckMeta
"
);
export
const
extraDeckCase
=
(
builder
:
ActionReducerMapBuilder
<
DuelState
>
)
=>
{
builder
.
addCase
(
initExtraDeckMeta
.
pending
,
(
state
,
action
)
=>
{
const
player
=
action
.
meta
.
arg
.
controler
;
...
...
@@ -33,6 +49,71 @@ export const extraDeckCase = (builder: ActionReducerMapBuilder<DuelState>) => {
state
.
opExtraDeck
=
{
inner
:
cards
};
}
});
builder
.
addCase
(
initExtraDeckMeta
.
fulfilled
,
(
state
,
action
)
=>
{
const
player
=
action
.
payload
.
controler
;
const
metas
=
action
.
payload
.
metas
;
const
extraDeck
=
judgeSelf
(
player
,
state
)
?
state
.
meExtraDeck
:
state
.
opExtraDeck
;
updateCardMeta
(
extraDeck
,
metas
);
});
builder
.
addCase
(
fetchExtraDeckMeta
.
pending
,
(
state
,
action
)
=>
{
const
controler
=
action
.
meta
.
arg
.
controler
;
const
sequence
=
action
.
meta
.
arg
.
sequence
;
const
code
=
action
.
meta
.
arg
.
code
;
const
newExtraDeck
=
{
occupant
:
{
id
:
code
,
data
:
{},
text
:
{}
},
location
:
{
controler
,
location
:
ygopro
.
CardZone
.
EXTRA
,
sequence
,
},
idleInteractivities
:
[],
};
const
extraDeck
=
judgeSelf
(
controler
,
state
)
?
state
.
meExtraDeck
:
state
.
opExtraDeck
;
extendState
(
extraDeck
,
newExtraDeck
);
});
builder
.
addCase
(
fetchExtraDeckMeta
.
fulfilled
,
(
state
,
action
)
=>
{
const
controler
=
action
.
payload
.
controler
;
const
sequence
=
action
.
payload
.
sequence
;
const
meta
=
action
.
payload
.
meta
;
const
extraDeck
=
judgeSelf
(
controler
,
state
)
?
state
.
meExtraDeck
:
state
.
opExtraDeck
;
extendMeta
(
extraDeck
,
meta
,
sequence
);
});
};
// 删除额外卡组
export
const
removeExtraDeckImpl
:
DuelReducer
<
{
controler
:
number
;
sequence
:
number
;
}
>
=
(
state
,
action
)
=>
{
const
extraDeck
=
judgeSelf
(
action
.
payload
.
controler
,
state
)
?
state
.
meExtraDeck
:
state
.
opExtraDeck
;
removeCard
(
extraDeck
,
action
.
payload
.
sequence
);
};
export
const
addExtraDeckIdleInteractivitiesImpl
:
DuelReducer
<
{
player
:
number
;
sequence
:
number
;
interactivy
:
Interactivity
<
number
>
;
}
>
=
(
state
,
action
)
=>
{
const
extraDeck
=
judgeSelf
(
action
.
payload
.
player
,
state
)
?
state
.
meExtraDeck
:
state
.
opExtraDeck
;
extendIdleInteractivities
(
extraDeck
,
action
.
payload
.
sequence
,
action
.
payload
.
interactivy
);
};
export
const
selectMeExtraDeck
=
(
state
:
RootState
)
=>
...
...
src/reducers/duel/mod.ts
View file @
390c9585
...
...
@@ -95,7 +95,12 @@ import {
clearAllIdleInteractivitiesImpl
,
clearAllPlaceInteractivitiesImpl
,
}
from
"
./commonSlice
"
;
import
{
ExtraDeckState
,
extraDeckCase
}
from
"
./extraDeckSlice
"
;
import
{
ExtraDeckState
,
extraDeckCase
,
removeExtraDeckImpl
,
addExtraDeckIdleInteractivitiesImpl
,
}
from
"
./extraDeckSlice
"
;
export
interface
DuelState
{
selfType
?:
number
;
...
...
@@ -203,6 +208,10 @@ const duelSlice = createSlice({
// 卡组相关`Reducer`
initDeck
:
initDeckImpl
,
// 额外卡组相关`Reducer`
removeExtraDeck
:
removeExtraDeckImpl
,
addExtraDeckIdleInteractivities
:
addExtraDeckIdleInteractivitiesImpl
,
// 阶段相关
updatePhase
:
newPhaseImpl
,
setEnableBp
:
setEnableBpImpl
,
...
...
@@ -302,6 +311,8 @@ export const {
setOptionModalIsOpen
,
resetOptionModal
,
initDeck
,
removeExtraDeck
,
addExtraDeckIdleInteractivities
,
initExclusion
,
removeExclusion
,
addExclusionIdleInteractivities
,
...
...
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