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
f80394bd
Commit
f80394bd
authored
Oct 07, 2022
by
Chunchi Che
Committed by
GitHub
Oct 07, 2022
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #15 from DarkNeos/dev
Dev
parents
dfcd797b
e9712d19
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
211 additions
and
44 deletions
+211
-44
neos-protobuf
neos-protobuf
+1
-1
src/WaitRoom.tsx
src/WaitRoom.tsx
+80
-24
src/api/idl/ocgcore.ts
src/api/idl/ocgcore.ts
+130
-19
No files found.
neos-protobuf
@
ed6ff3b1
Subproject commit
7b87e8a035a016c44d551f85c1ce0a719b507b8f
Subproject commit
ed6ff3b15aaa74e35feb40d33aa518b52a275402
src/WaitRoom.tsx
View file @
f80394bd
...
@@ -6,9 +6,13 @@ import "./css/WaitRoom.css";
...
@@ -6,9 +6,13 @@ import "./css/WaitRoom.css";
type
Player
=
{
type
Player
=
{
name
?:
string
;
name
?:
string
;
state
?:
string
;
state
?:
string
;
// todo: use enum or boolean
isHost
?:
boolean
;
};
};
const
READY_STATE
=
"
ready
"
;
const
NO_READY_STATE
=
"
not ready
"
;
export
default
function
WaitRoom
()
{
export
default
function
WaitRoom
()
{
const
params
=
useParams
<
{
const
params
=
useParams
<
{
player
?:
string
;
player
?:
string
;
...
@@ -22,6 +26,7 @@ export default function WaitRoom() {
...
@@ -22,6 +26,7 @@ export default function WaitRoom() {
const
[
observerCount
,
setObserverCount
]
=
useState
<
number
>
(
0
);
const
[
observerCount
,
setObserverCount
]
=
useState
<
number
>
(
0
);
const
[
player0
,
setPlayer0
]
=
useState
<
Player
>
({});
const
[
player0
,
setPlayer0
]
=
useState
<
Player
>
({});
const
[
player1
,
setPlayer1
]
=
useState
<
Player
>
({});
const
[
player1
,
setPlayer1
]
=
useState
<
Player
>
({});
const
[
isHost
,
setIsHost
]
=
useState
<
boolean
>
(
false
);
const
[
_
,
forceUpdate
]
=
useReducer
(
x
=>
x
+
1
,
0
);
// todo: use correct update design
const
[
_
,
forceUpdate
]
=
useReducer
(
x
=>
x
+
1
,
0
);
// todo: use correct update design
const
ws
=
useRef
<
WebSocket
|
null
>
(
null
);
const
ws
=
useRef
<
WebSocket
|
null
>
(
null
);
...
@@ -34,7 +39,7 @@ export default function WaitRoom() {
...
@@ -34,7 +39,7 @@ export default function WaitRoom() {
}
}
ws
.
current
.
onopen
=
()
=>
{
ws
.
current
.
onopen
=
()
=>
{
console
.
log
(
"
w
ebsocket open
"
);
console
.
log
(
"
W
ebsocket open
"
);
if
(
if
(
player
!=
null
&&
player
!=
null
&&
...
@@ -53,7 +58,7 @@ export default function WaitRoom() {
...
@@ -53,7 +58,7 @@ export default function WaitRoom() {
};
};
ws
.
current
.
onclose
=
()
=>
{
ws
.
current
.
onclose
=
()
=>
{
console
.
log
(
"
w
ebsocket closed
"
);
console
.
log
(
"
W
ebsocket closed
"
);
};
};
ws
.
current
.
onmessage
=
e
=>
{
ws
.
current
.
onmessage
=
e
=>
{
...
@@ -103,26 +108,20 @@ export default function WaitRoom() {
...
@@ -103,26 +108,20 @@ export default function WaitRoom() {
break
;
break
;
}
}
case
ygopro
.
StocHsPlayerChange
.
State
.
READY
:
{
case
ygopro
.
StocHsPlayerChange
.
State
.
READY
:
{
console
.
log
(
"
Player
"
+
change
.
pos
+
"
has ready
"
);
const
updateState
=
(
player
:
Player
)
=>
{
const
updateState
=
(
player
:
Player
)
=>
{
const
state
=
"
ready
"
;
player
.
state
=
READY_STATE
;
player
.
state
=
state
;
return
player
;
return
player
;
};
};
change
.
pos
==
0
change
.
pos
==
0
?
setPlayer0
(
updateState
)
?
setPlayer0
(
updateState
)
:
setPlayer1
(
updateState
);
:
setPlayer1
(
updateState
);
forceUpdate
();
break
;
break
;
}
}
case
ygopro
.
StocHsPlayerChange
.
State
.
NO_READY
:
{
case
ygopro
.
StocHsPlayerChange
.
State
.
NO_READY
:
{
console
.
log
(
"
Player
"
+
change
.
pos
+
"
not ready
"
);
const
updateState
=
(
player
:
Player
)
=>
{
const
updateState
=
(
player
:
Player
)
=>
{
const
state
=
"
not ready
"
;
const
state
=
NO_READY_STATE
;
player
.
state
=
state
;
player
.
state
=
state
;
return
player
;
return
player
;
};
};
...
@@ -130,20 +129,15 @@ export default function WaitRoom() {
...
@@ -130,20 +129,15 @@ export default function WaitRoom() {
change
.
pos
==
0
change
.
pos
==
0
?
setPlayer0
(
updateState
)
?
setPlayer0
(
updateState
)
:
setPlayer1
(
updateState
);
:
setPlayer1
(
updateState
);
forceUpdate
();
break
;
break
;
}
}
case
ygopro
.
StocHsPlayerChange
.
State
.
LEAVE
:
{
case
ygopro
.
StocHsPlayerChange
.
State
.
LEAVE
:
{
console
.
log
(
"
Player
"
+
change
.
pos
+
"
has leave
"
);
change
.
pos
==
0
?
setPlayer0
({})
:
setPlayer1
({});
change
.
pos
==
0
?
setPlayer0
({})
:
setPlayer1
({});
break
;
break
;
}
}
case
ygopro
.
StocHsPlayerChange
.
State
.
TO_OBSERVER
:
{
case
ygopro
.
StocHsPlayerChange
.
State
.
TO_OBSERVER
:
{
console
.
log
(
"
Player
"
+
change
.
pos
+
"
has moved to observer
"
);
change
.
pos
==
0
?
setPlayer0
({})
:
setPlayer1
({});
change
.
pos
==
0
?
setPlayer0
({})
:
setPlayer1
({});
setObserverCount
(
observerCount
+
1
);
setObserverCount
(
observerCount
+
1
);
...
@@ -153,6 +147,8 @@ export default function WaitRoom() {
...
@@ -153,6 +147,8 @@ export default function WaitRoom() {
break
;
break
;
}
}
}
}
forceUpdate
();
}
}
break
;
break
;
...
@@ -170,19 +166,47 @@ export default function WaitRoom() {
...
@@ -170,19 +166,47 @@ export default function WaitRoom() {
if
(
pos
>
1
)
{
if
(
pos
>
1
)
{
console
.
log
(
"
Currently only supported 2v2 mode.
"
);
console
.
log
(
"
Currently only supported 2v2 mode.
"
);
}
else
{
}
else
{
const
player
=
{
const
updatePlayer
=
(
player
:
Player
)
=>
{
name
,
player
.
name
=
name
;
state
:
"
not ready
"
return
player
;
};
};
pos
==
0
?
setPlayer0
(
player
)
:
setPlayer1
(
player
);
pos
==
0
?
setPlayer0
(
updatePlayer
)
:
setPlayer1
(
updatePlayer
);
forceUpdate
();
}
}
break
;
break
;
}
}
case
"
stoc_type_change
"
:
{
case
"
stoc_type_change
"
:
{
const
t
=
pb
.
stoc_type_change
.
type
;
const
selfType
=
pb
.
stoc_type_change
.
self_type
;
const
assertHost
=
pb
.
stoc_type_change
.
is_host
;
setIsHost
(
assertHost
);
console
.
log
(
"
STOC type changed:
"
+
t
);
if
(
assertHost
)
{
const
updatePlayer
=
(
player
:
Player
)
=>
{
player
.
isHost
=
assertHost
;
player
.
state
=
NO_READY_STATE
;
return
player
;
};
switch
(
selfType
)
{
case
ygopro
.
StocTypeChange
.
SelfType
.
PLAYER1
:
{
setPlayer0
(
updatePlayer
);
break
;
}
case
ygopro
.
StocTypeChange
.
SelfType
.
PLAYER2
:
{
setPlayer1
(
updatePlayer
);
break
;
}
default
:
{
break
;
}
}
forceUpdate
();
}
break
;
break
;
}
}
...
@@ -217,6 +241,12 @@ export default function WaitRoom() {
...
@@ -217,6 +241,12 @@ export default function WaitRoom() {
}
}
};
};
const
handleChoseStart
=
()
=>
{
if
(
ws
.
current
)
{
sendHsStart
(
ws
.
current
);
}
};
return
(
return
(
<
div
className=
"container"
>
<
div
className=
"container"
>
<
div
className=
"playerRegion"
>
<
div
className=
"playerRegion"
>
...
@@ -231,14 +261,32 @@ export default function WaitRoom() {
...
@@ -231,14 +261,32 @@ export default function WaitRoom() {
ready
ready
</
button
>
</
button
>
</
p
>
</
p
>
<
p
>
<
button
disabled=
{
!
(
isHost
&&
player0
.
state
!=
undefined
&&
player0
.
state
===
READY_STATE
&&
player1
.
state
!=
undefined
&&
player1
.
state
===
READY_STATE
)
}
onClick=
{
handleChoseStart
}
>
start
</
button
>
</
p
>
</
div
>
</
div
>
<
div
className=
"roomRegion"
>
<
div
className=
"roomRegion"
>
<
h2
>
Room Passwd:
{
passWd
}
</
h2
>
<
h2
>
Room Passwd:
{
passWd
}
</
h2
>
<
p
>
<
p
>
player0:
{
player0
.
name
}
{
player0
.
state
}
player0:
{
player0
.
isHost
==
true
?
"
[Host]
"
:
""
}
{
player0
.
name
}{
"
"
}
{
player0
.
state
}
</
p
>
</
p
>
<
p
>
<
p
>
player1:
{
player1
.
name
}
{
player1
.
state
}
player1:
{
player1
.
isHost
==
true
?
"
[Host]
"
:
""
}
{
player1
.
name
}{
"
"
}
{
player1
.
state
}
</
p
>
</
p
>
<
p
>
observer:
{
observerCount
}
</
p
>
<
p
>
observer:
{
observerCount
}
</
p
>
<
p
>
chat:
{
chat
}
</
p
>
<
p
>
chat:
{
chat
}
</
p
>
...
@@ -288,3 +336,11 @@ function sendHsReady(ws: WebSocket) {
...
@@ -288,3 +336,11 @@ function sendHsReady(ws: WebSocket) {
ws
.
send
(
hasReady
.
serialize
());
ws
.
send
(
hasReady
.
serialize
());
}
}
function
sendHsStart
(
ws
:
WebSocket
)
{
const
hasStart
=
new
ygopro
.
YgoCtosMsg
({
ctos_hs_start
:
new
ygopro
.
CtosHsStart
({})
});
ws
.
send
(
hasStart
.
serialize
());
}
src/api/idl/ocgcore.ts
View file @
f80394bd
This diff is collapsed.
Click to expand it.
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