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
23ff98cf
Commit
23ff98cf
authored
Jan 14, 2023
by
chechunchi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add penetrate but remain bug
parent
26ff2f20
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
164 additions
and
73 deletions
+164
-73
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
+77
-73
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.json
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.json
+23
-0
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.ts
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.ts
+64
-0
No files found.
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
View file @
23ff98cf
...
...
@@ -19,6 +19,7 @@ import MsgSelectChainAdapter from "./selectChain";
import
MsgSelectEffectYnAdapter
from
"
./selectEffectYn
"
;
import
MsgSelectPositionAdapter
from
"
./selectPosition
"
;
import
MsgSelectOptionAdapter
from
"
./selectOption
"
;
import
{
penetrate
}
from
"
./penetrate
"
;
/*
* STOC GameMsg
...
...
@@ -41,83 +42,86 @@ export default class GameMsgAdapter implements StocAdapter {
const
func
=
dataView
.
getUint8
(
0
);
const
gameData
=
exData
.
slice
(
1
);
const
gameMsg
=
new
ygopro
.
StocGameMessage
({});
switch
(
func
)
{
case
GAME_MSG
.
MSG_START
:
{
gameMsg
.
start
=
MsgStartAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_DRAW
:
{
gameMsg
.
draw
=
MsgDrawAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_NEW_TURN
:
{
gameMsg
.
new_turn
=
MsgNewTurnAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_NEW_PHASE
:
{
gameMsg
.
new_phase
=
MsgNewPhaseAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_HINT
:
{
gameMsg
.
hint
=
MsgHintAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_IDLE_CMD
:
{
gameMsg
.
select_idle_cmd
=
MsgSelectIdleCmdAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_PLACE
:
{
gameMsg
.
select_place
=
MsgSelectPlaceAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_MOVE
:
{
gameMsg
.
move
=
MsgMoveAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_CARD
:
{
gameMsg
.
select_card
=
MsgSelectCardAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_CHAIN
:
{
gameMsg
.
select_chain
=
MsgSelectChainAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_EFFECTYN
:
{
gameMsg
.
select_effect_yn
=
MsgSelectEffectYnAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_POSITION
:
{
gameMsg
.
select_position
=
MsgSelectPositionAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_OPTION
:
{
gameMsg
.
select_option
=
MsgSelectOptionAdapter
(
gameData
);
break
;
}
default
:
{
console
.
log
(
"
Unhandled GameMessage function=
"
,
func
);
break
;
let
gameMsg
:
any
=
new
ygopro
.
StocGameMessage
({}).
toObject
();
if
(
!
penetrate
(
func
,
gameMsg
,
gameData
))
{
switch
(
func
)
{
case
GAME_MSG
.
MSG_START
:
{
gameMsg
.
start
=
MsgStartAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_DRAW
:
{
gameMsg
.
draw
=
MsgDrawAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_NEW_TURN
:
{
gameMsg
.
new_turn
=
MsgNewTurnAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_NEW_PHASE
:
{
gameMsg
.
new_phase
=
MsgNewPhaseAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_HINT
:
{
gameMsg
.
hint
=
MsgHintAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_IDLE_CMD
:
{
gameMsg
.
select_idle_cmd
=
MsgSelectIdleCmdAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_PLACE
:
{
gameMsg
.
select_place
=
MsgSelectPlaceAdapter
(
gameData
);
break
;
}
// case GAME_MSG.MSG_MOVE: {
// // gameMsg.move = MsgMoveAdapter(gameData);
// gameMsg["move"] = MsgMoveAdapter(gameData);
//
// break;
// }
case
GAME_MSG
.
MSG_SELECT_CARD
:
{
gameMsg
.
select_card
=
MsgSelectCardAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_CHAIN
:
{
gameMsg
.
select_chain
=
MsgSelectChainAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_EFFECTYN
:
{
gameMsg
.
select_effect_yn
=
MsgSelectEffectYnAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_POSITION
:
{
gameMsg
.
select_position
=
MsgSelectPositionAdapter
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_SELECT_OPTION
:
{
gameMsg
.
select_option
=
MsgSelectOptionAdapter
(
gameData
);
break
;
}
default
:
{
console
.
log
(
"
Unhandled GameMessage function=
"
,
func
);
break
;
}
}
}
return
new
ygopro
.
YgoStocMsg
({
stoc_game_msg
:
gameMsg
,
stoc_game_msg
:
new
ygopro
.
StocGameMessage
(
gameMsg
)
,
});
}
}
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.json
0 → 100644
View file @
23ff98cf
{
"50"
:
{
"protoType"
:
"move"
,
"fields"
:
[
{
"fieldName"
:
"code"
,
"fieldType"
:
"uint32"
},
{
"fieldName"
:
"from"
,
"fieldType"
:
"CardLocation"
},
{
"fieldName"
:
"to"
,
"fieldType"
:
"CardLocation"
},
{
"fieldName"
:
"reason"
,
"fieldType"
:
"uint8"
}
]
}
}
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.ts
0 → 100644
View file @
23ff98cf
//! 透传协议
import
PenetrateData
from
"
./penetrate.json
"
;
import
{
BufferReader
}
from
"
../../bufferIO
"
;
export
interface
penetrateType
{
protoType
:
string
;
fields
:
{
fieldName
:
string
;
fieldType
:
string
;
}[];
}
const
PenetrateConfig
=
_objToMap
(
PenetrateData
);
export
function
penetrate
(
msgKey
:
number
,
gameMsg
:
any
,
gameData
:
Uint8Array
):
boolean
{
const
config
=
PenetrateConfig
.
get
(
msgKey
.
toString
());
const
reader
=
new
BufferReader
(
gameData
,
true
);
if
(
config
)
{
const
protoType
=
config
.
protoType
;
const
fields
=
config
.
fields
;
let
obj
:
any
=
{};
for
(
let
field
of
fields
)
{
obj
[
field
.
fieldName
]
=
readField
(
reader
,
field
.
fieldType
);
}
gameMsg
[
protoType
]
=
obj
;
}
return
config
?
true
:
false
;
}
function
_objToMap
(
obj
:
any
):
Map
<
string
,
penetrateType
>
{
let
map
=
new
Map
();
for
(
let
key
of
Object
.
keys
(
obj
))
{
map
.
set
(
key
,
obj
[
key
]);
}
return
map
;
}
function
readField
(
reader
:
BufferReader
,
fieldType
:
string
):
any
{
switch
(
fieldType
)
{
case
"
uint8
"
:
{
return
reader
.
readUint8
();
}
case
"
uint32
"
:
{
return
reader
.
readUint32
();
}
case
"
CardLocation
"
:
{
return
reader
.
readCardLocation
();
}
default
:
{
return
undefined
;
}
}
}
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