本文整理匯總了Golang中github.com/gemrs/gem/gem/game/interface/player.Player.SetDecodeFunc方法的典型用法代碼示例。如果您正苦於以下問題:Golang Player.SetDecodeFunc方法的具體用法?Golang Player.SetDecodeFunc怎麽用?Golang Player.SetDecodeFunc使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/gemrs/gem/gem/game/interface/player.Player
的用法示例。
在下文中一共展示了Player.SetDecodeFunc方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: doLogin
// doLogin authenticates the user, sends the login response, and sets up the client for standard packet processing
func (svc *GameService) doLogin(client player.Player, username, password string) error {
profile, responseCode := svc.auth.LookupProfile(username, password)
if responseCode != auth.AuthOkay {
client.Conn().Write <- &game_protocol.OutboundLoginResponseUnsuccessful{
Response: encoding.Uint8(responseCode),
}
client.Conn().Disconnect()
return nil
}
client.SetProfile(profile.(player.Profile))
// Successful login, do all the stuff
client.Conn().Write <- &game_protocol.OutboundLoginResponse{
Response: encoding.Uint8(responseCode),
Rights: encoding.Uint8(client.Profile().Rights()),
Flagged: 0,
}
client.SetDecodeFunc(svc.decodePacket)
go svc.packetConsumer(client)
game_event.PlayerLogin.NotifyObservers(client)
client.LoadProfile()
game_event.PlayerFinishLogin.NotifyObservers(client)
go func() {
client.Conn().WaitForDisconnect()
game_event.PlayerLogout.NotifyObservers(client)
}()
return nil
}
示例2: decodeLoginBlock
// decodeLoginBlock handles the unencrypted login block
func (svc *GameService) decodeLoginBlock(client player.Player) error {
loginBlock := game_protocol.InboundLoginBlock{}
if err := loginBlock.Decode(client.Conn().ReadBuffer, nil); err != nil {
return err
}
expectedSecureBlockSize := int(loginBlock.LoginLen) - ((9 * 4) + 1 + 1 + 1 + 2)
if expectedSecureBlockSize != int(loginBlock.SecureBlockSize) {
client.Log().Error("Secure block size mismatch: got %v expected %v", loginBlock.SecureBlockSize, expectedSecureBlockSize)
client.Conn().Disconnect()
}
client.SetSecureBlockSize(int(loginBlock.SecureBlockSize))
client.SetDecodeFunc(svc.decodeSecureBlock)
return nil
}
示例3: handshake
// handshake performs the isaac key exchange
func (svc *GameService) handshake(client player.Player) error {
serverSeed := client.ServerISAACSeed()
handshake := protocol.InboundGameHandshake{}
if err := handshake.Decode(client.Conn().ReadBuffer, nil); err != nil {
return err
}
client.Conn().Write <- &protocol.OutboundGameHandshake{
ServerISAACSeed: [2]encoding.Uint32{
encoding.Uint32(serverSeed[0]), encoding.Uint32(serverSeed[1]),
},
}
client.SetDecodeFunc(svc.decodeLoginBlock)
return nil
}