Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,8 @@ NetworkManager::CreateChatControlIfNecessary()
nullptr
);

m_localChatControl->SetTranslationOptions(Party::PartySpeechToSpeechTranslationOptions::TranslateToLocalLanguage, 0, nullptr, nullptr);

if (PARTY_FAILED(err))
{
DEBUGLOG("SetTextChatOptions failed: %s\n", GetErrorMessage(err));
Expand Down
133 changes: 106 additions & 27 deletions win32/PartySample/dll/App.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,72 @@ AppThread()
}
}

#include <windows.h>
#include <iostream>

// A function to copy text to the clipboard
bool CopyTextToClipboard(const char* text)
{
// Get the length of the text
size_t len = strlen(text);

// Allocate a global memory object for the text
HGLOBAL hglb = GlobalAlloc(GMEM_MOVEABLE, (len + 1) * sizeof(char));
if (hglb == NULL)
return false;

// Lock the handle and copy the text to the buffer
char* buffer = (char*)GlobalLock(hglb);
memcpy(buffer, text, len * sizeof(char));
buffer[len] = '\0'; // null terminator
GlobalUnlock(hglb);

// Open the clipboard and empty it
if (!OpenClipboard(NULL))
return false;
EmptyClipboard();

// Set the text as the clipboard data
if (SetClipboardData(CF_TEXT, hglb) == NULL)
return false;

// Close the clipboard
CloseClipboard();

// Success
return true;
}

// A function to paste text from the clipboard
bool PasteTextFromClipboard(char* text, int size)
{
// Open the clipboard
if (!OpenClipboard(NULL))
return false;

// Get the clipboard data as text
HGLOBAL hglb = GetClipboardData(CF_TEXT);
if (hglb == NULL)
return false;

// Lock the handle and get the text pointer
char* buffer = (char*)GlobalLock(hglb);
if (buffer == NULL)
return false;

// Copy the text to the output parameter
//(buffer, text, (int)size - 1);
strcpy_s(text, size, buffer);
//text[size - 1] = '\0'; // null terminator
GlobalUnlock(hglb);

// Close the clipboard
CloseClipboard();

// Success
return true;
}

__declspec(dllexport)
void
__stdcall
Expand Down Expand Up @@ -104,7 +170,8 @@ __declspec(dllexport)
void
__stdcall
PartySampleApp_CreateAndJoinPartyNetwork(
const char* partyNetworkRoomId
const char* partyNetworkRoomId,
const char* lang
)
{
std::lock_guard<std::mutex> g_appLock(g_appMutex);
Expand Down Expand Up @@ -141,6 +208,8 @@ PartySampleApp_CreateAndJoinPartyNetwork(
networkDescriptor,
OnSetNetworkDescriptorCompleted);

CopyTextToClipboard(networkDescriptor.c_str());

g_activePartyNetworkRoomId = roomId;
g_joinNetworkInProgress = false;
};
Expand All @@ -156,6 +225,8 @@ PartySampleApp_CreateAndJoinPartyNetwork(
g_joinNetworkInProgress = false;
};

PartySample::Managers::Get<PartySample::NetworkManager>()->SetLanguageCode(lang, "lang");

PartySample::Managers::Get<PartySample::NetworkManager>()->CreateAndConnectToNetwork(
partyNetworkRoomId,
OnCreatePartyNetworkSucceeded,
Expand All @@ -166,7 +237,8 @@ __declspec(dllexport)
void
__stdcall
PartySampleApp_JoinPartyNetwork(
const char* partyNetworkRoomId
const char* partyNetworkRoomId,
const char* lang
)
{
std::lock_guard<std::mutex> g_appLock(g_appMutex);
Expand All @@ -187,39 +259,46 @@ PartySampleApp_JoinPartyNetwork(

// capture the room id so it can be logged later in the async callbacks
const std::string roomId = partyNetworkRoomId;
const std::string language = lang;

auto OnDescriptorFetched = [roomId](std::string networkDescriptor)
{
QueueLog("Network", "Found network descriptor for \"%s\": \"%s\"", roomId.c_str(), networkDescriptor.c_str());
//auto OnDescriptorFetched = [roomId, language](std::string networkDescriptor)
//{
char buffer[512]{ '\0' };

auto OnJoinPartyNetworkSucceeded = [roomId]()
{
QueueLog("Network", "PartyNetwork \"%s\" joined!", roomId.c_str());
PasteTextFromClipboard(buffer, 512);

g_activePartyNetworkRoomId = roomId;
g_joinNetworkInProgress = false;
};
QueueLog("Network", "Found network descriptor for \"%s\": \"%s\"", roomId.c_str(), buffer);

auto OnJoinPartyNetworkFailed = [roomId](PartyError error)
{
QueueLog(
"Network",
"Failed to join PartyNetwork for \"%s\"! err=0x%08x \"%s\"",
roomId.c_str(),
error,
GetPartyErrorMessage(error));

g_joinNetworkInProgress = false;
};
auto OnJoinPartyNetworkSucceeded = [roomId]()
{
QueueLog("Network", "PartyNetwork \"%s\" joined!", roomId.c_str());

PartySample::Managers::Get<PartySample::NetworkManager>()->ConnectToNetwork(
g_activePartyNetworkRoomId = roomId;
g_joinNetworkInProgress = false;
};

auto OnJoinPartyNetworkFailed = [roomId](PartyError error)
{
QueueLog(
"Network",
"Failed to join PartyNetwork for \"%s\"! err=0x%08x \"%s\"",
roomId.c_str(),
networkDescriptor.c_str(),
OnJoinPartyNetworkSucceeded,
OnJoinPartyNetworkFailed);
error,
GetPartyErrorMessage(error));

g_joinNetworkInProgress = false;
};

PartySample::Managers::Get<PartySample::PlayFabManager>()->GetDescriptor(partyNetworkRoomId, OnDescriptorFetched);
PartySample::Managers::Get<PartySample::NetworkManager>()->SetLanguageCode(language.c_str(), "lang");

PartySample::Managers::Get<PartySample::NetworkManager>()->ConnectToNetwork(
roomId.c_str(),
buffer,
OnJoinPartyNetworkSucceeded,
OnJoinPartyNetworkFailed);
//};

//PartySample::Managers::Get<PartySample::PlayFabManager>()->GetDescriptor(partyNetworkRoomId, OnDescriptorFetched);
}

__declspec(dllexport)
Expand Down
6 changes: 4 additions & 2 deletions win32/PartySample/dll/App.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,16 @@ extern "C"
void
__stdcall
PartySampleApp_CreateAndJoinPartyNetwork(
const char* partyNetworkRoomId
const char* partyNetworkRoomId,
const char* language
);

__declspec(dllexport)
void
__stdcall
PartySampleApp_JoinPartyNetwork(
const char* partyNetworkRoomId
const char* partyNetworkRoomId,
const char* language
);

__declspec(dllexport)
Expand Down
4 changes: 2 additions & 2 deletions win32/PartySample/dll/PartySampleApp.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -231,12 +231,12 @@
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.7.6\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets" Condition="Exists('..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.7.6\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets')" />
<Import Project="..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.9.1-asobo.0\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets" Condition="Exists('..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.9.1-asobo.0\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.7.6\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.7.6\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.9.1-asobo.0\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.9.1-asobo.0\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets'))" />
</Target>
</Project>
10 changes: 6 additions & 4 deletions win32/PartySample/dll/PartySampleNetworkCommon.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
Expand Down Expand Up @@ -74,11 +77,13 @@
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<EnableUnitySupport>true</EnableUnitySupport>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
<Import Project="..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.9.1-asobo.0\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets" Condition="Exists('..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.9.1-asobo.0\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
Expand Down Expand Up @@ -206,13 +211,10 @@
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.7.6\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets" Condition="Exists('..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.7.6\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.7.6\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.7.6\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.9.1-asobo.0\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.1.9.1-asobo.0\build\native\Microsoft.PlayFab.PlayFabParty.Cpp.Windows.targets'))" />
</Target>
</Project>
61 changes: 19 additions & 42 deletions win32/PartySample/dll/PartySampleNetworkCommon.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -1,30 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClInclude Include="..\..\PartySampleNetworkCommon\inc\INetworkStateChangeManager.h">
<Filter>inc</Filter>
</ClInclude>
<ClInclude Include="..\..\PartySampleNetworkCommon\inc\LanguageOptions.h">
<Filter>inc</Filter>
</ClInclude>
<ClInclude Include="..\..\PartySampleNetworkCommon\inc\Manager.h">
<Filter>inc</Filter>
</ClInclude>
<ClInclude Include="..\..\PartySampleNetworkCommon\inc\Managers.h">
<Filter>inc</Filter>
</ClInclude>
<ClInclude Include="..\..\PartySampleNetworkCommon\inc\NetworkManager.h">
<Filter>inc</Filter>
</ClInclude>
<ClInclude Include="..\..\PartySampleNetworkCommon\inc\NetworkMessages.h">
<Filter>inc</Filter>
</ClInclude>
<ClInclude Include="..\..\PartySampleNetworkCommon\inc\PlayFabManager.h">
<Filter>inc</Filter>
</ClInclude>
<ClInclude Include="..\..\PartySampleNetworkCommon\lib\pch.h">
<Filter>lib</Filter>
</ClInclude>
<ClInclude Include="..\PartySampleNetworkCommon\inc\INetworkStateChangeManager.h" />
<ClInclude Include="..\PartySampleNetworkCommon\inc\DebugLog.h" />
<ClInclude Include="..\PartySampleNetworkCommon\inc\LanguageOptions.h" />
<ClInclude Include="..\PartySampleNetworkCommon\inc\Manager.h" />
<ClInclude Include="..\PartySampleNetworkCommon\inc\Managers.h" />
<ClInclude Include="..\PartySampleNetworkCommon\inc\NetworkManager.h" />
<ClInclude Include="..\PartySampleNetworkCommon\inc\NetworkMessages.h" />
<ClInclude Include="..\PartySampleNetworkCommon\inc\PlayFabManager.h" />
<ClInclude Include="..\PartySampleNetworkCommon\lib\pch.h" />
</ItemGroup>
<ItemGroup>
<Filter Include="inc">
Expand All @@ -35,23 +20,15 @@
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\PartySampleNetworkCommon\lib\LanguageOptions.cpp">
<Filter>lib</Filter>
</ClCompile>
<ClCompile Include="..\..\PartySampleNetworkCommon\lib\Managers.cpp">
<Filter>lib</Filter>
</ClCompile>
<ClCompile Include="..\..\PartySampleNetworkCommon\lib\NetworkManager.cpp">
<Filter>lib</Filter>
</ClCompile>
<ClCompile Include="..\..\PartySampleNetworkCommon\lib\NetworkMessages.cpp">
<Filter>lib</Filter>
</ClCompile>
<ClCompile Include="..\..\PartySampleNetworkCommon\lib\pch.cpp">
<Filter>lib</Filter>
</ClCompile>
<ClCompile Include="..\..\PartySampleNetworkCommon\lib\PlayFabManager.cpp">
<Filter>lib</Filter>
</ClCompile>
<ClCompile Include="..\PartySampleNetworkCommon\lib\DebugLog.cpp" />
<ClCompile Include="..\PartySampleNetworkCommon\lib\LanguageOptions.cpp" />
<ClCompile Include="..\PartySampleNetworkCommon\lib\Managers.cpp" />
<ClCompile Include="..\PartySampleNetworkCommon\lib\NetworkManager.cpp" />
<ClCompile Include="..\PartySampleNetworkCommon\lib\NetworkMessages.cpp" />
<ClCompile Include="..\PartySampleNetworkCommon\lib\PlayFabManager.cpp" />
<ClCompile Include="..\PartySampleNetworkCommon\lib\pch.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
</Project>
2 changes: 1 addition & 1 deletion win32/PartySample/dll/packages.config
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.PlayFab.PlayFabParty.Cpp.Windows" version="1.7.6" targetFramework="native" />
<package id="Microsoft.PlayFab.PlayFabParty.Cpp.Windows" version="1.9.1-asobo.0" targetFramework="native" />
</packages>
3 changes: 2 additions & 1 deletion win32/PartySample/gui/PartySamplePage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
<ComboBoxItem>Room_3</ComboBoxItem>
</ComboBox>
<ComboBox x:Name="LanguageDropDown" Width="415" Height="20" Margin="335,130,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" SelectedIndex="0">
<ComboBoxItem>English (United States)</ComboBoxItem>
<ComboBoxItem>en-us</ComboBoxItem>
<ComboBoxItem>fr-fr</ComboBoxItem>
</ComboBox>
<ListView x:Name="PlayerList" HorizontalAlignment="Left" Margin="340,168,0,0" VerticalAlignment="Top" Width="400" Height="200" Background="#20000000" BorderThickness="0">
<ListView.Resources>
Expand Down
14 changes: 10 additions & 4 deletions win32/PartySample/gui/PartySamplePage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -333,16 +333,22 @@ private void JoinButton_Click(object sender, RoutedEventArgs e)
{
ComboBoxItem selectedRoom = (ComboBoxItem)this.RoomDropDown.SelectedItem;
string roomId = selectedRoom.Content.ToString();
ComboBoxItem lang = (ComboBoxItem)this.LanguageDropDown.SelectedItem;
string language = lang.Content.ToString();
LogNewMessage("Setting", $"Language: \"{language}\".");
LogNewMessage("Network", $"Joining \"{roomId}\" PartyNetwork...");
PartySampleApp_JoinPartyNetwork(roomId);
PartySampleApp_JoinPartyNetwork(roomId, language);
}

private void CreateButton_Click(object sender, RoutedEventArgs e)
{
ComboBoxItem selectedRoom = (ComboBoxItem)this.RoomDropDown.SelectedItem;
string roomId = selectedRoom.Content.ToString();
ComboBoxItem lang = (ComboBoxItem)this.LanguageDropDown.SelectedItem;
string language = lang.Content.ToString();
LogNewMessage("Setting",$"Language: \"{language}\".");
LogNewMessage("Network", $"Creating \"{roomId}\" PartyNetwork...");
PartySampleApp_CreateAndJoinPartyNetwork(roomId);
PartySampleApp_CreateAndJoinPartyNetwork(roomId, language);
}

private void LeaveButton_Click(object sender, RoutedEventArgs e)
Expand Down Expand Up @@ -376,10 +382,10 @@ private static extern void PartySampleApp_Initialize(
private static extern void PartySampleApp_PollLogQueue(LogCallback logCallback);

[DllImport("PartySampleApp.dll", CallingConvention = CallingConvention.StdCall)]
private static extern void PartySampleApp_CreateAndJoinPartyNetwork(string partyNetworkRoomId);
private static extern void PartySampleApp_CreateAndJoinPartyNetwork(string partyNetworkRoomId, string language);

[DllImport("PartySampleApp.dll", CallingConvention = CallingConvention.StdCall)]
private static extern void PartySampleApp_JoinPartyNetwork(string partyNetworkRoomId);
private static extern void PartySampleApp_JoinPartyNetwork(string partyNetworkRoomId, string language);

[DllImport("PartySampleApp.dll", CallingConvention = CallingConvention.StdCall)]
private static extern void PartySampleApp_LeavePartyNetwork();
Expand Down