mirror of
https://github.com/PretendoNetwork/friends.git
synced 2026-04-24 23:07:13 -05:00
Added UpdatePresence (WiiU)
This commit is contained in:
parent
5f2eb4191f
commit
e922803321
|
|
@ -300,8 +300,6 @@ func getUserFriendList(pid uint32) []*nexproto.FriendInfo {
|
|||
log.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Println(lastOnlineTime)
|
||||
|
||||
lastOnline = nex.NewDateTime(lastOnlineTime) // TODO: Change this
|
||||
}
|
||||
|
||||
|
|
|
|||
3
main.go
3
main.go
|
|
@ -57,6 +57,7 @@ func main() {
|
|||
friendsServer.AddFriendRequest(addFriendRequest)
|
||||
friendsServer.AcceptFriendRequest(acceptFriendRequest)
|
||||
friendsServer.MarkFriendRequestsAsReceived(markFriendRequestsAsReceived)
|
||||
friendsServer.UpdatePresence(updatePresenceWiiU)
|
||||
friendsServer.UpdatePreference(updatePreferenceWiiU)
|
||||
friendsServer.GetBasicInfo(getBasicInfo)
|
||||
friendsServer.DeletePersistentNotification(deletePersistentNotification)
|
||||
|
|
@ -68,7 +69,7 @@ func main() {
|
|||
friends3DSServer.UpdateMii(updateMii)
|
||||
friends3DSServer.UpdatePreference(updatePreference3DS)
|
||||
friends3DSServer.SyncFriend(syncFriend)
|
||||
friends3DSServer.UpdatePresence(updatePresence)
|
||||
friends3DSServer.UpdatePresence(updatePresence3DS)
|
||||
friends3DSServer.UpdateFavoriteGameKey(updateFavoriteGameKey)
|
||||
friends3DSServer.UpdateComment(updateComment)
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ func updateAndGetAllInformation(err error, client *nex.Client, callID uint32, nn
|
|||
|
||||
updateNNAInfo(nnaInfo)
|
||||
updateNintendoPresenceV2(presence)
|
||||
go sendUpdatePresenceWiiUNotifications(presence)
|
||||
|
||||
// Get user information
|
||||
pid := client.PID()
|
||||
|
|
@ -35,82 +36,6 @@ func updateAndGetAllInformation(err error, client *nex.Client, callID uint32, nn
|
|||
|
||||
rmcResponseStream.WriteStructure(principalPreference)
|
||||
rmcResponseStream.WriteStructure(comment)
|
||||
|
||||
/*
|
||||
//List<FriendInfo>
|
||||
friendList := make([]nex.StructureInterface, 0, 1)
|
||||
|
||||
friend := nexproto.NewFriendInfo()
|
||||
|
||||
friend.NNAInfo = nexproto.NewNNAInfo()
|
||||
friend.Presence = nexproto.NewNintendoPresenceV2()
|
||||
friend.Status = nexproto.NewComment()
|
||||
friend.BecameFriend = nex.NewDateTime(0)
|
||||
friend.LastOnline = nex.NewDateTime(0)
|
||||
friend.Unknown = 0
|
||||
|
||||
friend.NNAInfo.PrincipalBasicInfo = nexproto.NewPrincipalBasicInfo()
|
||||
friend.NNAInfo.Unknown1 = 0
|
||||
friend.NNAInfo.Unknown2 = 0
|
||||
|
||||
friend.NNAInfo.PrincipalBasicInfo.PID = 1743126339
|
||||
friend.NNAInfo.PrincipalBasicInfo.NNID = "bells1998"
|
||||
friend.NNAInfo.PrincipalBasicInfo.Mii = nexproto.NewMiiV2()
|
||||
friend.NNAInfo.PrincipalBasicInfo.Unknown = 0
|
||||
|
||||
friend.NNAInfo.PrincipalBasicInfo.Mii.Name = "bella"
|
||||
friend.NNAInfo.PrincipalBasicInfo.Mii.Unknown1 = 0
|
||||
friend.NNAInfo.PrincipalBasicInfo.Mii.Unknown2 = 0
|
||||
friend.NNAInfo.PrincipalBasicInfo.Mii.Data = []byte{
|
||||
0x03, 0x00, 0x00, 0x40, 0xE9, 0x55, 0xA2, 0x09,
|
||||
0xE7, 0xC7, 0x41, 0x82, 0xD9, 0x7D, 0x0B, 0x2D,
|
||||
0x03, 0xB3, 0xB8, 0x8D, 0x27, 0xD9, 0x00, 0x00,
|
||||
0x01, 0x40, 0x62, 0x00, 0x65, 0x00, 0x6C, 0x00,
|
||||
0x6C, 0x00, 0x61, 0x00, 0x00, 0x00, 0x45, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40,
|
||||
0x12, 0x00, 0x81, 0x01, 0x04, 0x68, 0x43, 0x18,
|
||||
0x20, 0x34, 0x46, 0x14, 0x81, 0x12, 0x17, 0x68,
|
||||
0x0D, 0x00, 0x00, 0x29, 0x03, 0x52, 0x48, 0x50,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x86,
|
||||
}
|
||||
friend.NNAInfo.PrincipalBasicInfo.Mii.Datetime = nex.NewDateTime(0)
|
||||
|
||||
friend.Presence.ChangedFlags = 0x1EE
|
||||
friend.Presence.Online = true
|
||||
friend.Presence.GameKey = nexproto.NewGameKey()
|
||||
friend.Presence.Unknown1 = 0
|
||||
friend.Presence.Message = "Testing"
|
||||
//friend.Presence.Unknown2 = 2
|
||||
friend.Presence.Unknown2 = 0
|
||||
//friend.Presence.Unknown3 = 2
|
||||
friend.Presence.Unknown3 = 0
|
||||
//friend.Presence.GameServerID = 0x1010EB00
|
||||
friend.Presence.GameServerID = 0
|
||||
//friend.Presence.Unknown4 = 3
|
||||
friend.Presence.Unknown4 = 0
|
||||
friend.Presence.PID = 1743126339
|
||||
//friend.Presence.GatheringID = 1743126339 // test fake ID
|
||||
friend.Presence.GatheringID = 0
|
||||
//friend.Presence.ApplicationData, _ = hex.DecodeString("0000200300000000000000001843ffe567000000")
|
||||
friend.Presence.ApplicationData = []byte{0x0}
|
||||
friend.Presence.Unknown5 = 0
|
||||
friend.Presence.Unknown6 = 0
|
||||
friend.Presence.Unknown7 = 0
|
||||
|
||||
//friend.Presence.GameKey.TitleID = 0x000500001010EC00
|
||||
friend.Presence.GameKey.TitleID = 0
|
||||
//friend.Presence.GameKey.TitleVersion = 64
|
||||
friend.Presence.GameKey.TitleVersion = 0
|
||||
|
||||
friend.Status.Unknown = 0
|
||||
friend.Status.Contents = "test"
|
||||
friend.Status.LastChanged = nex.NewDateTime(0)
|
||||
|
||||
friendList = append(friendList, friend)
|
||||
*/
|
||||
|
||||
rmcResponseStream.WriteListStructure(friendList)
|
||||
rmcResponseStream.WriteListStructure(friendRequestsOut)
|
||||
rmcResponseStream.WriteListStructure(friendRequestsIn)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
nexproto "github.com/PretendoNetwork/nex-protocols-go"
|
||||
)
|
||||
|
||||
func updatePresence(err error, client *nex.Client, callID uint32, presense *nexproto.NintendoPresence, unknown bool) {
|
||||
func updatePresence3DS(err error, client *nex.Client, callID uint32, presence *nexproto.NintendoPresence, unknown bool) {
|
||||
// TODO: Do something with this
|
||||
|
||||
rmcResponse := nex.NewRMCResponse(nexproto.Friends3DSProtocolID, callID)
|
||||
74
update_presence_wiiu.go
Normal file
74
update_presence_wiiu.go
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
nex "github.com/PretendoNetwork/nex-go"
|
||||
nexproto "github.com/PretendoNetwork/nex-protocols-go"
|
||||
)
|
||||
|
||||
func updatePresenceWiiU(err error, client *nex.Client, callID uint32, presence *nexproto.NintendoPresenceV2) {
|
||||
pid := client.PID()
|
||||
|
||||
connectedUsers[pid].Presence = presence
|
||||
updateNintendoPresenceV2(presence)
|
||||
go sendUpdatePresenceWiiUNotifications(presence)
|
||||
|
||||
rmcResponse := nex.NewRMCResponse(nexproto.FriendsProtocolID, callID)
|
||||
rmcResponse.SetSuccess(nexproto.FriendsMethodUpdatePresence, nil)
|
||||
|
||||
rmcResponseBytes := rmcResponse.Bytes()
|
||||
|
||||
responsePacket, _ := nex.NewPacketV0(client, nil)
|
||||
|
||||
responsePacket.SetVersion(0)
|
||||
responsePacket.SetSource(0xA1)
|
||||
responsePacket.SetDestination(0xAF)
|
||||
responsePacket.SetType(nex.DataPacket)
|
||||
responsePacket.SetPayload(rmcResponseBytes)
|
||||
|
||||
responsePacket.AddFlag(nex.FlagNeedsAck)
|
||||
responsePacket.AddFlag(nex.FlagReliable)
|
||||
|
||||
nexServer.Send(responsePacket)
|
||||
}
|
||||
|
||||
func sendUpdatePresenceWiiUNotifications(presence *nexproto.NintendoPresenceV2) {
|
||||
eventObject := nexproto.NewNintendoNotificationEvent()
|
||||
eventObject.Type = 24
|
||||
eventObject.SenderPID = presence.PID
|
||||
eventObject.DataHolder = nex.NewDataHolder()
|
||||
eventObject.DataHolder.Name = "NintendoPresenceV2"
|
||||
eventObject.DataHolder.Object = presence
|
||||
|
||||
stream := nex.NewStreamOut(nexServer)
|
||||
eventObjectBytes := eventObject.Bytes(stream)
|
||||
|
||||
rmcRequest := nex.NewRMCRequest()
|
||||
rmcRequest.SetProtocolID(nexproto.NintendoNotificationsProtocolID)
|
||||
rmcRequest.SetCallID(3810693103)
|
||||
rmcRequest.SetMethodID(nexproto.NintendoNotificationsMethodProcessNintendoNotificationEvent2)
|
||||
rmcRequest.SetParameters(eventObjectBytes)
|
||||
|
||||
rmcRequestBytes := rmcRequest.Bytes()
|
||||
|
||||
friendList := getUserFriendList(presence.PID)
|
||||
|
||||
for i := 0; i < len(friendList); i++ {
|
||||
friendPID := friendList[i].NNAInfo.PrincipalBasicInfo.PID
|
||||
connectedUser := connectedUsers[friendPID]
|
||||
|
||||
if connectedUser != nil {
|
||||
requestPacket, _ := nex.NewPacketV0(connectedUser.Client, nil)
|
||||
|
||||
requestPacket.SetVersion(0)
|
||||
requestPacket.SetSource(0xA1)
|
||||
requestPacket.SetDestination(0xAF)
|
||||
requestPacket.SetType(nex.DataPacket)
|
||||
requestPacket.SetPayload(rmcRequestBytes)
|
||||
|
||||
requestPacket.AddFlag(nex.FlagNeedsAck)
|
||||
requestPacket.AddFlag(nex.FlagReliable)
|
||||
|
||||
nexServer.Send(requestPacket)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user