Refactor: handshake composer

This commit is contained in:
kayos@tcp.direct 2022-01-08 16:49:38 -08:00
parent 477c6a30c0
commit 2478b74137
2 changed files with 42 additions and 34 deletions

View File

@ -6,17 +6,19 @@ import (
"github.com/yunginnanet/habbgo/protocol/packets"
)
type Param uint8
const ( // Used in ComposeSessionParams
registerCoppa = 0 // toggle conf_coppa or conf_strong_coppa_req by setting value > 0 or > 1
voucherEnabled = 1 // Enables in-game vouchers when value is set > 0
registerRequireParentEmail = 2 // Requires parent email when registering if value is set > 0
registerSendParentEmail = 3 // conf_parent_email_request_reregistration
allowDirectMail = 4 // conf_allow_direct_mail
dateFormat = 5 // Sets the date formatter used across the client
partnerIntegrationEnabled = 6 // conf_partner_integration. Value is either 1 or 0 (enabled or disabled)
allowProfileEditing = 7 // Enables the in-game profile editor
trackingHeader = 8 // tracking_header - used in stats.tracking.javascript(?)
tutorialEnabled = 9 // Enables the in-game tutorial when value is set to 1 and disables it when 0
registerCoppa Param = iota // toggle conf_coppa or conf_strong_coppa_req by setting value > 0 or > 1
voucherEnabled // Enables in-game vouchers when value is set > 0
registerRequireParentEmail // Requires parent email when registering if value is set > 0
registerSendParentEmail // conf_parent_email_request_reregistration
allowDirectMail // conf_allow_direct_mail
dateFormat // Sets the date formatter used across the client
partnerIntegrationEnabled // conf_partner_integration. Value is either 1 or 0 (enabled or disabled)
allowProfileEditing // Enables the in-game profile editor
trackingHeader // tracking_header - used in stats.tracking.javascript(?)
tutorialEnabled // Enables the in-game tutorial when value is set to 1 and disables it when 0
)
type headerID int
@ -49,7 +51,7 @@ func ComposeEndCrypto() *packets.OutgoingPacket {
func ComposeSessionParams() *packets.OutgoingPacket {
packet := packets.NewOutgoing(headerID(257)) // Base64 Header DA
params := make(map[int]string, 9)
params := make(map[Param]string, 9)
params[voucherEnabled] = strconv.Itoa(0) // TODO create config to enable if vouchers are enabled
params[registerRequireParentEmail] = strconv.Itoa(0)
params[registerSendParentEmail] = strconv.Itoa(0)
@ -63,10 +65,9 @@ func ComposeSessionParams() *packets.OutgoingPacket {
packet.WriteInt(len(params))
for i, v := range params {
packet.WriteInt(i)
packet.WriteInt(int(i))
if isNumber(v) {
num, _ := strconv.Atoi(v)
if num := isNumber(v); num != -1 {
packet.WriteInt(num)
} else {
packet.WriteString(v)
@ -87,10 +88,10 @@ func ComposeLoginOk() *packets.OutgoingPacket {
return packet
}
func isNumber(s string) bool {
if _, err := strconv.Atoi(s); err == nil {
return true
func isNumber(s string) int {
if num, err := strconv.Atoi(s); err == nil {
return num
}
return false
return -1
}

View File

@ -5,13 +5,20 @@ import (
"strings"
navigator2 "github.com/yunginnanet/habbgo/game/navigator"
room2 "github.com/yunginnanet/habbgo/game/room"
"github.com/yunginnanet/habbgo/game/room"
"github.com/yunginnanet/habbgo/models"
"github.com/yunginnanet/habbgo/protocol/packets"
)
func ComposeNavNodeInfo(player models.Player, cat *navigator2.Category, nodeMask bool, subcats []*navigator2.Category,
rooms []*room2.Room, currentVisitors int, maxVisitors int) *packets.OutgoingPacket {
func ComposeNavNodeInfo(
player models.Player,
cat *navigator2.Category,
nodeMask bool,
subcats []*navigator2.Category,
rooms []*room.Room,
currentVisitors, maxVisitors int,
) *packets.OutgoingPacket {
p := packets.NewOutgoing(headerID(220)) // Base64 Header C\
p.WriteBool(nodeMask) // hideCategory
@ -43,18 +50,18 @@ func ComposeNavNodeInfo(player models.Player, cat *navigator2.Category, nodeMask
door, _ = strconv.Atoi(data[1])
}
p.WriteInt(r.Details.Id + room2.PublicRoomOffset) // writeInt roomId
p.WriteInt(1) // writeInt 1
p.WriteString(r.Details.Name) // writeString roomName
p.WriteInt(r.Details.CurrentVisitors) // writeInt currentVisitors
p.WriteInt(r.Details.MaxVisitors) // writeInt maxVisitors
p.WriteInt(r.Details.CatId) // writeInt catId
p.WriteString(desc) // writeString roomDesc
p.WriteInt(r.Details.Id) // writeInt roomId
p.WriteInt(door) // writeInt door
p.WriteString(r.Details.CCTs) // writeString roomCCTs
p.WriteInt(0) // writeInt 0
p.WriteInt(1) // writeInt 1
p.WriteInt(r.Details.Id + room.PublicRoomOffset) // writeInt roomId
p.WriteInt(1) // writeInt 1
p.WriteString(r.Details.Name) // writeString roomName
p.WriteInt(r.Details.CurrentVisitors) // writeInt currentVisitors
p.WriteInt(r.Details.MaxVisitors) // writeInt maxVisitors
p.WriteInt(r.Details.CatId) // writeInt catId
p.WriteString(desc) // writeString roomDesc
p.WriteInt(r.Details.Id) // writeInt roomId
p.WriteInt(door) // writeInt door
p.WriteString(r.Details.CCTs) // writeString roomCCTs
p.WriteInt(0) // writeInt 0
p.WriteInt(1) // writeInt 1
} else {
p.WriteInt(r.Details.Id)
p.WriteString(r.Details.Name)
@ -66,7 +73,7 @@ func ComposeNavNodeInfo(player models.Player, cat *navigator2.Category, nodeMask
p.WriteString("-")
}
p.WriteString(room2.AccessType(r.Details.AccessType))
p.WriteString(room.AccessType(r.Details.AccessType))
p.WriteInt(r.Details.CurrentVisitors)
p.WriteInt(r.Details.MaxVisitors)
p.WriteString(r.Details.Desc)