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
0874d5ff
Commit
0874d5ff
authored
May 03, 2023
by
timel
Committed by
Chunchi Che
May 28, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: hand
parent
c9d97b95
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
58 additions
and
6 deletions
+58
-6
src/ui/Duel/NewPlayMat/Bg/index.scss
src/ui/Duel/NewPlayMat/Bg/index.scss
+1
-1
src/ui/Duel/NewPlayMat/Card/index.tsx
src/ui/Duel/NewPlayMat/Card/index.tsx
+43
-3
src/ui/Duel/NewPlayMat/Mat/index.scss
src/ui/Duel/NewPlayMat/Mat/index.scss
+1
-1
src/ui/Duel/NewPlayMat/utils/cssConfig.ts
src/ui/Duel/NewPlayMat/utils/cssConfig.ts
+13
-1
No files found.
src/ui/Duel/NewPlayMat/Bg/index.scss
View file @
0874d5ff
...
...
@@ -14,7 +14,7 @@ section#mat {
.block
{
height
:
var
(
--
block-height-m
);
width
:
var
(
--
block-width
);
background-color
:
gray
;
background-color
:
rgba
(
128
,
128
,
128
,
0
.447
)
;
&
.extra
{
margin-inline
:
calc
(
var
(
--
block-width
)
/
2
+
var
(
--
col-gap
)
/
2
);
}
...
...
src/ui/Duel/NewPlayMat/Card/index.tsx
View file @
0874d5ff
...
...
@@ -12,12 +12,16 @@ const { HAND, GRAVE, REMOVED, DECK, EXTRA, MZONE, SZONE, TZONE, OVERLAY } =
ygopro
.
CardZone
;
const
{
PLANE_ROTATE_X
,
BLOCK_WIDTH
,
BLOCK_HEIGHT_M
,
BLOCK_HEIGHT_S
,
CARD_RATIO
,
COL_GAP
,
ROW_GAP
,
HAND_MARGIN_TOP
,
HAND_CARD_HEIGHT
,
HAND_CIRCLE_CENTER_OFFSET_Y
,
}
=
matConfig
;
export
const
Card
:
FC
<
{
idx
:
number
}
>
=
React
.
memo
(({
idx
})
=>
{
...
...
@@ -67,7 +71,7 @@ export const Card: FC<{ idx: number }> = React.memo(({ idx }) => {
props
.
rotateZ
,
],
(
x
,
y
,
z
,
rx
,
ry
,
rz
)
=>
`translate3d(${x}px, ${y}px, ${z}px) rotateZ(${rz}deg)`
`translate3d(${x}px, ${y}px, ${z}px) rotate
X(${rx}deg) rotate
Z(${rz}deg)`
),
height
:
props
.
height
,
}
}
...
...
@@ -79,7 +83,7 @@ export const Card: FC<{ idx: number }> = React.memo(({ idx }) => {
});
function
calcCoordinate
(
{
zone
,
sequence
,
position
,
xyzMonster
}:
CardType
,
{
zone
,
sequence
,
position
,
xyzMonster
,
controller
}:
CardType
,
opponent
:
boolean
)
{
const
res
=
{
...
...
@@ -142,7 +146,43 @@ function calcCoordinate(
BLOCK_HEIGHT_M
.
value
*
Math
.
min
(
Math
.
max
(
0
,
row
-
1
),
3
)
+
BLOCK_HEIGHT_S
.
value
*
Math
.
ceil
(
row
/
4
);
}
console
.
log
({
col
,
row
});
if
(
zone
===
HAND
&&
isMe
(
controller
))
{
// 手卡会有很复杂的计算...
// 暂时先看成是我的手卡
const
hand_circle_center_x
=
(
5
*
BLOCK_WIDTH
.
value
+
4
*
COL_GAP
.
value
)
/
2
;
const
hand_circle_center_y
=
2
*
BLOCK_HEIGHT_M
.
value
+
2
*
BLOCK_HEIGHT_S
.
value
+
4
*
ROW_GAP
.
value
+
HAND_MARGIN_TOP
.
value
+
HAND_CARD_HEIGHT
.
value
+
HAND_CIRCLE_CENTER_OFFSET_Y
.
value
;
const
hand_card_width
=
CARD_RATIO
.
value
*
HAND_CARD_HEIGHT
.
value
;
const
THETA
=
2
*
Math
.
atan
(
hand_card_width
/
2
/
(
HAND_CIRCLE_CENTER_OFFSET_Y
.
value
+
HAND_CARD_HEIGHT
.
value
)
);
// 接下来计算每一张手卡
const
hands_length
=
cardStore
.
at
(
HAND
,
controller
).
length
;
const
angle
=
(
sequence
-
(
hands_length
-
1
)
/
2
)
*
THETA
;
const
r
=
HAND_CIRCLE_CENTER_OFFSET_Y
.
value
+
HAND_CARD_HEIGHT
.
value
/
2
;
const
negativeX
=
Math
.
sin
(
angle
)
*
r
-
hand_card_width
/
2
;
const
negativeY
=
Math
.
cos
(
angle
)
*
r
+
HAND_CARD_HEIGHT
.
value
/
2
;
const
x
=
hand_circle_center_x
+
negativeX
;
const
y
=
hand_circle_center_y
-
negativeY
;
res
.
translateX
=
x
;
res
.
translateY
=
y
;
res
.
translateZ
=
50
;
res
.
rotateZ
=
(
angle
*
180
)
/
Math
.
PI
;
res
.
rotateX
=
-
PLANE_ROTATE_X
.
value
;
}
return
res
;
}
...
...
src/ui/Duel/NewPlayMat/Mat/index.scss
View file @
0874d5ff
...
...
@@ -13,7 +13,7 @@ section#mat {
}
#plane
{
transform
:
translateX
(
0
)
translateY
(
0
)
translateZ
(
0
)
rotateX
(
var
(
--
plane-rotate-
z
));
rotateX
(
var
(
--
plane-rotate-
x
));
width
:
fit-content
;
}
}
src/ui/Duel/NewPlayMat/utils/cssConfig.ts
View file @
0874d5ff
...
...
@@ -24,7 +24,7 @@ export const matConfig = {
value
:
1500
,
unit
:
UNIT
.
PX
,
},
PLANE_ROTATE_
Z
:
{
PLANE_ROTATE_
X
:
{
value
:
20
,
unit
:
UNIT
.
DEG
,
},
...
...
@@ -52,4 +52,16 @@ export const matConfig = {
value
:
5.9
/
8.6
,
unit
:
UNIT
.
NONE
,
},
HAND_MARGIN_TOP
:
{
value
:
0
,
unit
:
UNIT
.
PX
,
},
HAND_CIRCLE_CENTER_OFFSET_Y
:
{
value
:
800
,
unit
:
UNIT
.
PX
,
},
HAND_CARD_HEIGHT
:
{
value
:
120
,
unit
:
UNIT
.
PX
,
},
};
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