void InitializeCommunicator(int rpHostProcessID) { r_Communicator = new MemoryMappedFileCommunicator($"Sakuno/HeavenlyWind({rpHostProcessID})", 4096); r_Communicator.ReadPosition = 0; r_Communicator.WritePosition = 2048; r_Messages = r_Communicator.GetMessageObservable().ObserveOnDispatcher().Publish(); r_Messages.Connect(); r_Communicator.StartReader(); r_Messages.Subscribe(CommunicatorMessages.ClearCache, _ => r_BrowserProvider?.ClearCache(false)); r_Messages.Subscribe(CommunicatorMessages.ClearCacheAndCookie, _ => r_BrowserProvider?.ClearCache(true)); r_Messages.Subscribe(CommunicatorMessages.GoBack, _ => r_Browser?.GoBack()); r_Messages.Subscribe(CommunicatorMessages.GoForward, _ => r_Browser?.GoForward()); r_Messages.Subscribe(CommunicatorMessages.Navigate, rpUrl => r_Browser?.Navigate(rpUrl)); r_Messages.Subscribe(CommunicatorMessages.Refresh, _ => r_Browser?.Refresh()); r_Messages.Subscribe(CommunicatorMessages.SetZoom, r => { r_Zoom = double.Parse(r); r_Browser?.SetZoom(r_Zoom); r_Communicator.Write(CommunicatorMessages.InvalidateArrange); }); r_Messages.Subscribe(CommunicatorMessages.ResizeBrowserToFitGame, _ => { r_Container.Width = GameConstants.GameWidth * r_Zoom / DpiUtil.ScaleX / DpiUtil.ScaleX; r_Container.Height = GameConstants.GameHeight * r_Zoom / DpiUtil.ScaleY / DpiUtil.ScaleY; r_Communicator.Write(CommunicatorMessages.InvalidateArrange); }); InitializeScreenshotMessagesSubscription(); }
private void ClearCache(object sender, RoutedEventArgs e) => _browserProvider?.ClearCache();