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
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
2
Merge Requests
2
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
MyCard
Neos
Commits
359b0289
Commit
359b0289
authored
Apr 02, 2023
by
Chunchi Che
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feat/hint' into 'main'
Feat/hint See merge request
mycard/Neos!162
parents
7350658f
c39108a1
Pipeline
#21084
passed with stages
in 43 minutes and 24 seconds
Changes
7
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
40 additions
and
21 deletions
+40
-21
src/api/strings.ts
src/api/strings.ts
+1
-1
src/reducers/duel/hintSlice.ts
src/reducers/duel/hintSlice.ts
+26
-15
src/service/duel/hint.ts
src/service/duel/hint.ts
+2
-2
src/service/duel/selectChain.ts
src/service/duel/selectChain.ts
+2
-0
src/ui/Duel/checkCardModal.tsx
src/ui/Duel/checkCardModal.tsx
+3
-1
src/ui/Duel/checkCardModalV2.tsx
src/ui/Duel/checkCardModalV2.tsx
+3
-1
src/ui/Duel/checkCardModalV3.tsx
src/ui/Duel/checkCardModalV3.tsx
+3
-1
No files found.
src/api/strings.ts
View file @
359b0289
...
...
@@ -2,7 +2,7 @@ import axios from "axios";
import
NeosConfig
from
"
../../neos.config.json
"
;
import
{
getCardStr
,
fetchCard
}
from
"
./cards
"
;
const
DESCRIPTION_LIMIT
=
10000
;
export
const
DESCRIPTION_LIMIT
=
10000
;
export
async
function
initStrings
()
{
const
strings
=
(
await
axios
.
get
<
string
>
(
NeosConfig
.
stringsUrl
)).
data
;
...
...
src/reducers/duel/hintSlice.ts
View file @
359b0289
import
{
createAsyncThunk
,
ActionReducerMapBuilder
}
from
"
@reduxjs/toolkit
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
fetchStrings
}
from
"
../../api/strings
"
;
import
{
fetchCard
}
from
"
../../api/cards
"
;
import
{
DESCRIPTION_LIMIT
,
fetchStrings
,
getStrings
}
from
"
../../api/strings
"
;
import
{
judgeSelf
}
from
"
./util
"
;
import
{
fetchCard
}
from
"
../../api/cards
"
;
export
interface
HintState
{
code
:
number
;
msg
?:
string
;
esSelectHint
?:
string
;
}
export
const
fetchCommonHintMeta
=
createAsyncThunk
(
...
...
@@ -23,15 +24,25 @@ export const fetchCommonHintMeta = createAsyncThunk(
}
);
export
const
fetchSelect
Place
HintMeta
=
createAsyncThunk
(
"
duel/fetchSelect
Place
HintMeta
"
,
export
const
fetchSelectHintMeta
=
createAsyncThunk
(
"
duel/fetchSelectHintMeta
"
,
async
(
param
:
[
number
,
number
])
=>
{
const
player
=
param
[
0
];
const
hintData
=
param
[
1
];
const
hintMeta
=
(
await
fetchCard
(
hintData
,
true
)).
text
.
name
||
"
[?]
"
;
const
response
:
[
number
,
string
]
=
[
player
,
hintMeta
];
let
hintMeta
=
""
;
if
(
hintData
>
DESCRIPTION_LIMIT
)
{
// 针对`MSG_SELECT_PLACE`的特化逻辑
const
cardMeta
=
await
fetchCard
(
hintData
,
true
);
hintMeta
=
fetchStrings
(
"
!system
"
,
569
).
replace
(
"
[%ls]
"
,
cardMeta
.
text
.
name
||
"
[?]
"
);
}
else
{
hintMeta
=
await
getStrings
(
hintData
);
}
const
response
:
[
number
,
string
]
=
[
player
,
hintMeta
];
return
response
;
}
);
...
...
@@ -57,7 +68,7 @@ export const hintCase = (builder: ActionReducerMapBuilder<DuelState>) => {
}
});
builder
.
addCase
(
fetchSelect
Place
HintMeta
.
pending
,
(
state
,
action
)
=>
{
builder
.
addCase
(
fetchSelectHintMeta
.
pending
,
(
state
,
action
)
=>
{
const
player
=
action
.
meta
.
arg
[
0
];
const
code
=
action
.
meta
.
arg
[
1
];
...
...
@@ -67,18 +78,18 @@ export const hintCase = (builder: ActionReducerMapBuilder<DuelState>) => {
state
.
opHint
=
{
code
};
}
});
builder
.
addCase
(
fetchSelect
Place
HintMeta
.
fulfilled
,
(
state
,
action
)
=>
{
builder
.
addCase
(
fetchSelectHintMeta
.
fulfilled
,
(
state
,
action
)
=>
{
const
player
=
action
.
payload
[
0
];
const
hintMeta
=
action
.
payload
[
1
];
// TODO: 国际化文案
const
hintMsg
=
judgeSelf
(
player
,
state
)
?
`请为我方的<
${
hintMeta
}
>选择位置`
:
`请为对方的<
${
hintMeta
}
>选择位置`
;
let
hintMsg
=
action
.
payload
[
1
];
const
hint
=
judgeSelf
(
player
,
state
)
?
state
.
meHint
:
state
.
opHint
;
if
(
hint
)
{
hint
.
msg
=
hintMsg
;
if
(
hint
.
code
>
DESCRIPTION_LIMIT
)
{
// 针对`MSG_SELECT_PLACE`的特化逻辑
hint
.
msg
=
hintMsg
;
}
else
{
hint
.
esSelectHint
=
hintMsg
;
}
}
});
};
...
...
src/service/duel/hint.ts
View file @
359b0289
...
...
@@ -2,7 +2,7 @@ import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import
{
AppDispatch
}
from
"
../../store
"
;
import
{
fetchCommonHintMeta
,
fetchSelect
Place
HintMeta
,
fetchSelectHintMeta
,
}
from
"
../../reducers/duel/hintSlice
"
;
import
MsgHint
=
ygopro
.
StocGameMessage
.
MsgHint
;
...
...
@@ -15,7 +15,7 @@ export default (hint: MsgHint, dispatch: AppDispatch) => {
break
;
}
case
MsgHint
.
HintType
.
HINT_SELECTMSG
:
{
dispatch
(
fetchSelect
Place
HintMeta
([
player
,
hint
.
hint_data
]));
dispatch
(
fetchSelectHintMeta
([
player
,
hint
.
hint_data
]));
break
;
}
default
:
{
...
...
src/service/duel/selectChain.ts
View file @
359b0289
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
sendSelectChainResponse
}
from
"
../../api/ocgcore/ocgHelper
"
;
import
{
fetchSelectHintMeta
}
from
"
../../reducers/duel/hintSlice
"
;
import
{
setCheckCardMOdalCancelAble
,
setCheckCardModalCancelResponse
,
...
...
@@ -83,6 +84,7 @@ export default (selectChain: MsgSelectChain, dispatch: AppDispatch) => {
})
);
}
dispatch
(
fetchSelectHintMeta
([
player
,
203
]));
dispatch
(
setCheckCardModalIsOpen
(
true
));
...
...
src/ui/Duel/checkCardModal.tsx
View file @
359b0289
...
...
@@ -22,6 +22,7 @@ import {
import
{
ThunderboltOutlined
}
from
"
@ant-design/icons
"
;
import
NeosConfig
from
"
../../../neos.config.json
"
;
import
DragModal
from
"
./dragModal
"
;
import
{
selectMeHint
}
from
"
../../reducers/duel/hintSlice
"
;
const
CheckCardModal
=
()
=>
{
const
dispatch
=
store
.
dispatch
;
...
...
@@ -33,6 +34,7 @@ const CheckCardModal = () => {
const
cancelResponse
=
useAppSelector
(
selectCheckCardModalCacnelResponse
);
const
[
response
,
setResponse
]
=
useState
<
number
[]
>
([]);
const
defaultValue
:
number
[]
=
[];
const
selectHint
=
useAppSelector
(
selectMeHint
)?.
esSelectHint
||
"
请选择卡片
"
;
// TODO: 这里可以考虑更好地封装
const
sendResponseHandler
=
(
...
...
@@ -55,7 +57,7 @@ const CheckCardModal = () => {
return
(
<
DragModal
title=
{
`
请选择${min}到${max}张卡片
`
}
title=
{
`
${selectHint} ${min}-${max}
`
}
open=
{
isOpen
}
closable=
{
false
}
footer=
{
...
...
src/ui/Duel/checkCardModalV2.tsx
View file @
359b0289
...
...
@@ -20,6 +20,7 @@ import {
}
from
"
../../reducers/duel/mod
"
;
import
NeosConfig
from
"
../../../neos.config.json
"
;
import
DragModal
from
"
./dragModal
"
;
import
{
selectMeHint
}
from
"
../../reducers/duel/hintSlice
"
;
const
CheckCardModalV2
=
()
=>
{
const
dispatch
=
store
.
dispatch
;
...
...
@@ -32,6 +33,7 @@ const CheckCardModalV2 = () => {
);
const
selectedOptions
=
useAppSelector
(
selectCheckCardModalV2SelectedOptions
);
const
responseable
=
useAppSelector
(
selectCheckCardModalV2ResponseAble
);
const
selectHint
=
useAppSelector
(
selectMeHint
)?.
esSelectHint
||
"
请选择卡片
"
;
const
onFinish
=
()
=>
{
sendSelectUnselectCardResponse
({
cancel_or_finish
:
true
});
...
...
@@ -46,7 +48,7 @@ const CheckCardModalV2 = () => {
return
(
<
DragModal
title=
{
`
请选择未选择的卡片,最少${min}张,最多${max}张
`
}
title=
{
`
${selectHint} ${min}-${max}
`
}
open=
{
isOpen
}
closable=
{
false
}
footer=
{
...
...
src/ui/Duel/checkCardModalV3.tsx
View file @
359b0289
...
...
@@ -12,6 +12,7 @@ import {
import
NeosConfig
from
"
../../../neos.config.json
"
;
import
{
selectCheckCardModalV3
}
from
"
../../reducers/duel/modal/checkCardModalV3Slice
"
;
import
DragModal
from
"
./dragModal
"
;
import
{
selectMeHint
}
from
"
../../reducers/duel/hintSlice
"
;
const
CheckCardModalV3
=
()
=>
{
const
dispatch
=
store
.
dispatch
;
...
...
@@ -32,6 +33,7 @@ const CheckCardModalV3 = () => {
.
concat
(
selectedOptions
)
.
map
((
option
)
=>
option
.
level2
)
.
reduce
((
sum
,
current
)
=>
sum
+
current
,
0
);
const
selectHint
=
useAppSelector
(
selectMeHint
)?.
esSelectHint
||
"
请选择卡片
"
;
const
responseable
=
(
overflow
...
...
@@ -50,7 +52,7 @@ const CheckCardModalV3 = () => {
return
(
<
DragModal
title=
{
`
请选择卡片,最少${min}张,最多${max}张
`
}
title=
{
`
${selectHint} ${min}-${max}
`
}
open=
{
isOpen
}
closable=
{
false
}
footer=
{
...
...
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