public static void Init() { var args = Environment.GetCommandLineArgs(); var ipcType = (IPCType)Enum.Parse(typeof(IPCType), args[2]); var launcherUri = args[3]; IPCUtil.CreateService( ipcType, typeof(InjectorService), typeof(IInjectorService), out var serviceUri ); LauncherService = IPCUtil.CreateChannel <ILauncherService>(ipcType, launcherUri); LauncherService.SendInjectorSettings(serviceUri); Harmony = new Harmony("me.failedshack.usbhelperinjector"); var assembly = Assembly.GetExecutingAssembly(); assembly.GetTypes() .Where(type => VersionSpecific.Applies(type, HelperVersion) && !(Overrides.DisableOptionalPatches && Optional.IsOptional(type)) && (!WineOnly.IsWineOnly(type) || WineCompat) ) .Do(type => Harmony.CreateClassProcessor(type).Patch()); if (WineCompat) { RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly; } }
public void SendInjectorSettings(Uri uri) { Program.Logger.WriteLine($"Sending information to injector ({uri})..."); var channel = IPCUtil.CreateChannel <IInjectorService>(Settings.IPCType, uri.ToString()); if (Program.OverridePublicKey) { channel.SetDonationKey(Program.GenerateDonationKey()); channel.SetPublicKey(Program.PublicKey); } if (Settings.TitleKeys.Count == 0) { channel.ForceKeySiteForm(); } channel.TrustCertificateAuthority(CertMaker.GetRootCertificate().GetRawCertData()); channel.SetProxy(Program.Proxy.GetWebProxy().Address.ToString()); channel.SetDownloaderMaxRetries(Settings.MaxRetries); channel.SetDownloaderRetryDelay(Settings.DelayBetweenRetries); channel.SetDisableOptionalPatches(Settings.DisableOptionalPatches); channel.SetDisableTabs(Settings.DisableTabs); channel.SetLocaleFile(Program.Locale.LocaleFile); channel.SetEshopRegion(Program.Locale.ChosenLocale.Split('-')[1]); channel.SetDefaultFont(Settings.DefaultFont); channel.SetHelperVersion(Program.HelperVersion); channel.SetPortable(Settings.Portable); channel.SetForceHttp(Settings.ForceHttp); channel.SetFunAllowed(!Settings.NoFunAllowed); channel.SetPlayMusic(Settings.BackgroundMusic); channel.SetSplitUnpackDirectories(Settings.SplitUnpackDirectories); channel.SetWineCompat(Program.WineCompat); }
public static void Init() { var args = Environment.GetCommandLineArgs(); var ipcType = (IPCType)Enum.Parse(typeof(IPCType), args[2]); var launcherUri = args[3]; IPCUtil.CreateService( ipcType, typeof(InjectorService), typeof(IInjectorService), out var serviceUri ); LauncherService = IPCUtil.CreateChannel <ILauncherService>(ipcType, launcherUri); LauncherService.SendInjectorSettings(serviceUri); Harmony = new Harmony("me.failedshack.usbhelperinjector"); var assembly = Assembly.GetExecutingAssembly(); assembly.GetTypes() .Where(type => VersionSpecific.Applies(type, HelperVersion) && !(Overrides.DisableOptionalPatches && Optional.IsOptional(type)) && (!WineOnly.IsWineOnly(type) || WineCompat) ) .Do(type => Harmony.CreateClassProcessor(type).Patch()); if (WineCompat) { RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly; } NusGrabberFormPatch.Shown += (form, e) => { FF player = null; var button = new OnOffButton() { OnImage = Resources.AudioOn, OffImage = Resources.AudioOff, State = PlayMusic }; button.StateChanged += (sender, e1) => { // avoid preloading ffplay // TODO: make this not so hackish if (player == null) { if (!button.State) { return; } player = FF.Play("-loop 0 -nodisp loop.ogg"); } player.Pause = !button.State; LauncherService.SetPlayMusic(button.State); }; var toolWindow = ((Form)form).Controls.Find("toolWindow5", true)[0]; toolWindow.Controls.Add(button); button.BringToFront(); }; }