feat: add party to windows.xbox.multiplayer.idl

This commit is contained in:
CT5
2026-02-13 11:16:34 +11:00
parent a606d81347
commit e331e7b202
8 changed files with 749 additions and 1 deletions

View File

@@ -1,3 +1,5 @@
import "Windows.Xbox.System.idl";
namespace Windows.Xbox.Multiplayer
{
enum PartyErrorStatus {
@@ -18,6 +20,28 @@ namespace Windows.Xbox.Multiplayer
Always,
};
enum MatchStatus
{
Expired = -16,
Canceled = -15,
None = -1,
Searching = 0,
Found = 1,
};
enum SessionJoinability
{
InviteOnly = 0,
JoinableByFriends = 1,
Closed = 2,
};
[flags]
enum PartyFlags
{
PartyViewDefault = 0,
};
// From @Zombie
static runtimeclass PartyConfig
{
@@ -60,9 +84,100 @@ namespace Windows.Xbox.Multiplayer
Windows.Foundation.Collections.IVectorView<PartyChatMember> Members { get; };
}
[interface_name("IPartyChatStatics", AAAAAAAA-1A34-459B-973A-8C183714642B)]
[interface_name("IPartyMember", AFB8F2BD-A436-4813-9AA5-3483D69BD640)]
runtimeclass PartyMember
{
String XboxUserId { get; };
Boolean IsLocal { get; };
Windows.Foundation.DateTime JoinTime { get; };
}
[interface_name("IGamePlayer", 0CA72957-9BD8-4240-9681-5B3500740C46)]
runtimeclass GamePlayer
{
String XboxUserId { get; };
Windows.Foundation.DateTime LastInvitedTime { get; };
Windows.Foundation.DateTime PartyJoinTime { get; };
}
[interface_name("IGamePlayerDeviceGroup", 610D87A8-3FB4-4AF9-A185-6D6A96F7B4E0)]
runtimeclass GamePlayerDeviceGroup
{
Windows.Foundation.Collections.IVectorView<GamePlayer> Players { get; };
}
[interface_name("IGameSessionReadyEventArgs", A6979C26-EE30-4DA3-A130-FB81ACABA8EA)]
runtimeclass GameSessionReadyEventArgs
{
MultiplayerSessionReference GameSession { get; };
}
[interface_name("IPartyStateChangedEventArgs", 8FC3CA09-8091-4465-8726-25AC8EA850D4)]
runtimeclass PartyStateChangedEventArgs
{
PartyView PartyView { get; };
}
[interface_name("IPartyRosterChangedEventArgs", CA436967-5806-49BE-A165-438681C87382)]
runtimeclass PartyRosterChangedEventArgs
{
Windows.Foundation.Collections.IVectorView<String> AddedMembers { get; };
Windows.Foundation.Collections.IVectorView<String> AddedReservedMembers { get; };
Windows.Foundation.Collections.IVectorView<String> RemovedMembers { get; };
Windows.Foundation.Collections.IVectorView<String> RemovedReservedMembers { get; };
PartyView PartyView { get; };
}
[interface_name("IMatchStatusChangedEventArgs", 593EDA17-1EE7-40DF-A0C3-76D74CD7AE49)]
runtimeclass MatchStatusChangedEventArgs
{
MultiplayerSessionReference MatchSession { get; };
MatchStatus MatchStatus { get; };
}
[interface_name("IGamePlayersChangedEventArgs", 60DE3CE1-5EA2-4ABD-B87F-DE711A815EF4)]
runtimeclass GamePlayersChangedEventArgs
{
MultiplayerSessionReference GameSession { get; };
Windows.Foundation.Collections.IVectorView<GamePlayer> AvailablePlayers { get; };
Windows.Foundation.Collections.IVectorView<GamePlayerDeviceGroup> AvailablePlayersGroupedByDevice { get; };
}
[interface_name("IPartyMemberDeviceGroup", 4BE5D684-29C9-48F2-AC8B-083254C94BF2)]
runtimeclass PartyMemberDeviceGroup
{
Windows.Foundation.Collections.IVectorView<PartyMember> Members { get; };
}
[interface_name("IUserPartyAssociation", B25D6C22-A2E6-4652-8759-2E0E81316E90)]
runtimeclass UserPartyAssociation
{
Windows.Foundation.Collections.IVectorView<String> QueriedXboxUserIds { get; };
String PartyId { get; };
}
runtimeclass PartyView
{
[interface_name("IPartyView", B9C0121F-0236-4FF0-9AF9-F28CDA93F643)]
{
Windows.Foundation.Collections.IVectorView<String> ReservedMembers { get; };
Windows.Foundation.Collections.IVectorView<PartyMember> Members { get; };
Windows.Foundation.Collections.IVectorView<PartyMemberDeviceGroup> MembersGroupedByDevice { get; };
MultiplayerSessionReference MatchSession { get; };
MultiplayerSessionReference GameSession { get; };
Boolean IsPartyInAnotherTitle { get; };
}
[interface_name("IPartyView2", 6D6A525B-133F-4DBB-9E35-ED39F6DD7D12)]
{
static SuppressGameSessionReadyToastMode SuppressGameSessionReadyToastMode { get; set; };
}
}
[interface_name("IPartyChatStatics", CC1BCF39-99F3-42A2-AFB6-CDC07B29755F)]
runtimeclass PartyChat
{
PartyChat();
Windows.Foundation.IAsyncOperation<PartyChatView> GetPartyChatViewAsync();
event Windows.Foundation.EventHandler<Object> PartyChatViewChanged;
Boolean IsPartyChatActive { get; };
@@ -70,4 +185,48 @@ namespace Windows.Xbox.Multiplayer
event Windows.Foundation.EventHandler<Boolean> IsPartyChatActiveChanged;
event Windows.Foundation.EventHandler<Boolean> IsPartyChatSuppressedChanged;
}
static runtimeclass Party
{
[static_name("IPartyStatics", E6110C4C-3660-4230-9880-208B149A3CA4)]
{
static Windows.Foundation.IAsyncAction RegisterGameSessionAsync(Windows.Xbox.System.User actingUser, MultiplayerSessionReference sessionReference);
static Windows.Foundation.IAsyncAction RegisterMatchSessionAsync(Windows.Xbox.System.User actingUser, MultiplayerSessionReference sessionReference);
static Windows.Foundation.IAsyncAction InviteToPartyAsync(Windows.Xbox.System.User actingUser, Windows.Foundation.Collections.IVectorView<String> usersToInvite);
static Windows.Foundation.IAsyncOperation<PartyView> GetPartyViewAsync();
static Windows.Foundation.IAsyncAction AddLocalUsersAsync(Windows.Xbox.System.User actingUser, Windows.Foundation.Collections.IVectorView<Windows.Xbox.System.User> localUsersToAdd);
static Windows.Foundation.IAsyncAction PullInactivePlayersAsync(Windows.Xbox.System.User actingUser, MultiplayerSessionReference sessionReference);
static Windows.Foundation.IAsyncAction PullReservedPlayersAsync(Windows.Xbox.System.User actingUser, MultiplayerSessionReference sessionReference);
static Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<GamePlayer> > GetAvailableGamePlayersAsync(Windows.Xbox.System.User actingUser);
static Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<GamePlayerDeviceGroup> > GetAvailableGamePlayersGroupedByDeviceAsync(Windows.Xbox.System.User actingUser);
static Windows.Foundation.IAsyncAction SwitchPartyTitleAsync(Windows.Xbox.System.User actingUser);
static event Windows.Foundation.EventHandler<GameSessionReadyEventArgs> GameSessionReady;
static event Windows.Foundation.EventHandler<PartyStateChangedEventArgs> PartyStateChanged;
static event Windows.Foundation.EventHandler<PartyRosterChangedEventArgs> PartyRosterChanged;
static event Windows.Foundation.EventHandler<MatchStatusChangedEventArgs> MatchStatusChanged;
static event Windows.Foundation.EventHandler<GamePlayersChangedEventArgs> GamePlayersChanged;
}
[static_name("IPartyStatics2", 87521843-2298-43C4-81F1-C7C50AB794E1)]
{
static Windows.Foundation.IAsyncOperation<PartyView> GetPartyViewAsyncEx(PartyFlags flags);
}
[static_name("IPartyStatics3", 15946429-17A1-4FDF-9D67-766ED0F4B868)]
{
static Windows.Foundation.IAsyncAction RemoveLocalUsersAsync(Windows.Foundation.Collections.IVectorView<Windows.Xbox.System.User> localUsersToRemove);
static String PartyId { get; };
static Windows.Foundation.IAsyncAction DisassociateGameSessionAsync(Windows.Xbox.System.User actingUser, MultiplayerSessionReference sessionReferenceToDisassociate);
}
[static_name("IPartyStatics4", 4B907F32-9165-4193-9CCE-1D5CCDDD060E)]
{
static Windows.Foundation.IAsyncAction RegisterGameSessionCompareAsync(Windows.Xbox.System.User actingUser, MultiplayerSessionReference sessionReference, MultiplayerSessionReference sessionReferenceComparand);
static Windows.Foundation.IAsyncAction RegisterMatchSessionCompareAsync(Windows.Xbox.System.User actingUser, MultiplayerSessionReference sessionReference, MultiplayerSessionReference sessionReferenceComparand);
static Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<UserPartyAssociation> > GetUserPartyAssociationsAsync(Windows.Xbox.System.User actingUser, Windows.Foundation.Collections.IVectorView<String> targetXboxUserIds);
static Windows.Foundation.IAsyncOperation<PartyView> GetPartyViewByPartyIdAsync(Windows.Xbox.System.User actingUser, String partyId);
static Windows.Foundation.IAsyncAction JoinPartyByIdAsync(Windows.Xbox.System.User actingUser, String partyId);
static SessionJoinability Joinability { get; set; };
}
}
}

View File

@@ -72,7 +72,10 @@ set(FILES
"src/Windows/Xbox/ApplicationModel/State/Windows.Xbox.ApplicationModel.State.Internal.ProtocolQuery.cpp"
"src/Windows/Xbox/ApplicationModel/Windows.Xbox.ApplicationModel.Help.cpp"
"src/Windows/Xbox/Multiplayer/Windows.Xbox.Multiplayer.MultiplayerSessionReference.cpp"
"src/Windows/Xbox/Multiplayer/Windows.Xbox.Multiplayer.Party.cpp"
"src/Windows/Xbox/Multiplayer/Windows.Xbox.Multiplayer.PartyChat.cpp"
"src/Windows/Xbox/Multiplayer/Windows.Xbox.Multiplayer.PartyConfig.cpp"
"src/Windows/Xbox/Multiplayer/Windows.Xbox.Multiplayer.PartyView.cpp"
"src/Windows/Xbox/Storage/Windows.Xbox.Storage.ConnectedStorage.cpp"
"src/Windows/Xbox/Storage/Windows.Xbox.Storage.ConnectedStorageContainer.cpp"
"src/Windows/Xbox/Storage/Windows.Xbox.Storage.ConnectedStorageSpace.cpp"

View File

@@ -0,0 +1,164 @@
#pragma once
#include "Windows.Xbox.Multiplayer.GamePlayer.g.h"
#include "Windows.Xbox.Multiplayer.GamePlayerDeviceGroup.g.h"
#include "Windows.Xbox.Multiplayer.GameSessionReadyEventArgs.g.h"
#include "Windows.Xbox.Multiplayer.PartyStateChangedEventArgs.g.h"
#include "Windows.Xbox.Multiplayer.PartyRosterChangedEventArgs.g.h"
#include "Windows.Xbox.Multiplayer.MatchStatusChangedEventArgs.g.h"
#include "Windows.Xbox.Multiplayer.GamePlayersChangedEventArgs.g.h"
#include "Windows.Xbox.Multiplayer.UserPartyAssociation.g.h"
#include "Windows.Xbox.Multiplayer.Party.g.h"
namespace winrt::Windows::Xbox::Multiplayer::implementation
{
struct GamePlayer : GamePlayerT<GamePlayer>
{
GamePlayer() = default;
hstring XboxUserId();
winrt::Windows::Foundation::DateTime LastInvitedTime();
winrt::Windows::Foundation::DateTime PartyJoinTime();
};
struct GamePlayerDeviceGroup : GamePlayerDeviceGroupT<GamePlayerDeviceGroup>
{
GamePlayerDeviceGroup() = default;
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayer> Players();
};
struct GameSessionReadyEventArgs : GameSessionReadyEventArgsT<GameSessionReadyEventArgs>
{
GameSessionReadyEventArgs() = default;
GameSessionReadyEventArgs(winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference gameSession) : gameSession(gameSession) {}
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference GameSession();
private:
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference gameSession;
};
struct PartyStateChangedEventArgs : PartyStateChangedEventArgsT<PartyStateChangedEventArgs>
{
PartyStateChangedEventArgs() = default;
PartyStateChangedEventArgs(winrt::Windows::Xbox::Multiplayer::PartyView partyView) : partyView(partyView) {}
winrt::Windows::Xbox::Multiplayer::PartyView PartyView();
private:
winrt::Windows::Xbox::Multiplayer::PartyView partyView;
};
struct PartyRosterChangedEventArgs : PartyRosterChangedEventArgsT<PartyRosterChangedEventArgs>
{
PartyRosterChangedEventArgs() = default;
PartyRosterChangedEventArgs(winrt::Windows::Foundation::Collections::IVectorView<hstring> addedMembers,
winrt::Windows::Foundation::Collections::IVectorView<hstring> addedReservedMembers,
winrt::Windows::Foundation::Collections::IVectorView<hstring> removedMembers,
winrt::Windows::Foundation::Collections::IVectorView<hstring> removedReservedMembers,
winrt::Windows::Xbox::Multiplayer::PartyView partyView) : addedReservedMembers(addedReservedMembers), addedMembers(addedMembers),
removedMembers(removedMembers), removedReservedMembers(removedReservedMembers), partyView(partyView) {}
winrt::Windows::Foundation::Collections::IVectorView<hstring> AddedMembers();
winrt::Windows::Foundation::Collections::IVectorView<hstring> AddedReservedMembers();
winrt::Windows::Foundation::Collections::IVectorView<hstring> RemovedMembers();
winrt::Windows::Foundation::Collections::IVectorView<hstring> RemovedReservedMembers();
winrt::Windows::Xbox::Multiplayer::PartyView PartyView();
private:
winrt::Windows::Foundation::Collections::IVectorView<hstring> addedMembers;
winrt::Windows::Foundation::Collections::IVectorView<hstring> addedReservedMembers;
winrt::Windows::Foundation::Collections::IVectorView<hstring> removedMembers;
winrt::Windows::Foundation::Collections::IVectorView<hstring> removedReservedMembers;
winrt::Windows::Xbox::Multiplayer::PartyView partyView;
};
struct MatchStatusChangedEventArgs : MatchStatusChangedEventArgsT<MatchStatusChangedEventArgs>
{
MatchStatusChangedEventArgs() = default;
MatchStatusChangedEventArgs(winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference matchSession,
winrt::Windows::Xbox::Multiplayer::MatchStatus matchStatus) : matchSession(matchSession), matchStatus(matchStatus) {}
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference MatchSession();
winrt::Windows::Xbox::Multiplayer::MatchStatus MatchStatus();
private:
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference matchSession;
winrt::Windows::Xbox::Multiplayer::MatchStatus matchStatus;
};
struct GamePlayersChangedEventArgs : GamePlayersChangedEventArgsT<GamePlayersChangedEventArgs>
{
GamePlayersChangedEventArgs() = default;
GamePlayersChangedEventArgs(winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference gameSession,
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayer> availablePlayers,
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayerDeviceGroup> availablePlayersGroupedByDevice) :
gameSession(gameSession), availablePlayers(availablePlayers), availablePlayersGroupedByDevice(availablePlayersGroupedByDevice) {}
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference GameSession();
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayer> AvailablePlayers();
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayerDeviceGroup> AvailablePlayersGroupedByDevice();
private:
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference gameSession;
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayer> availablePlayers;
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayerDeviceGroup> availablePlayersGroupedByDevice;
};
struct UserPartyAssociation : UserPartyAssociationT<UserPartyAssociation>
{
UserPartyAssociation() = default;
UserPartyAssociation(winrt::Windows::Foundation::Collections::IVectorView<hstring> queriedXboxUserIds, hstring partyId) : queriedXboxUserIds(queriedXboxUserIds), partyId(partyId) {}
winrt::Windows::Foundation::Collections::IVectorView<hstring> QueriedXboxUserIds();
hstring PartyId();
private:
winrt::Windows::Foundation::Collections::IVectorView<hstring> queriedXboxUserIds;
hstring partyId;
};
struct Party
{
Party() = default;
static winrt::Windows::Foundation::IAsyncAction RegisterGameSessionAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference);
static winrt::Windows::Foundation::IAsyncAction RegisterMatchSessionAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference);
static winrt::Windows::Foundation::IAsyncAction InviteToPartyAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Foundation::Collections::IVectorView<hstring> usersToInvite);
static winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Xbox::Multiplayer::PartyView> GetPartyViewAsync();
static winrt::Windows::Foundation::IAsyncAction AddLocalUsersAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::System::User> localUsersToAdd);
static winrt::Windows::Foundation::IAsyncAction PullInactivePlayersAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference);
static winrt::Windows::Foundation::IAsyncAction PullReservedPlayersAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference);
static winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayer>> GetAvailableGamePlayersAsync(winrt::Windows::Xbox::System::User actingUser);
static winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayerDeviceGroup>> GetAvailableGamePlayersGroupedByDeviceAsync(winrt::Windows::Xbox::System::User actingUser);
static winrt::Windows::Foundation::IAsyncAction SwitchPartyTitleAsync(winrt::Windows::Xbox::System::User actingUser);
static winrt::event_token GameSessionReady(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::GameSessionReadyEventArgs> const& handler);
static void GameSessionReady(winrt::event_token const& token) noexcept;
static winrt::event_token PartyStateChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::PartyStateChangedEventArgs> const& handler);
static void PartyStateChanged(winrt::event_token const& token) noexcept;
static winrt::event_token PartyRosterChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::PartyRosterChangedEventArgs> const& handler);
static void PartyRosterChanged(winrt::event_token const& token) noexcept;
static winrt::event_token MatchStatusChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::MatchStatusChangedEventArgs> const& handler);
static void MatchStatusChanged(winrt::event_token const& token) noexcept;
static winrt::event_token GamePlayersChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::GamePlayersChangedEventArgs> const& handler);
static void GamePlayersChanged(winrt::event_token const& token) noexcept;
static winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Xbox::Multiplayer::PartyView> GetPartyViewAsyncEx(winrt::Windows::Xbox::Multiplayer::PartyFlags flags);
static winrt::Windows::Foundation::IAsyncAction RemoveLocalUsersAsync(winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::System::User> localUsersToRemove);
static hstring PartyId();
static winrt::Windows::Foundation::IAsyncAction DisassociateGameSessionAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReferenceToDisassociate);
static winrt::Windows::Foundation::IAsyncAction RegisterGameSessionCompareAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReferenceComparand);
static winrt::Windows::Foundation::IAsyncAction RegisterMatchSessionCompareAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReferenceComparand);
static winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::UserPartyAssociation>> GetUserPartyAssociationsAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Foundation::Collections::IVectorView<hstring> targetXboxUserIds);
static winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Xbox::Multiplayer::PartyView> GetPartyViewByPartyIdAsync(winrt::Windows::Xbox::System::User actingUser, hstring partyId);
static winrt::Windows::Foundation::IAsyncAction JoinPartyByIdAsync(winrt::Windows::Xbox::System::User actingUser, hstring partyId);
static winrt::Windows::Xbox::Multiplayer::SessionJoinability Joinability();
static void Joinability(winrt::Windows::Xbox::Multiplayer::SessionJoinability const& value);
private:
static winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::GameSessionReadyEventArgs>> e_GameSessionReady;
static winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::PartyStateChangedEventArgs>> e_PartyStateChanged;
static winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::PartyRosterChangedEventArgs>> e_PartyRosterChanged;
static winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::MatchStatusChangedEventArgs>> e_MatchStatusChanged;
static winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::GamePlayersChangedEventArgs>> e_GamePlayersChanged;
static winrt::Windows::Xbox::Multiplayer::SessionJoinability sessionJoinability;
};
}
namespace winrt::Windows::Xbox::Multiplayer::factory_implementation
{
struct Party : PartyT<Party, implementation::Party>
{
};
}

View File

@@ -0,0 +1,33 @@
#pragma once
#include <winrt/Windows.Foundation.h>
#include "Windows.Xbox.Multiplayer.PartyChat.g.h"
namespace winrt::Windows::Xbox::Multiplayer::implementation
{
struct PartyChat : PartyChatT<PartyChat>
{
PartyChat() = default;
winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Xbox::Multiplayer::PartyChatView> GetPartyChatViewAsync();
winrt::event_token PartyChatViewChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Foundation::IInspectable> const& handler);
void PartyChatViewChanged(winrt::event_token const& token) noexcept;
bool IsPartyChatActive();
bool IsPartyChatSuppressed();
void IsPartyChatSuppressed(bool value);
winrt::event_token IsPartyChatActiveChanged(winrt::Windows::Foundation::EventHandler<bool> const& handler);
void IsPartyChatActiveChanged(winrt::event_token const& token) noexcept;
winrt::event_token IsPartyChatSuppressedChanged(winrt::Windows::Foundation::EventHandler<bool> const& handler);
void IsPartyChatSuppressedChanged(winrt::event_token const& token) noexcept;
private:
winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Foundation::IInspectable>> e_PartyChatViewChanged;
winrt::event<winrt::Windows::Foundation::EventHandler<bool>> e_IsPartyChatActiveChanged;
winrt::event<winrt::Windows::Foundation::EventHandler<bool>> e_IsPartyChatSuppressedChanged;
bool isPartyChatSuppressed = false;
};
}
namespace winrt::Windows::Xbox::Multiplayer::factory_implementation
{
struct PartyChat : PartyChatT<PartyChat, implementation::PartyChat>
{
};
}

View File

@@ -0,0 +1,45 @@
#pragma once
#include "Windows.Xbox.Multiplayer.PartyMember.g.h"
#include "Windows.Xbox.Multiplayer.PartyMemberDeviceGroup.g.h"
#include "Windows.Xbox.Multiplayer.PartyView.g.h"
namespace winrt::Windows::Xbox::Multiplayer::implementation
{
struct PartyMember : PartyMemberT<PartyMember>
{
PartyMember() = default;
hstring XboxUserId();
bool IsLocal();
winrt::Windows::Foundation::DateTime JoinTime();
};
struct PartyMemberDeviceGroup : PartyMemberDeviceGroupT<PartyMemberDeviceGroup>
{
PartyMemberDeviceGroup() = default;
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::PartyMember> Members();
};
struct PartyView : PartyViewT<PartyView>
{
PartyView() = default;
static winrt::Windows::Xbox::Multiplayer::SuppressGameSessionReadyToastMode SuppressGameSessionReadyToastMode();
static void SuppressGameSessionReadyToastMode(winrt::Windows::Xbox::Multiplayer::SuppressGameSessionReadyToastMode const& value);
winrt::Windows::Foundation::Collections::IVectorView<hstring> ReservedMembers();
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::PartyMember> Members();
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::PartyMemberDeviceGroup> MembersGroupedByDevice();
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference MatchSession();
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference GameSession();
bool IsPartyInAnotherTitle();
private:
static winrt::Windows::Xbox::Multiplayer::SuppressGameSessionReadyToastMode suppressGameSessionReadyToast;
};
}
namespace winrt::Windows::Xbox::Multiplayer::factory_implementation
{
struct PartyView : PartyViewT<PartyView, implementation::PartyView>
{
};
}

View File

@@ -0,0 +1,231 @@
#include "Windows.Xbox.Multiplayer.Party.h"
#include "WinDurangoWinRT.h"
namespace winrt::Windows::Xbox::Multiplayer::implementation
{
hstring GamePlayer::XboxUserId()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: XboxUserId");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::DateTime GamePlayer::LastInvitedTime()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: LastInvitedTime");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::DateTime GamePlayer::PartyJoinTime()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: PartyJoinTime");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayer> GamePlayerDeviceGroup::Players()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: Players");
throw hresult_not_implemented();
}
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference GameSessionReadyEventArgs::GameSession()
{
return gameSession;
}
winrt::Windows::Xbox::Multiplayer::PartyView PartyStateChangedEventArgs::PartyView()
{
return partyView;
}
winrt::Windows::Foundation::Collections::IVectorView<hstring> PartyRosterChangedEventArgs::AddedMembers()
{
return addedMembers;
}
winrt::Windows::Foundation::Collections::IVectorView<hstring> PartyRosterChangedEventArgs::AddedReservedMembers()
{
return addedReservedMembers;
}
winrt::Windows::Foundation::Collections::IVectorView<hstring> PartyRosterChangedEventArgs::RemovedMembers()
{
return removedMembers;
}
winrt::Windows::Foundation::Collections::IVectorView<hstring> PartyRosterChangedEventArgs::RemovedReservedMembers()
{
return removedReservedMembers;
}
winrt::Windows::Xbox::Multiplayer::PartyView PartyRosterChangedEventArgs::PartyView()
{
return partyView;
}
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference MatchStatusChangedEventArgs::MatchSession()
{
return matchSession;
}
winrt::Windows::Xbox::Multiplayer::MatchStatus MatchStatusChangedEventArgs::MatchStatus()
{
return matchStatus;
}
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference GamePlayersChangedEventArgs::GameSession()
{
return gameSession;
}
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayer> GamePlayersChangedEventArgs::AvailablePlayers()
{
return availablePlayers;
}
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayerDeviceGroup> GamePlayersChangedEventArgs::AvailablePlayersGroupedByDevice()
{
return availablePlayersGroupedByDevice;
}
winrt::Windows::Foundation::Collections::IVectorView<hstring> UserPartyAssociation::QueriedXboxUserIds()
{
return queriedXboxUserIds;
}
hstring UserPartyAssociation::PartyId()
{
return partyId;
}
winrt::Windows::Foundation::IAsyncAction Party::RegisterGameSessionAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: RegisterGameSessionAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::RegisterMatchSessionAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "RegisterMatchSessionAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::InviteToPartyAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Foundation::Collections::IVectorView<hstring> usersToInvite)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: InviteToPartyAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Xbox::Multiplayer::PartyView> Party::GetPartyViewAsync()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: GetPartyViewAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::AddLocalUsersAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::System::User> localUsersToAdd)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: AddLocalUsersAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::PullInactivePlayersAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: PullInactivePlayersAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::PullReservedPlayersAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: PullReservedPlayersAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayer>> Party::GetAvailableGamePlayersAsync(winrt::Windows::Xbox::System::User actingUser)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: GetAvailableGamePlayersAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::GamePlayerDeviceGroup>> Party::GetAvailableGamePlayersGroupedByDeviceAsync(winrt::Windows::Xbox::System::User actingUser)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: GetAvailableGamePlayersGroupedByDeviceAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::SwitchPartyTitleAsync(winrt::Windows::Xbox::System::User actingUser)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: SwitchPartyTitleAsync");
throw hresult_not_implemented();
}
winrt::event_token Party::GameSessionReady(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::GameSessionReadyEventArgs> const& handler)
{
return e_GameSessionReady.add(handler);
}
void Party::GameSessionReady(winrt::event_token const& token) noexcept
{
e_GameSessionReady.remove(token);
}
winrt::event_token Party::PartyStateChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::PartyStateChangedEventArgs> const& handler)
{
return e_PartyStateChanged.add(handler);
}
void Party::PartyStateChanged(winrt::event_token const& token) noexcept
{
e_PartyStateChanged.remove(token);
}
winrt::event_token Party::PartyRosterChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::PartyRosterChangedEventArgs> const& handler)
{
return e_PartyRosterChanged.add(handler);
}
void Party::PartyRosterChanged(winrt::event_token const& token) noexcept
{
e_PartyRosterChanged.remove(token);
}
winrt::event_token Party::MatchStatusChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::MatchStatusChangedEventArgs> const& handler)
{
return e_MatchStatusChanged.add(handler);
}
void Party::MatchStatusChanged(winrt::event_token const& token) noexcept
{
e_MatchStatusChanged.remove(token);
}
winrt::event_token Party::GamePlayersChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::GamePlayersChangedEventArgs> const& handler)
{
return e_GamePlayersChanged.add(handler);
}
void Party::GamePlayersChanged(winrt::event_token const& token) noexcept
{
e_GamePlayersChanged.remove(token);
}
winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Xbox::Multiplayer::PartyView> Party::GetPartyViewAsyncEx(winrt::Windows::Xbox::Multiplayer::PartyFlags flags)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: GetPartyViewAsyncEx");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::RemoveLocalUsersAsync(winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::System::User> localUsersToRemove)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: RemoveLocalUsersAsync");
throw hresult_not_implemented();
}
hstring Party::PartyId()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: PartyId");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::DisassociateGameSessionAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReferenceToDisassociate)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: DisassociateGameSessionAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::RegisterGameSessionCompareAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReferenceComparand)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: RegisterGameSessionCompareAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::RegisterMatchSessionCompareAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReference, winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference sessionReferenceComparand)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: RegisterMatchSessionCompareAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::UserPartyAssociation>> Party::GetUserPartyAssociationsAsync(winrt::Windows::Xbox::System::User actingUser, winrt::Windows::Foundation::Collections::IVectorView<hstring> targetXboxUserIds)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: GetUserPartyAssociationsAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Xbox::Multiplayer::PartyView> Party::GetPartyViewByPartyIdAsync(winrt::Windows::Xbox::System::User actingUser, hstring partyId)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: GetPartyViewByPartyIdAsync");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::IAsyncAction Party::JoinPartyByIdAsync(winrt::Windows::Xbox::System::User actingUser, hstring partyId)
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: JoinPartyByIdAsync");
throw hresult_not_implemented();
}
winrt::Windows::Xbox::Multiplayer::SessionJoinability Party::Joinability()
{
return sessionJoinability;
}
void Party::Joinability(winrt::Windows::Xbox::Multiplayer::SessionJoinability const& value)
{
sessionJoinability = value;
}
winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::GameSessionReadyEventArgs>> Party::e_GameSessionReady{};
winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::PartyStateChangedEventArgs>> Party::e_PartyStateChanged{};
winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::PartyRosterChangedEventArgs>> Party::e_PartyRosterChanged{};
winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::MatchStatusChangedEventArgs>> Party::e_MatchStatusChanged{};
winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::Multiplayer::GamePlayersChangedEventArgs>> Party::e_GamePlayersChanged{};
winrt::Windows::Xbox::Multiplayer::SessionJoinability Party::sessionJoinability{};
}

View File

@@ -0,0 +1,48 @@
#include "Windows.Xbox.Multiplayer.PartyChat.h"
#include "WinDurangoWinRT.h"
namespace winrt::Windows::Xbox::Multiplayer::implementation
{
winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Xbox::Multiplayer::PartyChatView> PartyChat::GetPartyChatViewAsync()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: GetPartyChatViewAsync");
throw hresult_not_implemented();
}
winrt::event_token PartyChat::PartyChatViewChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Foundation::IInspectable> const& handler)
{
return e_PartyChatViewChanged.add(handler);
}
void PartyChat::PartyChatViewChanged(winrt::event_token const& token) noexcept
{
return e_PartyChatViewChanged.remove(token);
}
bool PartyChat::IsPartyChatActive()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: IsPartyChatActive");
throw hresult_not_implemented();
}
bool PartyChat::IsPartyChatSuppressed()
{
return isPartyChatSuppressed;
}
void PartyChat::IsPartyChatSuppressed(bool value)
{
isPartyChatSuppressed = value;
}
winrt::event_token PartyChat::IsPartyChatActiveChanged(winrt::Windows::Foundation::EventHandler<bool> const& handler)
{
return e_IsPartyChatActiveChanged.add(handler);
}
void PartyChat::IsPartyChatActiveChanged(winrt::event_token const& token) noexcept
{
e_IsPartyChatActiveChanged.remove(token);
}
winrt::event_token PartyChat::IsPartyChatSuppressedChanged(winrt::Windows::Foundation::EventHandler<bool> const& handler)
{
return e_IsPartyChatSuppressedChanged.add(handler);
}
void PartyChat::IsPartyChatSuppressedChanged(winrt::event_token const& token) noexcept
{
e_IsPartyChatSuppressedChanged.remove(token);
}
}

View File

@@ -0,0 +1,65 @@
#include "Windows.Xbox.Multiplayer.PartyView.h"
#include "WinDurangoWinRT.h"
namespace winrt::Windows::Xbox::Multiplayer::implementation
{
hstring PartyMember::XboxUserId()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: XboxUserId");
throw hresult_not_implemented();
}
bool PartyMember::IsLocal()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: IsLocal");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::DateTime PartyMember::JoinTime()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: JoinTime");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::PartyMember> PartyMemberDeviceGroup::Members()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: Members");
throw hresult_not_implemented();
}
winrt::Windows::Xbox::Multiplayer::SuppressGameSessionReadyToastMode PartyView::SuppressGameSessionReadyToastMode()
{
return suppressGameSessionReadyToast;
}
void PartyView::SuppressGameSessionReadyToastMode(winrt::Windows::Xbox::Multiplayer::SuppressGameSessionReadyToastMode const& value)
{
suppressGameSessionReadyToast = value;
}
winrt::Windows::Foundation::Collections::IVectorView<hstring> PartyView::ReservedMembers()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: ReservedMembers");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::PartyMember> PartyView::Members()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: Members");
throw hresult_not_implemented();
}
winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Xbox::Multiplayer::PartyMemberDeviceGroup> PartyView::MembersGroupedByDevice()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: MembersGroupedByDevice");
throw hresult_not_implemented();
}
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference PartyView::MatchSession()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: MatchSession");
throw hresult_not_implemented();
}
winrt::Windows::Xbox::Multiplayer::MultiplayerSessionReference PartyView::GameSession()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: GameSession");
throw hresult_not_implemented();
}
bool PartyView::IsPartyInAnotherTitle()
{
p_wd->log.Warn("WinDurango::WinRT::Windows::Xbox::Multiplayer", "Unimplemented: IsPartyInAnotherTitle");
throw hresult_not_implemented();
}
winrt::Windows::Xbox::Multiplayer::SuppressGameSessionReadyToastMode PartyView::suppressGameSessionReadyToast{};
}