diff --git a/App.config b/App.config
index 8d234373..ecdcf8a5 100644
--- a/App.config
+++ b/App.config
@@ -1,6 +1,6 @@
-
+
diff --git a/AppApi.cs b/AppApi.cs
index 93180c00..80f7a659 100644
--- a/AppApi.cs
+++ b/AppApi.cs
@@ -17,8 +17,8 @@ using System.Net;
using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;
using librsync.net;
-using XSNotifications;
-using XSNotifications.Enum;
+using System.Net.Sockets;
+using System.Text.Json.Serialization;
namespace VRCX
{
@@ -245,6 +245,22 @@ namespace VRCX
ToastNotificationManager.CreateToastNotifier("VRCX").Show(toast);
}
+ private struct XSOMessage
+ {
+ public int messageType { get; set; }
+ public int index { get; set; }
+ public float volume { get; set; }
+ public string audioPath { get; set; }
+ public float timeout { get; set; }
+ public string title { get; set; }
+ public string content { get; set; }
+ public string icon { get; set; }
+ public float height { get; set; }
+ public float opacity { get; set; }
+ public bool useBase64Icon { get; set; }
+ public string sourceApp { get; set; }
+ }
+
public void XSNotification(string Title, string Content, int Timeout, bool Image)
{
bool UseBase64Icon = true;
@@ -254,17 +270,24 @@ namespace VRCX
UseBase64Icon = false;
Icon = Path.Combine(Program.BaseDirectory, "cache\\toast");
}
- new XSNotifier().SendNotification(new XSNotification()
- {
- Height = 110.0f,
- SourceApp = "VRCX",
- AudioPath = "",
- Title = Title,
- Content = Content,
- Timeout = Timeout,
- UseBase64Icon = UseBase64Icon,
- Icon = Icon
- });
+
+ IPAddress broadcastIP = IPAddress.Parse("127.0.0.1");
+ Socket broadcastSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
+ IPEndPoint endPoint = new IPEndPoint(broadcastIP, 42069);
+
+ XSOMessage msg = new XSOMessage();
+ msg.messageType = 1;
+ msg.title = Title;
+ msg.content = Content;
+ msg.height = 110f;
+ msg.sourceApp = "VRCX";
+ msg.timeout = Timeout;
+ msg.audioPath = "";
+ msg.useBase64Icon = UseBase64Icon;
+ msg.icon = Icon;
+
+ byte[] byteBuffer = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(msg);
+ broadcastSocket.SendTo(byteBuffer, endPoint);
}
public void SetStartup(bool enabled)
diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs
index 3b18c84d..ee915eda 100644
--- a/Properties/Resources.Designer.cs
+++ b/Properties/Resources.Designer.cs
@@ -1,69 +1,61 @@
//------------------------------------------------------------------------------
//
-// 이 코드는 도구를 사용하여 생성되었습니다.
-// 런타임 버전:4.0.30319.42000
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
//
-// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
-// 이러한 변경 내용이 손실됩니다.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
//
//------------------------------------------------------------------------------
-namespace VRCX.Properties
-{
-
-
+namespace VRCX.Properties {
+ using System;
+
+
///
- /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
+ /// A strongly-typed resource class, for looking up localized strings, etc.
///
- // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
- // 클래스에서 자동으로 생성되었습니다.
- // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
- // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
+ internal class Resources {
+
private static global::System.Resources.ResourceManager resourceMan;
-
+
private static global::System.Globalization.CultureInfo resourceCulture;
-
+
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
+ internal Resources() {
}
-
+
///
- /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
+ /// Returns the cached ResourceManager instance used by this class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VRCX.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
-
+
///
- /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
- /// 재정의합니다.
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
return resourceCulture;
}
- set
- {
+ set {
resourceCulture = value;
}
}
diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs
index 4a0f300f..81d5072f 100644
--- a/Properties/Settings.Designer.cs
+++ b/Properties/Settings.Designer.cs
@@ -8,21 +8,17 @@
//
//------------------------------------------------------------------------------
-namespace VRCX.Properties
-{
-
-
+namespace VRCX.Properties {
+
+
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
+
+ public static Settings Default {
+ get {
return defaultInstance;
}
}
diff --git a/VRCX.csproj b/VRCX.csproj
index 74924a87..fcd5cac0 100644
--- a/VRCX.csproj
+++ b/VRCX.csproj
@@ -1,4 +1,4 @@
-
+
@@ -8,13 +8,14 @@
WinExe
VRCX
VRCX
- v4.6.2
+ v4.7.2
512
true
true
false
+
publish\
true
Disk
@@ -29,7 +30,6 @@
1.0.0.%2a
false
true
-
AnyCPU
@@ -80,8 +80,7 @@
librsync.net\Blake2Sharp.dll
-
- False
+
librsync.net\librsync.net.dll
@@ -166,7 +165,7 @@
False
- Microsoft .NET Framework 4.5.2%28x86 및 x64%29
+ Microsoft .NET Framework 4.5.2 %28x86 and x64%29
true
@@ -177,19 +176,19 @@
- 86.0.241
+ 89.0.170
- 86.0.241
+ 89.0.170
- 1.0.169
+ 1.0.175
- 6.1.1
+ 7.0.1
- 12.0.3
+ 13.0.1
4.2.0
@@ -209,8 +208,8 @@
1.0.113.7
-
- 0.1.1
+
+ 5.0.2