Commit 4d91f8af authored by Chunchi Che's avatar Chunchi Che Committed by GitHub

Merge pull request #8 from DarkNeos/dev

Dev
parents 88b353f8 cb02e0b4
...@@ -13,3 +13,6 @@ ...@@ -13,3 +13,6 @@
# Dependency directories (remove the comment below to include it) # Dependency directories (remove the comment below to include it)
# vendor/ # vendor/
# product
ygopro-proxy
...@@ -92,9 +92,9 @@ func Transform(src []byte, tranformType int) ([]byte, error) { ...@@ -92,9 +92,9 @@ func Transform(src []byte, tranformType int) ([]byte, error) {
var packet YgoPacket var packet YgoPacket
switch message.Msg.(type) { switch message.Msg.(type) {
case *(ygopropb.YgoCtosMsg_CtosPlayerInfo): case *(ygopropb.YgoCtosMsg_CtosPlayerInfo):
packet = transformPlayerInfo(message.GetCtosPlayerInfo()) packet = (*pCtosPlayerInfo)(message.GetCtosPlayerInfo()).Pb2Packet()
case *(ygopropb.YgoCtosMsg_CtosJoinGame): case *(ygopropb.YgoCtosMsg_CtosJoinGame):
packet = transformJoinGame(message.GetCtosJoinGame()) packet = (*pCtosJoinGame)(message.GetCtosJoinGame()).Pb2Packet()
default: default:
return nil, errors.New("Unhandled YgoCtosMsg type") return nil, errors.New("Unhandled YgoCtosMsg type")
} }
...@@ -110,15 +110,9 @@ func Transform(src []byte, tranformType int) ([]byte, error) { ...@@ -110,15 +110,9 @@ func Transform(src []byte, tranformType int) ([]byte, error) {
var pb ygopropb.YgoStocMsg var pb ygopropb.YgoStocMsg
switch packet.Proto { switch packet.Proto {
case StocChat: case StocChat:
msg := transformChat(packet) pb = pStocChat{}.Packet2Pb(packet)
pb = ygopropb.YgoStocMsg{
Msg: &msg,
}
case StocJoinGame: case StocJoinGame:
msg := transformJoinGame_(packet) pb = pStocJoinGame{}.Packet2Pb(packet)
pb = ygopropb.YgoStocMsg{
Msg: &msg,
}
default: default:
return nil, errors.New(fmt.Sprintf("Unhandled YgoStocMsg type, proto=%d", packet.Proto)) return nil, errors.New(fmt.Sprintf("Unhandled YgoStocMsg type, proto=%d", packet.Proto))
} }
...@@ -131,8 +125,14 @@ func Transform(src []byte, tranformType int) ([]byte, error) { ...@@ -131,8 +125,14 @@ func Transform(src []byte, tranformType int) ([]byte, error) {
// +++++ Client To Server +++++ // +++++ Client To Server +++++
type client2Server interface {
Pb2Packet() YgoPacket
}
type pCtosPlayerInfo ygopropb.CtosPlayerInfo
// @Name: [20]uint16 // @Name: [20]uint16
func transformPlayerInfo(pb *ygopropb.CtosPlayerInfo) YgoPacket { func (pb *pCtosPlayerInfo) Pb2Packet() YgoPacket {
buf := strToUtf16Buffer(pb.Name) buf := strToUtf16Buffer(pb.Name)
exdata := uint16BufToByteBuf(buf) exdata := uint16BufToByteBuf(buf)
...@@ -143,10 +143,12 @@ func transformPlayerInfo(pb *ygopropb.CtosPlayerInfo) YgoPacket { ...@@ -143,10 +143,12 @@ func transformPlayerInfo(pb *ygopropb.CtosPlayerInfo) YgoPacket {
} }
} }
type pCtosJoinGame ygopropb.CtosJoinGame
// @Version: uint16 // @Version: uint16
// @Gameid: uint32 // @Gameid: uint32
// @Passwd: [20]uint16 // @Passwd: [20]uint16
func transformJoinGame(pb *ygopropb.CtosJoinGame) YgoPacket { func (pb *pCtosJoinGame) Pb2Packet() YgoPacket {
exdata := make([]byte, 0) exdata := make([]byte, 0)
version := uint16(pb.Version) version := uint16(pb.Version)
...@@ -167,20 +169,32 @@ func transformJoinGame(pb *ygopropb.CtosJoinGame) YgoPacket { ...@@ -167,20 +169,32 @@ func transformJoinGame(pb *ygopropb.CtosJoinGame) YgoPacket {
// +++++ Server To Client +++++ // +++++ Server To Client +++++
type server2Client interface {
Packet2Pb(pkt YgoPacket) ygopropb.YgoStocMsg
}
type pStocChat struct{}
// @player: uint16 // @player: uint16
// @message: []uint16 // @message: []uint16
func transformChat(pkt YgoPacket) ygopropb.YgoStocMsg_StocChat { func (_ pStocChat) Packet2Pb(pkt YgoPacket) ygopropb.YgoStocMsg {
player := int32(binary.LittleEndian.Uint16(pkt.Exdata)) player := int32(binary.LittleEndian.Uint16(pkt.Exdata))
message := utf16BufferToStr(pkt.Exdata[2:]) message := utf16BufferToStr(pkt.Exdata[2:])
return ygopropb.YgoStocMsg_StocChat{ msg := ygopropb.YgoStocMsg_StocChat{
StocChat: &ygopropb.StocChat{ StocChat: &ygopropb.StocChat{
Player: player, Player: player,
Msg: message, Msg: message,
}, },
} }
return ygopropb.YgoStocMsg{
Msg: &msg,
}
} }
type pStocJoinGame struct{}
// @lflist: uint32 // @lflist: uint32
// @rule: uint8 // @rule: uint8
// @mode: uint8 // @mode: uint8
...@@ -191,7 +205,7 @@ func transformChat(pkt YgoPacket) ygopropb.YgoStocMsg_StocChat { ...@@ -191,7 +205,7 @@ func transformChat(pkt YgoPacket) ygopropb.YgoStocMsg_StocChat {
// @start_hand: uint8 // @start_hand: uint8
// @draw_count: uint8 // @draw_count: uint8
// @time_limit: uint16 // @time_limit: uint16
func transformJoinGame_(pkt YgoPacket) ygopropb.YgoStocMsg_StocJoinGame { func (_ pStocJoinGame) Packet2Pb(pkt YgoPacket) ygopropb.YgoStocMsg {
hostInfo := HostInfo{} hostInfo := HostInfo{}
exData := bytes.NewBuffer(pkt.Exdata) exData := bytes.NewBuffer(pkt.Exdata)
...@@ -199,7 +213,7 @@ func transformJoinGame_(pkt YgoPacket) ygopropb.YgoStocMsg_StocJoinGame { ...@@ -199,7 +213,7 @@ func transformJoinGame_(pkt YgoPacket) ygopropb.YgoStocMsg_StocJoinGame {
log.Fatal(err) log.Fatal(err)
} }
return ygopropb.YgoStocMsg_StocJoinGame{ msg := ygopropb.YgoStocMsg_StocJoinGame{
StocJoinGame: &ygopropb.StocJoinGame{ StocJoinGame: &ygopropb.StocJoinGame{
Lflist: int32(hostInfo.Lflist), Lflist: int32(hostInfo.Lflist),
Rule: int32(hostInfo.Rule), Rule: int32(hostInfo.Rule),
...@@ -213,6 +227,10 @@ func transformJoinGame_(pkt YgoPacket) ygopropb.YgoStocMsg_StocJoinGame { ...@@ -213,6 +227,10 @@ func transformJoinGame_(pkt YgoPacket) ygopropb.YgoStocMsg_StocJoinGame {
TimeLimit: int32(hostInfo.TimeLimit), TimeLimit: int32(hostInfo.TimeLimit),
}, },
} }
return ygopropb.YgoStocMsg{
Msg: &msg,
}
} }
// +++++ Util Functions +++++ // +++++ Util Functions +++++
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment