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
60e608ab
Commit
60e608ab
authored
Oct 30, 2022
by
Chunchi Che
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add CTOS HandResult service
parent
f311f92e
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
89 additions
and
10 deletions
+89
-10
src/api/ocgcore/ocgAdapter/ctos/ctosHandResult.ts
src/api/ocgcore/ocgAdapter/ctos/ctosHandResult.ts
+43
-0
src/api/ocgcore/ocgAdapter/protoDecl.ts
src/api/ocgcore/ocgAdapter/protoDecl.ts
+1
-0
src/api/ocgcore/ocgHelper.ts
src/api/ocgcore/ocgHelper.ts
+21
-0
src/ui/Mora.tsx
src/ui/Mora.tsx
+21
-3
src/ui/WaitRoom.tsx
src/ui/WaitRoom.tsx
+3
-7
No files found.
src/api/ocgcore/ocgAdapter/ctos/ctosHandResult.ts
0 → 100644
View file @
60e608ab
import
{
ygopro
}
from
"
../../idl/ocgcore
"
;
import
{
ygoProPacket
}
from
"
../packet
"
;
import
{
CTOS_HAND_RESULT
}
from
"
../protoDecl
"
;
/*
* CTOS HandResult
*
* @param res: unsigned char - 玩家的猜拳选择
*
* @usage - 告知服务端当前玩家的猜拳选择
* */
export
default
class
CtosHandResultPacket
extends
ygoProPacket
{
constructor
(
pb
:
ygopro
.
YgoCtosMsg
)
{
const
handResult
=
pb
.
ctos_hand_result
;
const
hand
=
handResult
.
hand
;
const
exData
=
new
Uint8Array
(
1
);
const
dataView
=
new
DataView
(
exData
.
buffer
);
switch
(
hand
)
{
case
ygopro
.
CtosHandResult
.
HandType
.
SCISSORS
:
{
dataView
.
setUint8
(
0
,
1
);
break
;
}
case
ygopro
.
CtosHandResult
.
HandType
.
ROCK
:
{
dataView
.
setUint8
(
0
,
2
);
break
;
}
case
ygopro
.
CtosHandResult
.
HandType
.
PAPER
:
{
dataView
.
setUint8
(
0
,
3
);
break
;
}
default
:
{
console
.
log
(
"
Unknown HandResult type
"
+
hand
);
}
}
super
(
exData
.
length
+
1
,
CTOS_HAND_RESULT
,
exData
);
}
}
src/api/ocgcore/ocgAdapter/protoDecl.ts
View file @
60e608ab
...
...
@@ -7,6 +7,7 @@ export const CTOS_JOIN_GAME = 18;
export
const
CTOS_UPDATE_DECK
=
2
;
export
const
CTOS_HS_READY
=
34
;
export
const
CTOS_HS_START
=
37
;
export
const
CTOS_HAND_RESULT
=
3
;
export
const
STOC_JOIN_GAME
=
18
;
export
const
STOC_CHAT
=
25
;
...
...
src/api/ocgcore/ocgHelper.ts
View file @
60e608ab
...
...
@@ -10,6 +10,7 @@ import JoinGameAdapter from "./ocgAdapter/ctos/ctosJoinGame";
import
UpdateDeckAdapter
from
"
./ocgAdapter/ctos/ctosUpdateDeck
"
;
import
HsReadyAdapter
from
"
./ocgAdapter/ctos/ctosHsReady
"
;
import
HsStartAdapter
from
"
./ocgAdapter/ctos/ctosHsStart
"
;
import
HandResult
from
"
./ocgAdapter/ctos/ctosHandResult
"
;
export
function
sendUpdateDeck
(
deck
:
IDeck
)
{
const
updateDeck
=
new
ygopro
.
YgoCtosMsg
({
...
...
@@ -67,3 +68,23 @@ export function sendJoinGame(ws: WebSocket, version: number, passWd: string) {
ws
.
send
(
packet
.
serialize
());
}
export
function
sendHandResult
(
result
:
string
)
{
let
hand
=
ygopro
.
CtosHandResult
.
HandType
.
UNKNOWN
;
if
(
result
===
"
scissors
"
)
{
hand
=
ygopro
.
CtosHandResult
.
HandType
.
SCISSORS
;
}
else
if
(
result
===
"
rock
"
)
{
hand
=
ygopro
.
CtosHandResult
.
HandType
.
ROCK
;
}
else
if
(
result
===
"
paper
"
)
{
hand
=
ygopro
.
CtosHandResult
.
HandType
.
PAPER
;
}
const
handResult
=
new
ygopro
.
YgoCtosMsg
({
ctos_hand_result
:
new
ygopro
.
CtosHandResult
({
hand
,
}),
});
const
payload
=
new
HandResult
(
handResult
).
serialize
();
socketMiddleWare
({
cmd
:
socketCmd
.
SEND
,
payload
});
}
src/ui/Mora.tsx
View file @
60e608ab
...
...
@@ -4,6 +4,7 @@
* */
import
React
from
"
react
"
;
import
{
sendHandResult
}
from
"
../api/ocgcore/ocgHelper
"
;
import
"
../css/Mora.css
"
;
import
{
useAppSelector
}
from
"
../hook
"
;
import
{
selectMoraSelectAble
}
from
"
../reducers/moraSlice
"
;
...
...
@@ -11,16 +12,33 @@ import { selectMoraSelectAble } from "../reducers/moraSlice";
// TODO: 应该展示对手卡组信息和聊天信息
export
default
function
Mora
()
{
const
selectAble
=
useAppSelector
(
selectMoraSelectAble
);
const
handleSelectScissors
=
()
=>
{
sendHandResult
(
"
scissors
"
);
};
const
handleSelectRock
=
()
=>
{
sendHandResult
(
"
rock
"
);
};
const
handleSelectPaper
=
()
=>
{
sendHandResult
(
"
paper
"
);
};
return
(
<
div
className=
"container"
>
<
div
className=
"item"
>
<
button
disabled=
{
!
selectAble
}
>
rock
</
button
>
<
button
disabled=
{
!
selectAble
}
onClick=
{
handleSelectScissors
}
>
scissors
</
button
>
</
div
>
<
div
className=
"item"
>
<
button
disabled=
{
!
selectAble
}
>
scissors
</
button
>
<
button
disabled=
{
!
selectAble
}
onClick=
{
handleSelectRock
}
>
rock
</
button
>
</
div
>
<
div
className=
"item"
>
<
button
disabled=
{
!
selectAble
}
>
paper
</
button
>
<
button
disabled=
{
!
selectAble
}
onClick=
{
handleSelectPaper
}
>
paper
</
button
>
</
div
>
</
div
>
);
...
...
src/ui/WaitRoom.tsx
View file @
60e608ab
...
...
@@ -88,13 +88,9 @@ export default function WaitRoom() {
<
p
>
<
button
disabled=
{
!
(
isHost
&&
player0
.
state
!=
undefined
&&
player0
.
state
===
READY_STATE
&&
player1
.
state
!=
undefined
&&
player1
.
state
===
READY_STATE
)
!
isHost
||
player0
.
state
!=
READY_STATE
||
player1
.
state
!=
READY_STATE
}
onClick=
{
handleChoseStart
}
>
...
...
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