Exemplo n.º 1
0
        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));
            });
        }
Exemplo n.º 2
0
        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;
            }
        }