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
11db95f1
Commit
11db95f1
authored
Oct 30, 2022
by
Chunchi Che
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
finish mora 90%
parent
ecb486fb
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
172 additions
and
19 deletions
+172
-19
src/api/ocgcore/ocgAdapter/adapter.ts
src/api/ocgcore/ocgAdapter/adapter.ts
+12
-0
src/api/ocgcore/ocgAdapter/ctos/ctosTpResult.ts
src/api/ocgcore/ocgAdapter/ctos/ctosTpResult.ts
+39
-0
src/api/ocgcore/ocgAdapter/protoDecl.ts
src/api/ocgcore/ocgAdapter/protoDecl.ts
+3
-0
src/api/ocgcore/ocgAdapter/stoc/stocSelectTp.ts
src/api/ocgcore/ocgAdapter/stoc/stocSelectTp.ts
+21
-0
src/api/ocgcore/ocgHelper.ts
src/api/ocgcore/ocgHelper.ts
+19
-0
src/reducers/moraSlice.ts
src/reducers/moraSlice.ts
+23
-8
src/service/mora/selectHand.ts
src/service/mora/selectHand.ts
+2
-2
src/service/mora/selectTp.ts
src/service/mora/selectTp.ts
+9
-0
src/service/onSocketMessage.ts
src/service/onSocketMessage.ts
+12
-0
src/ui/Mora.tsx
src/ui/Mora.tsx
+32
-9
No files found.
src/api/ocgcore/ocgAdapter/adapter.ts
View file @
11db95f1
...
@@ -8,6 +8,8 @@ import {
...
@@ -8,6 +8,8 @@ import {
STOC_JOIN_GAME
,
STOC_JOIN_GAME
,
STOC_TYPE_CHANGE
,
STOC_TYPE_CHANGE
,
STOC_SELECT_HAND
,
STOC_SELECT_HAND
,
STOC_SELECT_TP
,
STOC_HAND_RESULT
,
}
from
"
./protoDecl
"
;
}
from
"
./protoDecl
"
;
import
StocChat
from
"
./stoc/stocChat
"
;
import
StocChat
from
"
./stoc/stocChat
"
;
import
StocJoinGame
from
"
./stoc/stocJoinGame
"
;
import
StocJoinGame
from
"
./stoc/stocJoinGame
"
;
...
@@ -16,6 +18,7 @@ import StocHsPlayerChange from "./stoc/stocHsPlayerChange";
...
@@ -16,6 +18,7 @@ import StocHsPlayerChange from "./stoc/stocHsPlayerChange";
import
StocHsWatchChange
from
"
./stoc/stocHsWatchChange
"
;
import
StocHsWatchChange
from
"
./stoc/stocHsWatchChange
"
;
import
StocTypeChange
from
"
./stoc/stocTypeChange
"
;
import
StocTypeChange
from
"
./stoc/stocTypeChange
"
;
import
StocSelectHand
from
"
./stoc/stocSelectHand
"
;
import
StocSelectHand
from
"
./stoc/stocSelectHand
"
;
import
StocSelectTp
from
"
./stoc/stocSelectTp
"
;
/*
/*
* 将[`ygoProPacket`]对象转换成[`ygopro.YgoStocMsg`]对象
* 将[`ygoProPacket`]对象转换成[`ygopro.YgoStocMsg`]对象
...
@@ -62,6 +65,15 @@ export function adaptStoc(packet: ygoProPacket): ygopro.YgoStocMsg {
...
@@ -62,6 +65,15 @@ export function adaptStoc(packet: ygoProPacket): ygopro.YgoStocMsg {
break
;
break
;
}
}
case
STOC_SELECT_TP
:
{
pb
=
new
StocSelectTp
(
packet
).
upcast
();
break
;
}
case
STOC_HAND_RESULT
:
{
// TODO
break
;
}
default
:
{
default
:
{
break
;
break
;
}
}
...
...
src/api/ocgcore/ocgAdapter/ctos/ctosTpResult.ts
0 → 100644
View file @
11db95f1
import
{
ygopro
}
from
"
../../idl/ocgcore
"
;
import
{
ygoProPacket
}
from
"
../packet
"
;
import
{
CTOS_TP_RESULT
}
from
"
../protoDecl
"
;
/*
* CTOS CTOS_TP_RESULT
*
* @param res: unsigned char - 玩家的先后攻选择
*
* @usage - 告知服务端当前玩家的先后攻选择
*
* */
export
default
class
CtosTpResultPacket
extends
ygoProPacket
{
constructor
(
pb
:
ygopro
.
YgoCtosMsg
)
{
const
tpResult
=
pb
.
ctos_tp_result
;
const
tp
=
tpResult
.
tp
;
const
exData
=
new
Uint8Array
(
1
);
const
dataView
=
new
DataView
(
exData
.
buffer
);
switch
(
tp
)
{
case
ygopro
.
CtosTpResult
.
TpType
.
FIRST
:
{
dataView
.
setUint8
(
0
,
1
);
break
;
}
case
ygopro
.
CtosTpResult
.
TpType
.
SECOND
:
{
dataView
.
setUint8
(
0
,
0
);
break
;
}
default
:
{
console
.
log
(
"
Unknown HandResult type
"
+
tp
);
}
}
super
(
exData
.
length
+
1
,
CTOS_TP_RESULT
,
exData
);
}
}
src/api/ocgcore/ocgAdapter/protoDecl.ts
View file @
11db95f1
...
@@ -8,6 +8,7 @@ export const CTOS_UPDATE_DECK = 2;
...
@@ -8,6 +8,7 @@ export const CTOS_UPDATE_DECK = 2;
export
const
CTOS_HS_READY
=
34
;
export
const
CTOS_HS_READY
=
34
;
export
const
CTOS_HS_START
=
37
;
export
const
CTOS_HS_START
=
37
;
export
const
CTOS_HAND_RESULT
=
3
;
export
const
CTOS_HAND_RESULT
=
3
;
export
const
CTOS_TP_RESULT
=
4
;
export
const
STOC_JOIN_GAME
=
18
;
export
const
STOC_JOIN_GAME
=
18
;
export
const
STOC_CHAT
=
25
;
export
const
STOC_CHAT
=
25
;
...
@@ -16,3 +17,5 @@ export const STOC_HS_PLAYER_CHANGE = 33;
...
@@ -16,3 +17,5 @@ export const STOC_HS_PLAYER_CHANGE = 33;
export
const
STOC_HS_WATCH_CHANGE
=
34
;
export
const
STOC_HS_WATCH_CHANGE
=
34
;
export
const
STOC_TYPE_CHANGE
=
19
;
export
const
STOC_TYPE_CHANGE
=
19
;
export
const
STOC_SELECT_HAND
=
3
;
export
const
STOC_SELECT_HAND
=
3
;
export
const
STOC_SELECT_TP
=
4
;
export
const
STOC_HAND_RESULT
=
5
;
src/api/ocgcore/ocgAdapter/stoc/stocSelectTp.ts
0 → 100644
View file @
11db95f1
import
{
ygopro
}
from
"
../../idl/ocgcore
"
;
import
{
ygoProPacket
,
StocAdapter
}
from
"
../packet
"
;
/*
* STOC SelectTp
*
* @usage - 通知客户端/前端提醒用户进行选先后攻
* */
export
default
class
selectTp
implements
StocAdapter
{
packet
:
ygoProPacket
;
constructor
(
packet
:
ygoProPacket
)
{
this
.
packet
=
packet
;
}
upcast
():
ygopro
.
YgoStocMsg
{
return
new
ygopro
.
YgoStocMsg
({
stoc_select_tp
:
new
ygopro
.
StocSelectTp
({}),
});
}
}
src/api/ocgcore/ocgHelper.ts
View file @
11db95f1
...
@@ -11,6 +11,7 @@ import UpdateDeckAdapter from "./ocgAdapter/ctos/ctosUpdateDeck";
...
@@ -11,6 +11,7 @@ import UpdateDeckAdapter from "./ocgAdapter/ctos/ctosUpdateDeck";
import
HsReadyAdapter
from
"
./ocgAdapter/ctos/ctosHsReady
"
;
import
HsReadyAdapter
from
"
./ocgAdapter/ctos/ctosHsReady
"
;
import
HsStartAdapter
from
"
./ocgAdapter/ctos/ctosHsStart
"
;
import
HsStartAdapter
from
"
./ocgAdapter/ctos/ctosHsStart
"
;
import
HandResult
from
"
./ocgAdapter/ctos/ctosHandResult
"
;
import
HandResult
from
"
./ocgAdapter/ctos/ctosHandResult
"
;
import
TpResult
from
"
./ocgAdapter/ctos/ctosTpResult
"
;
export
function
sendUpdateDeck
(
deck
:
IDeck
)
{
export
function
sendUpdateDeck
(
deck
:
IDeck
)
{
const
updateDeck
=
new
ygopro
.
YgoCtosMsg
({
const
updateDeck
=
new
ygopro
.
YgoCtosMsg
({
...
@@ -88,3 +89,21 @@ export function sendHandResult(result: string) {
...
@@ -88,3 +89,21 @@ export function sendHandResult(result: string) {
socketMiddleWare
({
cmd
:
socketCmd
.
SEND
,
payload
});
socketMiddleWare
({
cmd
:
socketCmd
.
SEND
,
payload
});
}
}
export
function
sendTpResult
(
isFirst
:
boolean
)
{
let
tp
=
ygopro
.
CtosTpResult
.
TpType
.
UNKNOWN
;
if
(
isFirst
)
{
tp
=
ygopro
.
CtosTpResult
.
TpType
.
FIRST
;
}
else
{
tp
=
ygopro
.
CtosTpResult
.
TpType
.
SECOND
;
}
const
tpResult
=
new
ygopro
.
YgoCtosMsg
({
ctos_tp_result
:
new
ygopro
.
CtosTpResult
({
tp
,
}),
});
const
payload
=
new
TpResult
(
tpResult
).
serialize
();
socketMiddleWare
({
cmd
:
socketCmd
.
SEND
,
payload
});
}
src/reducers/moraSlice.ts
View file @
11db95f1
...
@@ -6,26 +6,41 @@ import { createSlice } from "@reduxjs/toolkit";
...
@@ -6,26 +6,41 @@ import { createSlice } from "@reduxjs/toolkit";
import
{
RootState
}
from
"
../store
"
;
import
{
RootState
}
from
"
../store
"
;
export
interface
moraState
{
export
interface
moraState
{
selectable
:
boolean
;
selectHandAble
:
boolean
;
selectTpAble
:
boolean
;
}
}
const
initialState
:
moraState
=
{
const
initialState
:
moraState
=
{
selectable
:
false
,
selectHandAble
:
false
,
selectTpAble
:
false
,
};
};
const
moraSlice
=
createSlice
({
const
moraSlice
=
createSlice
({
name
:
"
mora
"
,
name
:
"
mora
"
,
initialState
,
initialState
,
reducers
:
{
reducers
:
{
selectAble
:
(
state
)
=>
{
select
Hand
Able
:
(
state
)
=>
{
state
.
select
a
ble
=
true
;
state
.
select
HandA
ble
=
true
;
},
},
unSelectAble
:
(
state
)
=>
{
unSelectHandAble
:
(
state
)
=>
{
state
.
selectable
=
false
;
state
.
selectHandAble
=
false
;
},
selectTpAble
:
(
state
)
=>
{
state
.
selectTpAble
=
true
;
},
unSelectTpAble
:
(
state
)
=>
{
state
.
selectTpAble
=
false
;
},
},
},
},
});
});
export
const
{
selectAble
,
unSelectAble
}
=
moraSlice
.
actions
;
export
const
{
export
const
selectMoraSelectAble
=
(
state
:
RootState
)
=>
state
.
mora
.
selectable
;
selectHandAble
,
unSelectHandAble
,
selectTpAble
,
unSelectTpAble
,
}
=
moraSlice
.
actions
;
export
const
selectHandSelectAble
=
(
state
:
RootState
)
=>
state
.
mora
.
selectHandAble
;
export
const
selectTpSelectAble
=
(
state
:
RootState
)
=>
state
.
mora
.
selectTpAble
;
export
default
moraSlice
.
reducer
;
export
default
moraSlice
.
reducer
;
src/service/mora/selectHand.ts
View file @
11db95f1
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
store
}
from
"
../../store
"
;
import
{
store
}
from
"
../../store
"
;
import
{
selectAble
}
from
"
../../reducers/moraSlice
"
;
import
{
select
Hand
Able
}
from
"
../../reducers/moraSlice
"
;
export
default
function
handleSelectHand
(
_
:
ygopro
.
YgoStocMsg
)
{
export
default
function
handleSelectHand
(
_
:
ygopro
.
YgoStocMsg
)
{
const
dispatch
=
store
.
dispatch
;
const
dispatch
=
store
.
dispatch
;
dispatch
(
selectAble
());
dispatch
(
select
Hand
Able
());
}
}
src/service/mora/selectTp.ts
0 → 100644
View file @
11db95f1
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
store
}
from
"
../../store
"
;
import
{
selectTpAble
}
from
"
../../reducers/moraSlice
"
;
export
default
function
handleSelectTp
(
_
:
ygopro
.
YgoStocMsg
)
{
const
dispatch
=
store
.
dispatch
;
dispatch
(
selectTpAble
());
}
src/service/onSocketMessage.ts
View file @
11db95f1
...
@@ -11,6 +11,7 @@ import handleHsWatchChange from "./room/hsWatchChange";
...
@@ -11,6 +11,7 @@ import handleHsWatchChange from "./room/hsWatchChange";
import
{
ygoProPacket
}
from
"
../api/ocgcore/ocgAdapter/packet
"
;
import
{
ygoProPacket
}
from
"
../api/ocgcore/ocgAdapter/packet
"
;
import
{
adaptStoc
}
from
"
../api/ocgcore/ocgAdapter/adapter
"
;
import
{
adaptStoc
}
from
"
../api/ocgcore/ocgAdapter/adapter
"
;
import
handleSelectHand
from
"
./mora/selectHand
"
;
import
handleSelectHand
from
"
./mora/selectHand
"
;
import
handleSelectTp
from
"
./mora/selectTp
"
;
/*
/*
* 先将从长连接中读取到的二进制数据通过Adapter转成protobuf结构体,
* 先将从长连接中读取到的二进制数据通过Adapter转成protobuf结构体,
...
@@ -57,6 +58,17 @@ export default function handleSocketMessage(e: MessageEvent) {
...
@@ -57,6 +58,17 @@ export default function handleSocketMessage(e: MessageEvent) {
break
;
break
;
}
}
case
"
stoc_hand_result
"
:
{
// TODO
console
.
log
(
"
TODO: handle STOC HandResult.
"
);
break
;
}
case
"
stoc_select_tp
"
:
{
handleSelectTp
(
pb
);
break
;
}
default
:
{
default
:
{
break
;
break
;
}
}
...
...
src/ui/Mora.tsx
View file @
11db95f1
...
@@ -4,40 +4,63 @@
...
@@ -4,40 +4,63 @@
* */
* */
import
React
from
"
react
"
;
import
React
from
"
react
"
;
import
{
sendHandResult
}
from
"
../api/ocgcore/ocgHelper
"
;
import
{
sendHandResult
,
sendTpResult
}
from
"
../api/ocgcore/ocgHelper
"
;
import
"
../css/Mora.css
"
;
import
"
../css/Mora.css
"
;
import
{
useAppSelector
}
from
"
../hook
"
;
import
{
useAppSelector
}
from
"
../hook
"
;
import
{
selectMoraSelectAble
}
from
"
../reducers/moraSlice
"
;
import
{
selectHandSelectAble
,
unSelectHandAble
,
selectTpSelectAble
,
unSelectTpAble
,
}
from
"
../reducers/moraSlice
"
;
import
{
store
}
from
"
../store
"
;
// TODO: 应该展示对手卡组信息和聊天信息
// TODO: 应该展示对手卡组信息和聊天信息
export
default
function
Mora
()
{
export
default
function
Mora
()
{
const
selectAble
=
useAppSelector
(
selectMoraSelectAble
);
const
dispatch
=
store
.
dispatch
;
const
selectHandAble
=
useAppSelector
(
selectHandSelectAble
);
const
selectTpAble
=
useAppSelector
(
selectTpSelectAble
);
const
handleSelectScissors
=
()
=>
{
const
handleSelectScissors
=
()
=>
{
sendHandResult
(
"
scissors
"
);
sendHandResult
(
"
scissors
"
);
dispatch
(
unSelectHandAble
());
};
};
const
handleSelectRock
=
()
=>
{
const
handleSelectRock
=
()
=>
{
sendHandResult
(
"
rock
"
);
sendHandResult
(
"
rock
"
);
dispatch
(
unSelectHandAble
());
};
};
const
handleSelectPaper
=
()
=>
{
const
handleSelectPaper
=
()
=>
{
sendHandResult
(
"
paper
"
);
sendHandResult
(
"
paper
"
);
dispatch
(
unSelectHandAble
());
};
const
handleSelectFirst
=
()
=>
{
sendTpResult
(
true
);
dispatch
(
unSelectTpAble
());
};
const
handleSelectSecond
=
()
=>
{
sendTpResult
(
false
);
dispatch
(
unSelectTpAble
());
};
};
return
(
return
(
<
div
className=
"container"
>
<
div
className=
"container"
>
<
div
className=
"item"
>
<
div
className=
"item"
>
<
button
disabled=
{
!
selectAble
}
onClick=
{
handleSelectScissors
}
>
<
button
disabled=
{
!
select
Hand
Able
}
onClick=
{
handleSelectScissors
}
>
scissors
scissors
</
button
>
</
button
>
</
div
>
<
button
disabled=
{
!
selectHandAble
}
onClick=
{
handleSelectRock
}
>
<
div
className=
"item"
>
<
button
disabled=
{
!
selectAble
}
onClick=
{
handleSelectRock
}
>
rock
rock
</
button
>
</
button
>
<
button
disabled=
{
!
selectHandAble
}
onClick=
{
handleSelectPaper
}
>
paper
</
button
>
</
div
>
</
div
>
<
div
className=
"item"
>
<
div
className=
"item"
>
<
button
disabled=
{
!
selectAble
}
onClick=
{
handleSelectPaper
}
>
<
button
disabled=
{
!
selectTpAble
}
onClick=
{
handleSelectFirst
}
>
paper
first
</
button
>
<
button
disabled=
{
!
selectTpAble
}
onClick=
{
handleSelectSecond
}
>
second
</
button
>
</
button
>
</
div
>
</
div
>
</
div
>
</
div
>
...
...
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