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
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
Changes
7
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";
...
@@ -2,7 +2,7 @@ import axios from "axios";
import
NeosConfig
from
"
../../neos.config.json
"
;
import
NeosConfig
from
"
../../neos.config.json
"
;
import
{
getCardStr
,
fetchCard
}
from
"
./cards
"
;
import
{
getCardStr
,
fetchCard
}
from
"
./cards
"
;
const
DESCRIPTION_LIMIT
=
10000
;
export
const
DESCRIPTION_LIMIT
=
10000
;
export
async
function
initStrings
()
{
export
async
function
initStrings
()
{
const
strings
=
(
await
axios
.
get
<
string
>
(
NeosConfig
.
stringsUrl
)).
data
;
const
strings
=
(
await
axios
.
get
<
string
>
(
NeosConfig
.
stringsUrl
)).
data
;
...
...
src/reducers/duel/hintSlice.ts
View file @
359b0289
import
{
createAsyncThunk
,
ActionReducerMapBuilder
}
from
"
@reduxjs/toolkit
"
;
import
{
createAsyncThunk
,
ActionReducerMapBuilder
}
from
"
@reduxjs/toolkit
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
fetchStrings
}
from
"
../../api/strings
"
;
import
{
DESCRIPTION_LIMIT
,
fetchStrings
,
getStrings
}
from
"
../../api/strings
"
;
import
{
fetchCard
}
from
"
../../api/cards
"
;
import
{
judgeSelf
}
from
"
./util
"
;
import
{
judgeSelf
}
from
"
./util
"
;
import
{
fetchCard
}
from
"
../../api/cards
"
;
export
interface
HintState
{
export
interface
HintState
{
code
:
number
;
code
:
number
;
msg
?:
string
;
msg
?:
string
;
esSelectHint
?:
string
;
}
}
export
const
fetchCommonHintMeta
=
createAsyncThunk
(
export
const
fetchCommonHintMeta
=
createAsyncThunk
(
...
@@ -23,15 +24,25 @@ export const fetchCommonHintMeta = createAsyncThunk(
...
@@ -23,15 +24,25 @@ export const fetchCommonHintMeta = createAsyncThunk(
}
}
);
);
export
const
fetchSelect
Place
HintMeta
=
createAsyncThunk
(
export
const
fetchSelectHintMeta
=
createAsyncThunk
(
"
duel/fetchSelect
Place
HintMeta
"
,
"
duel/fetchSelectHintMeta
"
,
async
(
param
:
[
number
,
number
])
=>
{
async
(
param
:
[
number
,
number
])
=>
{
const
player
=
param
[
0
];
const
player
=
param
[
0
];
const
hintData
=
param
[
1
];
const
hintData
=
param
[
1
];
const
hintMeta
=
(
await
fetchCard
(
hintData
,
true
)).
text
.
name
||
"
[?]
"
;
let
hintMeta
=
""
;
const
response
:
[
number
,
string
]
=
[
player
,
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
;
return
response
;
}
}
);
);
...
@@ -57,7 +68,7 @@ export const hintCase = (builder: ActionReducerMapBuilder<DuelState>) => {
...
@@ -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
player
=
action
.
meta
.
arg
[
0
];
const
code
=
action
.
meta
.
arg
[
1
];
const
code
=
action
.
meta
.
arg
[
1
];
...
@@ -67,18 +78,18 @@ export const hintCase = (builder: ActionReducerMapBuilder<DuelState>) => {
...
@@ -67,18 +78,18 @@ export const hintCase = (builder: ActionReducerMapBuilder<DuelState>) => {
state
.
opHint
=
{
code
};
state
.
opHint
=
{
code
};
}
}
});
});
builder
.
addCase
(
fetchSelect
Place
HintMeta
.
fulfilled
,
(
state
,
action
)
=>
{
builder
.
addCase
(
fetchSelectHintMeta
.
fulfilled
,
(
state
,
action
)
=>
{
const
player
=
action
.
payload
[
0
];
const
player
=
action
.
payload
[
0
];
const
hintMeta
=
action
.
payload
[
1
];
let
hintMsg
=
action
.
payload
[
1
];
// TODO: 国际化文案
const
hintMsg
=
judgeSelf
(
player
,
state
)
?
`请为我方的<
${
hintMeta
}
>选择位置`
:
`请为对方的<
${
hintMeta
}
>选择位置`
;
const
hint
=
judgeSelf
(
player
,
state
)
?
state
.
meHint
:
state
.
opHint
;
const
hint
=
judgeSelf
(
player
,
state
)
?
state
.
meHint
:
state
.
opHint
;
if
(
hint
)
{
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";
...
@@ -2,7 +2,7 @@ import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import
{
AppDispatch
}
from
"
../../store
"
;
import
{
AppDispatch
}
from
"
../../store
"
;
import
{
import
{
fetchCommonHintMeta
,
fetchCommonHintMeta
,
fetchSelect
Place
HintMeta
,
fetchSelectHintMeta
,
}
from
"
../../reducers/duel/hintSlice
"
;
}
from
"
../../reducers/duel/hintSlice
"
;
import
MsgHint
=
ygopro
.
StocGameMessage
.
MsgHint
;
import
MsgHint
=
ygopro
.
StocGameMessage
.
MsgHint
;
...
@@ -15,7 +15,7 @@ export default (hint: MsgHint, dispatch: AppDispatch) => {
...
@@ -15,7 +15,7 @@ export default (hint: MsgHint, dispatch: AppDispatch) => {
break
;
break
;
}
}
case
MsgHint
.
HintType
.
HINT_SELECTMSG
:
{
case
MsgHint
.
HintType
.
HINT_SELECTMSG
:
{
dispatch
(
fetchSelect
Place
HintMeta
([
player
,
hint
.
hint_data
]));
dispatch
(
fetchSelectHintMeta
([
player
,
hint
.
hint_data
]));
break
;
break
;
}
}
default
:
{
default
:
{
...
...
src/service/duel/selectChain.ts
View file @
359b0289
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
sendSelectChainResponse
}
from
"
../../api/ocgcore/ocgHelper
"
;
import
{
sendSelectChainResponse
}
from
"
../../api/ocgcore/ocgHelper
"
;
import
{
fetchSelectHintMeta
}
from
"
../../reducers/duel/hintSlice
"
;
import
{
import
{
setCheckCardMOdalCancelAble
,
setCheckCardMOdalCancelAble
,
setCheckCardModalCancelResponse
,
setCheckCardModalCancelResponse
,
...
@@ -83,6 +84,7 @@ export default (selectChain: MsgSelectChain, dispatch: AppDispatch) => {
...
@@ -83,6 +84,7 @@ export default (selectChain: MsgSelectChain, dispatch: AppDispatch) => {
})
})
);
);
}
}
dispatch
(
fetchSelectHintMeta
([
player
,
203
]));
dispatch
(
setCheckCardModalIsOpen
(
true
));
dispatch
(
setCheckCardModalIsOpen
(
true
));
...
...
src/ui/Duel/checkCardModal.tsx
View file @
359b0289
...
@@ -22,6 +22,7 @@ import {
...
@@ -22,6 +22,7 @@ import {
import
{
ThunderboltOutlined
}
from
"
@ant-design/icons
"
;
import
{
ThunderboltOutlined
}
from
"
@ant-design/icons
"
;
import
NeosConfig
from
"
../../../neos.config.json
"
;
import
NeosConfig
from
"
../../../neos.config.json
"
;
import
DragModal
from
"
./dragModal
"
;
import
DragModal
from
"
./dragModal
"
;
import
{
selectMeHint
}
from
"
../../reducers/duel/hintSlice
"
;
const
CheckCardModal
=
()
=>
{
const
CheckCardModal
=
()
=>
{
const
dispatch
=
store
.
dispatch
;
const
dispatch
=
store
.
dispatch
;
...
@@ -33,6 +34,7 @@ const CheckCardModal = () => {
...
@@ -33,6 +34,7 @@ const CheckCardModal = () => {
const
cancelResponse
=
useAppSelector
(
selectCheckCardModalCacnelResponse
);
const
cancelResponse
=
useAppSelector
(
selectCheckCardModalCacnelResponse
);
const
[
response
,
setResponse
]
=
useState
<
number
[]
>
([]);
const
[
response
,
setResponse
]
=
useState
<
number
[]
>
([]);
const
defaultValue
:
number
[]
=
[];
const
defaultValue
:
number
[]
=
[];
const
selectHint
=
useAppSelector
(
selectMeHint
)?.
esSelectHint
||
"
请选择卡片
"
;
// TODO: 这里可以考虑更好地封装
// TODO: 这里可以考虑更好地封装
const
sendResponseHandler
=
(
const
sendResponseHandler
=
(
...
@@ -55,7 +57,7 @@ const CheckCardModal = () => {
...
@@ -55,7 +57,7 @@ const CheckCardModal = () => {
return
(
return
(
<
DragModal
<
DragModal
title=
{
`
请选择${min}到${max}张卡片
`
}
title=
{
`
${selectHint} ${min}-${max}
`
}
open=
{
isOpen
}
open=
{
isOpen
}
closable=
{
false
}
closable=
{
false
}
footer=
{
footer=
{
...
...
src/ui/Duel/checkCardModalV2.tsx
View file @
359b0289
...
@@ -20,6 +20,7 @@ import {
...
@@ -20,6 +20,7 @@ import {
}
from
"
../../reducers/duel/mod
"
;
}
from
"
../../reducers/duel/mod
"
;
import
NeosConfig
from
"
../../../neos.config.json
"
;
import
NeosConfig
from
"
../../../neos.config.json
"
;
import
DragModal
from
"
./dragModal
"
;
import
DragModal
from
"
./dragModal
"
;
import
{
selectMeHint
}
from
"
../../reducers/duel/hintSlice
"
;
const
CheckCardModalV2
=
()
=>
{
const
CheckCardModalV2
=
()
=>
{
const
dispatch
=
store
.
dispatch
;
const
dispatch
=
store
.
dispatch
;
...
@@ -32,6 +33,7 @@ const CheckCardModalV2 = () => {
...
@@ -32,6 +33,7 @@ const CheckCardModalV2 = () => {
);
);
const
selectedOptions
=
useAppSelector
(
selectCheckCardModalV2SelectedOptions
);
const
selectedOptions
=
useAppSelector
(
selectCheckCardModalV2SelectedOptions
);
const
responseable
=
useAppSelector
(
selectCheckCardModalV2ResponseAble
);
const
responseable
=
useAppSelector
(
selectCheckCardModalV2ResponseAble
);
const
selectHint
=
useAppSelector
(
selectMeHint
)?.
esSelectHint
||
"
请选择卡片
"
;
const
onFinish
=
()
=>
{
const
onFinish
=
()
=>
{
sendSelectUnselectCardResponse
({
cancel_or_finish
:
true
});
sendSelectUnselectCardResponse
({
cancel_or_finish
:
true
});
...
@@ -46,7 +48,7 @@ const CheckCardModalV2 = () => {
...
@@ -46,7 +48,7 @@ const CheckCardModalV2 = () => {
return
(
return
(
<
DragModal
<
DragModal
title=
{
`
请选择未选择的卡片,最少${min}张,最多${max}张
`
}
title=
{
`
${selectHint} ${min}-${max}
`
}
open=
{
isOpen
}
open=
{
isOpen
}
closable=
{
false
}
closable=
{
false
}
footer=
{
footer=
{
...
...
src/ui/Duel/checkCardModalV3.tsx
View file @
359b0289
...
@@ -12,6 +12,7 @@ import {
...
@@ -12,6 +12,7 @@ import {
import
NeosConfig
from
"
../../../neos.config.json
"
;
import
NeosConfig
from
"
../../../neos.config.json
"
;
import
{
selectCheckCardModalV3
}
from
"
../../reducers/duel/modal/checkCardModalV3Slice
"
;
import
{
selectCheckCardModalV3
}
from
"
../../reducers/duel/modal/checkCardModalV3Slice
"
;
import
DragModal
from
"
./dragModal
"
;
import
DragModal
from
"
./dragModal
"
;
import
{
selectMeHint
}
from
"
../../reducers/duel/hintSlice
"
;
const
CheckCardModalV3
=
()
=>
{
const
CheckCardModalV3
=
()
=>
{
const
dispatch
=
store
.
dispatch
;
const
dispatch
=
store
.
dispatch
;
...
@@ -32,6 +33,7 @@ const CheckCardModalV3 = () => {
...
@@ -32,6 +33,7 @@ const CheckCardModalV3 = () => {
.
concat
(
selectedOptions
)
.
concat
(
selectedOptions
)
.
map
((
option
)
=>
option
.
level2
)
.
map
((
option
)
=>
option
.
level2
)
.
reduce
((
sum
,
current
)
=>
sum
+
current
,
0
);
.
reduce
((
sum
,
current
)
=>
sum
+
current
,
0
);
const
selectHint
=
useAppSelector
(
selectMeHint
)?.
esSelectHint
||
"
请选择卡片
"
;
const
responseable
=
const
responseable
=
(
overflow
(
overflow
...
@@ -50,7 +52,7 @@ const CheckCardModalV3 = () => {
...
@@ -50,7 +52,7 @@ const CheckCardModalV3 = () => {
return
(
return
(
<
DragModal
<
DragModal
title=
{
`
请选择卡片,最少${min}张,最多${max}张
`
}
title=
{
`
${selectHint} ${min}-${max}
`
}
open=
{
isOpen
}
open=
{
isOpen
}
closable=
{
false
}
closable=
{
false
}
footer=
{
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