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
194581ef
Commit
194581ef
authored
Jun 25, 2023
by
chechunchi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
migrate position modal
parent
176b19a0
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
46 additions
and
37 deletions
+46
-37
src/service/duel/gameMsg.ts
src/service/duel/gameMsg.ts
+1
-1
src/service/duel/selectPosition.ts
src/service/duel/selectPosition.ts
+4
-6
src/stores/messageStore/store.ts
src/stores/messageStore/store.ts
+0
-1
src/stores/messageStore/types.ts
src/stores/messageStore/types.ts
+0
-5
src/ui/Duel/Message/PositionModal.tsx
src/ui/Duel/Message/PositionModal.tsx
+27
-12
src/ui/Duel/PlayMat/Menu/index.tsx
src/ui/Duel/PlayMat/Menu/index.tsx
+14
-12
No files found.
src/service/duel/gameMsg.ts
View file @
194581ef
...
...
@@ -140,7 +140,7 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) {
break
;
}
case
"
select_position
"
:
{
onMsgSelectPosition
(
msg
.
select_position
);
await
onMsgSelectPosition
(
msg
.
select_position
);
break
;
}
...
...
src/service/duel/selectPosition.ts
View file @
194581ef
import
{
ygopro
}
from
"
@/api
"
;
import
{
messageStore
}
from
"
@/stores
"
;
import
{
displayPositionModal
}
from
"
@/ui/Duel/Message
"
;
type
MsgSelectPosition
=
ygopro
.
StocGameMessage
.
MsgSelectPosition
;
export
default
(
selectPosition
:
MsgSelectPosition
)
=>
{
export
default
async
(
selectPosition
:
MsgSelectPosition
)
=>
{
const
_player
=
selectPosition
.
player
;
const
positions
=
selectPosition
.
positions
;
messageStore
.
positionModal
.
positions
=
positions
.
map
(
const
positions
=
selectPosition
.
positions
.
map
(
(
position
)
=>
position
.
position
);
messageStore
.
positionModal
.
isOpen
=
true
;
await
displayPositionModal
(
positions
)
;
};
src/stores/messageStore/store.ts
View file @
194581ef
...
...
@@ -3,7 +3,6 @@ import { proxy } from "valtio";
import
type
{
ModalState
}
from
"
./types
"
;
export
const
messageStore
=
proxy
<
ModalState
>
({
positionModal
:
{
isOpen
:
false
,
positions
:
[]
},
checkCounterModal
:
{
isOpen
:
false
,
options
:
[],
...
...
src/stores/messageStore/types.ts
View file @
194581ef
import
type
{
CardMeta
,
ygopro
}
from
"
@/api
"
;
export
interface
ModalState
{
// 表示形式选择弹窗
positionModal
:
{
isOpen
:
boolean
;
positions
:
ygopro
.
CardPosition
[];
};
// 指示器选择弹窗
checkCounterModal
:
{
isOpen
:
boolean
;
...
...
src/ui/Duel/Message/PositionModal.tsx
View file @
194581ef
// 表示形式选择弹窗
import
{
CheckCard
}
from
"
@ant-design/pro-components
"
;
import
{
Button
}
from
"
antd
"
;
import
React
,
{
useState
}
from
"
react
"
;
import
{
useSnapshot
}
from
"
valtio
"
;
import
{
proxy
,
useSnapshot
}
from
"
valtio
"
;
import
{
sendSelectPositionResponse
,
ygopro
}
from
"
@/api
"
;
import
{
messageStore
}
from
"
@/stores
"
;
import
{
DragModal
}
from
"
./Drag
Modal
"
;
import
{
NeosModal
}
from
"
./Neos
Modal
"
;
const
{
positionModal
}
=
messageStore
;
interface
PositionModalProps
{
isOpen
:
boolean
;
positions
:
ygopro
.
CardPosition
[];
}
const
defaultProps
=
{
isOpen
:
false
,
positions
:
[]
};
export
const
PositionModal
=
()
=>
{
const
snapPositionModal
=
useSnapshot
(
positionModal
);
const
isOpen
=
snapPositionModal
.
isOpen
;
const
positions
=
snapPositionModal
.
positions
;
const
localStore
=
proxy
<
PositionModalProps
>
(
defaultProps
);
export
const
PositionModal
=
()
=>
{
const
{
isOpen
,
positions
}
=
useSnapshot
(
localStore
);
const
[
selected
,
setSelected
]
=
useState
<
ygopro
.
CardPosition
|
undefined
>
(
undefined
);
return
(
<
Drag
Modal
<
Neos
Modal
title=
"请选择表示形式"
open=
{
isOpen
}
closable=
{
false
}
...
...
@@ -30,8 +33,7 @@ export const PositionModal = () => {
onClick=
{
()
=>
{
if
(
selected
!==
undefined
)
{
sendSelectPositionResponse
(
selected
);
positionModal
.
isOpen
=
false
;
positionModal
.
positions
=
[];
rs
();
}
}
}
>
...
...
@@ -55,12 +57,13 @@ export const PositionModal = () => {
/>
))
}
</
CheckCard
.
Group
>
</
Drag
Modal
>
</
Neos
Modal
>
);
};
function
cardPositionToChinese
(
position
:
ygopro
.
CardPosition
):
string
{
switch
(
position
)
{
// TODO: i18n
case
ygopro
.
CardPosition
.
FACEUP_ATTACK
:
{
return
"
正面攻击形式
"
;
}
...
...
@@ -78,3 +81,15 @@ function cardPositionToChinese(position: ygopro.CardPosition): string {
}
}
}
let
rs
:
(
arg
?:
any
)
=>
void
=
()
=>
{};
export
const
displayPositionModal
=
async
(
positions
:
ygopro
.
CardPosition
[]
)
=>
{
localStore
.
positions
=
positions
;
localStore
.
isOpen
=
true
;
await
new
Promise
<
void
>
((
resolve
)
=>
(
rs
=
resolve
));
localStore
.
isOpen
=
false
;
localStore
.
positions
=
[];
};
src/ui/Duel/PlayMat/Menu/index.tsx
View file @
194581ef
import
"
./index.scss
"
;
import
{
ArrowRightOutlined
,
CheckOutlined
,
CloseCircleFilled
,
MessageFilled
,
StepForwardFilled
,
}
from
"
@ant-design/icons
"
;
import
{
Button
,
Tooltip
,
Divider
,
Dropdown
,
type
MenuProps
,
theme
,
Divider
,
Space
,
type
DropdownProps
,
Popconfirm
,
Space
,
theme
,
Tooltip
,
}
from
"
antd
"
;
import
{
useState
,
cloneElement
}
from
"
react
"
;
import
{
useSnapshot
}
from
"
valtio
"
;
import
{
StepForwardFilled
,
MessageFilled
,
CloseCircleFilled
,
ArrowRightOutlined
,
CheckOutlined
,
}
from
"
@ant-design/icons
"
;
import
{
sendSelectBattleCmdResponse
,
sendSelectIdleCmdResponse
,
ygopro
,
sendSurrender
,
ygopro
,
}
from
"
@/api
"
;
import
{
cardStore
,
matStore
}
from
"
@/stores
"
;
import
PhaseType
=
ygopro
.
StocGameMessage
.
MsgNewPhase
.
PhaseType
;
...
...
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