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
ad8672d2
Commit
ad8672d2
authored
Nov 20, 2022
by
Chunchi Che
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
90dbb589
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
28 additions
and
11 deletions
+28
-11
src/reducers/cardsSlice.ts
src/reducers/cardsSlice.ts
+1
-2
src/ui/Duel/data.ts
src/ui/Duel/data.ts
+1
-1
src/ui/Duel/duel.ts
src/ui/Duel/duel.ts
+1
-1
src/ui/Duel/simpleDuel/hands.ts
src/ui/Duel/simpleDuel/hands.ts
+10
-3
src/ui/Duel/simpleDuel/mod.tsx
src/ui/Duel/simpleDuel/mod.tsx
+15
-4
No files found.
src/reducers/cardsSlice.ts
View file @
ad8672d2
...
@@ -43,6 +43,5 @@ const cardsSlice = createSlice({
...
@@ -43,6 +43,5 @@ const cardsSlice = createSlice({
},
},
});
});
export
const
selectCard
=
(
state
:
RootState
,
id
:
number
)
=>
export
const
selectCards
=
(
state
:
RootState
)
=>
state
.
cards
.
metas
;
state
.
cards
.
metas
.
get
(
id
);
export
default
cardsSlice
.
reducer
;
export
default
cardsSlice
.
reducer
;
src/ui/Duel/data.ts
View file @
ad8672d2
...
@@ -3,6 +3,6 @@
...
@@ -3,6 +3,6 @@
*
*
* */
* */
export
interface
Car
d
{
export
interface
Han
d
{
code
:
number
;
// Currently only code
code
:
number
;
// Currently only code
}
}
src/ui/Duel/duel.ts
View file @
ad8672d2
...
@@ -26,7 +26,7 @@ export interface IDuelPlate {
...
@@ -26,7 +26,7 @@ export interface IDuelPlate {
// 渲染接口,返回一个React组件
// 渲染接口,返回一个React组件
render
():
React
.
ReactElement
;
render
():
React
.
ReactElement
;
// 注册手牌selector
// 注册手牌selector
registerHands
(
selector
:
TypeSelector
<
DuelData
.
Car
d
[]
>
):
void
;
registerHands
(
selector
:
TypeSelector
<
DuelData
.
Han
d
[]
>
):
void
;
}
}
export
interface
TypeSelector
<
T
>
{
export
interface
TypeSelector
<
T
>
{
...
...
src/ui/Duel/simpleDuel/hands.ts
View file @
ad8672d2
import
{
Car
d
}
from
"
../data
"
;
import
{
Han
d
}
from
"
../data
"
;
import
*
as
BABYLON
from
"
@babylonjs/core
"
;
import
*
as
BABYLON
from
"
@babylonjs/core
"
;
import
*
as
CONFIG
from
"
./config
"
;
import
*
as
CONFIG
from
"
./config
"
;
import
{
Card
}
from
"
../../../reducers/cardsSlice
"
;
export
default
(
hands
:
Card
[],
scene
:
BABYLON
.
Scene
)
=>
{
export
default
(
hands
:
Hand
[],
cardMetas
:
Map
<
number
,
Card
>
,
scene
:
BABYLON
.
Scene
)
=>
{
const
groundShape
=
CONFIG
.
GroundShape
();
const
groundShape
=
CONFIG
.
GroundShape
();
const
handShape
=
CONFIG
.
HandShape
();
const
handShape
=
CONFIG
.
HandShape
();
const
gap
=
groundShape
.
width
/
hands
.
length
;
const
gap
=
groundShape
.
width
/
hands
.
length
;
...
@@ -31,7 +36,9 @@ export default (hands: Card[], scene: BABYLON.Scene) => {
...
@@ -31,7 +36,9 @@ export default (hands: Card[], scene: BABYLON.Scene) => {
new
BABYLON
.
ExecuteCodeAction
(
new
BABYLON
.
ExecuteCodeAction
(
BABYLON
.
ActionManager
.
OnPickTrigger
,
BABYLON
.
ActionManager
.
OnPickTrigger
,
(
event
)
=>
{
(
event
)
=>
{
console
.
log
(
`<Click>hand:
${
idx
}
`
,
"
card:
"
,
item
,
"
event:
"
,
event
);
const
meta
=
cardMetas
.
get
(
item
.
code
);
console
.
log
(
`<Click>hand:
${
idx
}
`
,
"
card:
"
,
meta
,
"
event:
"
,
event
);
}
}
)
)
);
);
...
...
src/ui/Duel/simpleDuel/mod.tsx
View file @
ad8672d2
...
@@ -14,15 +14,20 @@ import renderMonsters from "./monsters";
...
@@ -14,15 +14,20 @@ import renderMonsters from "./monsters";
import
renderExtraMonsters
from
"
./extraMonsters
"
;
import
renderExtraMonsters
from
"
./extraMonsters
"
;
import
renderMagics
from
"
./magics
"
;
import
renderMagics
from
"
./magics
"
;
import
*
as
CONFIG
from
"
./config
"
;
import
*
as
CONFIG
from
"
./config
"
;
import
{
fetchCardMetaById
}
from
"
../../../reducers/cardsSlice
"
;
import
{
store
}
from
"
../../../store
"
;
import
{
selectCards
}
from
"
../../../reducers/cardsSlice
"
;
// CONFIG
// CONFIG
export
default
class
SimpleDuelPlateImpl
implements
IDuelPlate
{
export
default
class
SimpleDuelPlateImpl
implements
IDuelPlate
{
handsSelector
?:
TypeSelector
<
DuelData
.
Car
d
[]
>
;
handsSelector
?:
TypeSelector
<
DuelData
.
Han
d
[]
>
;
constructor
()
{}
constructor
()
{}
render
():
React
.
ReactElement
{
render
():
React
.
ReactElement
{
const
dispatch
=
store
.
dispatch
;
// ----- 数据获取 -----
// ----- 数据获取 -----
// 默认的手牌Selector,返回五个code为-1的Card。
// 默认的手牌Selector,返回五个code为-1的Card。
...
@@ -31,6 +36,12 @@ export default class SimpleDuelPlateImpl implements IDuelPlate {
...
@@ -31,6 +36,12 @@ export default class SimpleDuelPlateImpl implements IDuelPlate {
};
};
const
hands
=
useAppSelector
(
this
.
handsSelector
||
defaultHandsSelector
);
const
hands
=
useAppSelector
(
this
.
handsSelector
||
defaultHandsSelector
);
// TODO: 这里应该思考更合理的处理方式
hands
.
forEach
((
item
)
=>
{
dispatch
(
fetchCardMetaById
(
item
.
code
));
});
const
cardMetas
=
useAppSelector
(
selectCards
);
// ----- WebGL渲染 -----
// ----- WebGL渲染 -----
const
canvasRef
=
useRef
<
HTMLCanvasElement
>
(
null
);
const
canvasRef
=
useRef
<
HTMLCanvasElement
>
(
null
);
...
@@ -66,7 +77,7 @@ export default class SimpleDuelPlateImpl implements IDuelPlate {
...
@@ -66,7 +77,7 @@ export default class SimpleDuelPlateImpl implements IDuelPlate {
renderExtraMonsters
(
scene
);
renderExtraMonsters
(
scene
);
// 创建手牌
// 创建手牌
renderHands
(
hands
,
scene
);
renderHands
(
hands
,
cardMetas
,
scene
);
// 创建地板
// 创建地板
const
ground
=
BABYLON
.
MeshBuilder
.
CreateGround
(
const
ground
=
BABYLON
.
MeshBuilder
.
CreateGround
(
...
@@ -79,7 +90,7 @@ export default class SimpleDuelPlateImpl implements IDuelPlate {
...
@@ -79,7 +90,7 @@ export default class SimpleDuelPlateImpl implements IDuelPlate {
engine
.
runRenderLoop
(()
=>
{
engine
.
runRenderLoop
(()
=>
{
scene
.
render
();
scene
.
render
();
});
});
},
[
canvasRef
,
hands
]);
},
[
canvasRef
,
hands
,
cardMetas
]);
return
(
return
(
<
canvas
<
canvas
...
@@ -90,7 +101,7 @@ export default class SimpleDuelPlateImpl implements IDuelPlate {
...
@@ -90,7 +101,7 @@ export default class SimpleDuelPlateImpl implements IDuelPlate {
);
);
}
}
registerHands
(
selector
:
TypeSelector
<
DuelData
.
Car
d
[]
>
):
void
{
registerHands
(
selector
:
TypeSelector
<
DuelData
.
Han
d
[]
>
):
void
{
this
.
handsSelector
=
selector
;
this
.
handsSelector
=
selector
;
}
}
}
}
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