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
124c86b4
Commit
124c86b4
authored
Aug 09, 2023
by
Chunchi Che
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix room logic
parent
08db0ada
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
50 additions
and
42 deletions
+50
-42
src/service/room/hsPlayerChange.ts
src/service/room/hsPlayerChange.ts
+17
-14
src/service/room/hsPlayerEnter.ts
src/service/room/hsPlayerEnter.ts
+6
-6
src/service/room/typeChange.ts
src/service/room/typeChange.ts
+20
-16
src/stores/roomStore.ts
src/stores/roomStore.ts
+6
-5
src/ui/WaitRoom/Chat.tsx
src/ui/WaitRoom/Chat.tsx
+1
-1
No files found.
src/service/room/hsPlayerChange.ts
View file @
124c86b4
...
@@ -15,27 +15,30 @@ export default function handleHsPlayerChange(pb: ygopro.YgoStocMsg) {
...
@@ -15,27 +15,30 @@ export default function handleHsPlayerChange(pb: ygopro.YgoStocMsg) {
}
}
case
ygopro
.
StocHsPlayerChange
.
State
.
MOVE
:
{
case
ygopro
.
StocHsPlayerChange
.
State
.
MOVE
:
{
// TODO: 这个分支可能有BUG,后面注意一下
// TODO: 这个分支可能有BUG,后面注意一下
console
.
log
(
"
Player
"
+
change
.
pos
+
"
moved to
"
+
change
.
moved_pos
);
console
.
info
(
"
<HsPlayerChange>Player
"
+
const
player
=
roomStore
.
players
.
splice
(
change
.
pos
,
1
);
change
.
pos
+
const
insertIndex
=
"
moved to
"
+
change
.
pos
>
change
.
moved_pos
change
.
moved_pos
?
change
.
moved_pos
);
:
change
.
moved_pos
-
1
;
roomStore
.
players
[
change
.
moved_pos
]
=
roomStore
.
players
[
change
.
pos
];
roomStore
.
players
.
splice
(
insertIndex
,
0
,
...
player
);
roomStore
.
players
[
change
.
pos
]
=
undefined
;
break
;
break
;
}
}
case
ygopro
.
StocHsPlayerChange
.
State
.
READY
:
case
ygopro
.
StocHsPlayerChange
.
State
.
READY
:
case
ygopro
.
StocHsPlayerChange
.
State
.
NO_READY
:
case
ygopro
.
StocHsPlayerChange
.
State
.
NO_READY
:
{
const
player
=
roomStore
.
players
[
change
.
pos
];
if
(
player
)
{
player
.
state
=
change
.
state
;
}
break
;
}
case
ygopro
.
StocHsPlayerChange
.
State
.
LEAVE
:
{
case
ygopro
.
StocHsPlayerChange
.
State
.
LEAVE
:
{
// 因为某种原因,当state为`LEAVE`的时候不能把它从`players`中去掉,
roomStore
.
players
[
change
.
pos
]
=
undefined
;
// 只能修改状态然后UI上做特化处理
roomStore
.
players
[
change
.
pos
].
state
=
change
.
state
;
break
;
break
;
}
}
case
ygopro
.
StocHsPlayerChange
.
State
.
TO_OBSERVER
:
{
case
ygopro
.
StocHsPlayerChange
.
State
.
TO_OBSERVER
:
{
roomStore
.
players
.
splice
(
change
.
pos
,
1
)
;
roomStore
.
players
[
change
.
pos
]
=
undefined
;
roomStore
.
observerCount
+=
1
;
roomStore
.
observerCount
+=
1
;
break
;
break
;
}
}
...
...
src/service/room/hsPlayerEnter.ts
View file @
124c86b4
...
@@ -5,14 +5,14 @@ export default function handleHsPlayerEnter(pb: ygopro.YgoStocMsg) {
...
@@ -5,14 +5,14 @@ export default function handleHsPlayerEnter(pb: ygopro.YgoStocMsg) {
const
name
=
pb
.
stoc_hs_player_enter
.
name
;
const
name
=
pb
.
stoc_hs_player_enter
.
name
;
const
pos
=
pb
.
stoc_hs_player_enter
.
pos
;
const
pos
=
pb
.
stoc_hs_player_enter
.
pos
;
if
(
pos
>
1
)
{
const
player
=
roomStore
.
players
[
pos
];
console
.
log
(
"
Currently only supported 2v2 mode.
"
);
}
else
if
(
pos
<
roomStore
.
players
.
length
)
{
if
(
player
)
{
roomStore
.
players
[
pos
]
.
name
=
name
;
player
.
name
=
name
;
}
else
{
}
else
{
roomStore
.
players
.
push
(
{
roomStore
.
players
[
pos
]
=
{
name
,
name
,
state
:
ygopro
.
StocHsPlayerChange
.
State
.
NO_READY
,
state
:
ygopro
.
StocHsPlayerChange
.
State
.
NO_READY
,
}
)
;
};
}
}
}
}
src/service/room/typeChange.ts
View file @
124c86b4
...
@@ -9,25 +9,29 @@ export default function handleTypeChange(pb: ygopro.YgoStocMsg) {
...
@@ -9,25 +9,29 @@ export default function handleTypeChange(pb: ygopro.YgoStocMsg) {
roomStore
.
isHost
=
assertHost
;
roomStore
.
isHost
=
assertHost
;
roomStore
.
selfType
=
selfType
;
roomStore
.
selfType
=
selfType
;
if
(
assertHost
)
{
switch
(
selfType
)
{
switch
(
selfType
)
{
case
SelfType
.
UNKNOWN
:
{
case
SelfType
.
UNKNOWN
:
{
console
.
warn
(
"
<HandleTypeChange>selfType is UNKNOWN
"
);
console
.
warn
(
"
<HandleTypeChange>selfType is UNKNOWN
"
);
break
;
break
;
}
}
case
SelfType
.
OBSERVER
:
{
case
SelfType
.
OBSERVER
:
{
roomStore
.
players
.
forEach
((
player
)
=>
{
break
;
}
default
:
{
const
player
=
roomStore
.
players
[
selfType
-
1
];
const
state
=
ygopro
.
StocHsPlayerChange
.
State
.
NO_READY
;
if
(
player
)
{
if
(
player
)
{
player
.
state
=
state
;
player
.
isMe
=
false
;
}
else
{
roomStore
.
players
.
push
({
name
:
"
?
"
,
state
});
}
}
break
;
});
break
;
}
default
:
{
const
player
=
roomStore
.
players
[
selfType
-
1
];
const
state
=
ygopro
.
StocHsPlayerChange
.
State
.
NO_READY
;
if
(
player
)
{
player
.
state
=
state
;
player
.
isMe
=
true
;
}
else
{
roomStore
.
players
[
selfType
-
1
]
=
{
name
:
"
?
"
,
state
,
isMe
:
true
};
}
}
break
;
}
}
}
}
}
}
src/stores/roomStore.ts
View file @
124c86b4
...
@@ -11,6 +11,7 @@ export interface Player {
...
@@ -11,6 +11,7 @@ export interface Player {
name
:
string
;
// 玩家的昵称
name
:
string
;
// 玩家的昵称
state
:
StocHsPlayerChange
.
State
;
// 玩家当前状态
state
:
StocHsPlayerChange
.
State
;
// 玩家当前状态
moraResult
?:
HandType
;
// 玩家的猜拳结果
moraResult
?:
HandType
;
// 玩家的猜拳结果
isMe
?:
boolean
;
deckInfo
?:
DeckInfo
;
deckInfo
?:
DeckInfo
;
}
}
...
@@ -34,7 +35,9 @@ export enum RoomStage {
...
@@ -34,7 +35,9 @@ export enum RoomStage {
class
RoomStore
implements
NeosStore
{
class
RoomStore
implements
NeosStore
{
joined
:
boolean
=
false
;
// 是否已经加入房间
joined
:
boolean
=
false
;
// 是否已经加入房间
players
:
Player
[]
=
[];
// 进入房间的玩家列表
players
:
(
Player
|
undefined
)[]
=
Array
.
from
({
length
:
4
}).
map
(
(
_
)
=>
undefined
);
// 进入房间的玩家列表
observerCount
:
number
=
0
;
// 观战者数量
observerCount
:
number
=
0
;
// 观战者数量
isHost
:
boolean
=
false
;
// 当前玩家是否是房主
isHost
:
boolean
=
false
;
// 当前玩家是否是房主
selfType
:
SelfType
=
0
;
// 当前玩家的类型
selfType
:
SelfType
=
0
;
// 当前玩家的类型
...
@@ -42,12 +45,10 @@ class RoomStore implements NeosStore {
...
@@ -42,12 +45,10 @@ class RoomStore implements NeosStore {
stage
:
RoomStage
=
RoomStage
.
WAITING
;
stage
:
RoomStage
=
RoomStage
.
WAITING
;
getMePlayer
()
{
getMePlayer
()
{
if
(
this
.
selfType
==
SelfType
.
PLAYER1
)
return
this
.
players
.
at
(
0
);
return
this
.
players
.
find
((
player
)
=>
player
?.
isMe
);
return
this
.
players
.
at
(
1
);
}
}
getOpPlayer
()
{
getOpPlayer
()
{
if
(
this
.
selfType
==
SelfType
.
PLAYER1
)
return
this
.
players
.
at
(
1
);
return
this
.
players
.
find
((
player
)
=>
player
!==
undefined
&&
!
player
.
isMe
);
return
this
.
players
.
at
(
0
);
}
}
reset
():
void
{
reset
():
void
{
...
...
src/ui/WaitRoom/Chat.tsx
View file @
124c86b4
...
@@ -25,7 +25,7 @@ export const Chat: React.FC = () => {
...
@@ -25,7 +25,7 @@ export const Chat: React.FC = () => {
const
sender
=
chatStore
.
sender
;
const
sender
=
chatStore
.
sender
;
const
name
=
const
name
=
sender
<
roomStore
.
players
.
length
sender
<
roomStore
.
players
.
length
?
roomStore
.
players
[
sender
]
.
name
?
roomStore
.
players
[
sender
]
?.
name
??
"
?
"
:
(
sender
>
8
&&
sender
<
11
)
||
sender
>
19
:
(
sender
>
8
&&
sender
<
11
)
||
sender
>
19
?
"
?
"
?
"
?
"
:
"
System
"
;
:
"
System
"
;
...
...
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