public void Setup() { phone.Setup(); ship.Setup(); if (!IsInitialized) { GameEvents.ModuleStateChangedObservable.Subscribe(args => { if (args.NewState == ShipModuleState.Opened) { ship.Setup(); } }).AddTo(gameObject); Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(_ => { Planets.GetOpeningPlanet().Match(() => F.None, p => { UpdateTimerText(p); return(F.Some(p)); }); }).AddTo(gameObject); IsInitialized = true; } Planets.GetOpeningPlanet().Match(() => { SetupNoOpenedPlanet(); return(F.None); }, planet => { SetupWithPlanet(planet); return(F.Some(planet)); }); }
public override void Setup(ViewData data) { base.Setup(data); Model = ExtractModel(data); if (Model.ScreenType == ModuleScreenType.Normal) { SetupNormalView(); } else { SetupFlightView(); } closeButton.SetListener(() => { closeButton.interactable = false; Services.ViewService.Remove(ViewType.BuyModuleView, 0.15f); Services.GetService <ISoundService>().PlayOneShot(SoundName.click); }); if (!IsInitialized) { GameEvents.PlanetStateChangedObservable.Value.Subscribe(args => { Planets.GetOpeningPlanet().Match(() => { Setup(new ViewData { UserData = new ModuleViewModel { ScreenType = ModuleScreenType.Normal, ModuleId = currentModule?.Id ?? 0 } }); return(F.None); }, p => { Setup(new ViewData { UserData = new ModuleViewModel { ScreenType = ModuleScreenType.Flight } }); return(F.Some(p)); }); }).AddTo(gameObject); IsInitialized = true; } }