public override void Process(InitialPlayerSync packet)
 {
     this.packet = packet;
     loadingMultiplayerWaitItem = WaitScreen.Add(Language.main.Get("Nitrox_SyncingWorld"));
     cumulativeProcessorsRan    = 0;
     Multiplayer.Main.StartCoroutine(ProcessInitialSyncPacket(this, null));
 }
        public void ReloadPreview(double scale, Thickness margin, PageOrientation pageOrientation, PaperSize paperSize)
        {
            try
            {
                FitToPage_Scale();
                scale = Scale;
                PrintControlView.ScalePreviewPaneVisibility(false);
                ReloadingPreview = true;
                ShowWaitScreen();
                var printSize = GetPrintSize(paperSize, pageOrientation);
                var visual    = GetScaledVisual(scale);
                CreatePaginator(visual, printSize);
                var visualPaginator = ((VisualPaginator)Paginator);
                visualPaginator.Initialize(IsMarkPageNumbers);
                PagesAcross = visualPaginator.HorizontalPageCount;

                ApproaxNumberOfPages = MaxCopies = Paginator.PageCount;
                if (Scale == 1)
                {
                    NumberOfPages = ApproaxNumberOfPages;
                }

                DisplayPagePreviewsAll(visualPaginator);
                ReloadingPreview = false;
            }
            catch (Exception ex)
            {
            }
            finally
            {
                WaitScreen.Hide();
            }
        }
Beispiel #3
0
        protected void mvConference_ActiveViewChanged(object sender, EventArgs e)
        {
            MultiView mv = (MultiView)sender;

            switch (mv.ActiveViewIndex)
            {
            case 0:    //Start

                break;

            case 1:    //Wait
                WaitScreen.IncidentId = incidentId;
                WaitScreen.Start();
                break;

            case 2:    //Connect
                LiveConnect.IncidentId = incidentId;
                LiveConnect.Start();
                break;

            case 3:    //Survey
                Survey.IncidentId = incidentId;
                Survey.Start();
                break;

            case 4:    //Error
                ErrorControl.Start();
                break;

            default:
                break;
            }

            upPage.Update();
        }
 private void ShowWaitScreen()
 {
     if (FullScreenPrintWindow != null)
     {
         WaitScreen.Show("Loading...");
     }
 }
Beispiel #5
0
        private static void SetLoadingComplete()
        {
            PropertyInfo property = PAXTerrainController.main.GetType().GetProperty("isWorking");

            property.SetValue(PAXTerrainController.main, false, null);

            WaitScreen waitScreen = (WaitScreen)ReflectionHelper.ReflectionGet <WaitScreen>(null, "main", false, true);

            waitScreen.ReflectionCall("Hide");
        }
Beispiel #6
0
        public static IEnumerator LoadAsync()
        {
            WaitScreen.Item item = WaitScreen.Add("Loading Multiplayer", null);
            WaitScreen.ShowImmediately();
            Main.StartSession();
            yield return(new WaitUntil(() => Main.InitialSyncCompleted));

            WaitScreen.Remove(item);
            SetLoadingComplete();
        }
Beispiel #7
0
        public static IEnumerator LoadAsync()
        {
            WaitScreen.Item item = WaitScreen.Add("Loading Multiplayer", null);
            WaitScreen.ShowImmediately();
            Main.StartSession();
            yield return(new WaitUntil(() => Main.InitialSyncCompleted == true));

            PropertyInfo property = PAXTerrainController.main.GetType().GetProperty("isWorking");

            property.SetValue(PAXTerrainController.main, false, null);
            WaitScreen.Remove(item);
        }
Beispiel #8
0
 WaitScreen()
 {
     //save time instead of searching for the game controller
     //check if the instance is not null, we are creating more than one instance, warn us
     if (instance != null)
     {
         Debug.LogError("There's an instance already created, click on the next error to check it", gameObject);
         Debug.LogError("Original WaitScreen instance is", instance.gameObject);
         return;
     }
     instance = this;
 }
Beispiel #9
0
 // Start is called before the first frame update
 void Start()
 {
     helpBg.enabled = false;
     FindObjectOfType <AudioManager>().Play("dawn");
     _waitScreen     = GameObject.Find(_WSObj).GetComponent <WaitScreen>();
     _waitScreenMain = GameObject.Find(_WSMainObj).GetComponent <WaitScreen>();
     _move           = GameObject.Find(_MoveObj).GetComponent <Move>();
     _countDown      = GameObject.Find(_countDownObj).GetComponent <CountDown>();
     winButton       = GameObject.Find(winBTname).GetComponent <Button>();
     winText         = GameObject.Find(winTextName).GetComponent <Text>();
     winButton.gameObject.SetActive(false);
     winText.gameObject.SetActive(false);
     helpText = GameObject.Find(helpTextName).GetComponent <Text>();
     helpText.gameObject.SetActive(false);
 }
Beispiel #10
0
 public static void SubnauticaLoadingCompleted()
 {
     if (Main.IsMultiplayer())
     {
         Main.InitialSyncCompleted = false;
         Main.StartCoroutine(LoadAsync());
     }
     else
     {
         PropertyInfo property = PAXTerrainController.main.GetType().GetProperty("isWorking");
         property.SetValue(PAXTerrainController.main, false, null);
         WaitScreen waitScreen = (WaitScreen)typeof(WaitScreen).ReflectionGet("main", false, true);
         waitScreen.ReflectionCall("Hide");
     }
 }
Beispiel #11
0
        public void ReloadPreview(PageOrientation pageOrientation, PaperSize currentPaper)
        {
            ReloadingPreview = true;
            if (FullScreenPrintWindow != null)
            {
                WaitScreen.Show("Loading Preview");
            }

            if (PageOrientation == PageOrientation.Portrait)
            {
                FlowDocument.PageHeight = currentPaper.Height;
                FlowDocument.PageWidth  = currentPaper.Width;
            }
            else
            {
                FlowDocument.PageHeight = currentPaper.Width;
                FlowDocument.PageWidth  = currentPaper.Height;
            }

            _ms  = new MemoryStream();
            _pkg = Package.Open(_ms, FileMode.Create, FileAccess.ReadWrite);
            const string pack       = "pack://temp.xps";
            var          oldPackage = PackageStore.GetPackage(new Uri(pack));

            if (oldPackage == null)
            {
                PackageStore.AddPackage(new Uri(pack), _pkg);
            }
            else
            {
                PackageStore.RemovePackage(new Uri(pack));
                PackageStore.AddPackage(new Uri(pack), _pkg);
            }
            _xpsDocument = new XpsDocument(_pkg, CompressionOption.SuperFast, pack);
            var xpsWriter = XpsDocument.CreateXpsDocumentWriter(_xpsDocument);

            var documentPaginator = ((IDocumentPaginatorSource)FlowDocument).DocumentPaginator;

            xpsWriter.Write(documentPaginator);
            Paginator   = documentPaginator;
            MaxCopies   = NumberOfPages = ApproaxNumberOfPages = Paginator.PageCount;
            PagesAcross = 2;
            DisplayPagePreviewsAll(documentPaginator);
            WaitScreen.Hide();
            ReloadingPreview = false;
        }
Beispiel #12
0
        private static void SetLoadingComplete()
        {
            PropertyInfo property = PAXTerrainController.main.GetType().GetProperty("isWorking");

            property.SetValue(PAXTerrainController.main, false, null);

            WaitScreen waitScreen = (WaitScreen)ReflectionHelper.ReflectionGet <WaitScreen>(null, "main", false, true);

            waitScreen.ReflectionCall("Hide");

            List <WaitScreen.IWaitItem> items = (List <WaitScreen.IWaitItem>)waitScreen.ReflectionGet("items");

            items.Clear();

            PlayerManager remotePlayerManager = NitroxServiceLocator.LocateService <PlayerManager>();

            DiscordController.Main.InitDRPDiving(Main.multiplayerSession.AuthenticationContext.Username, remotePlayerManager.GetTotalPlayerCount(), Main.multiplayerSession.IpAddress + ":" + Main.multiplayerSession.ServerPort);
        }
Beispiel #13
0
        public CharacterLoadingEventWiring(WaitScreen waitScreen, CharacterList characterList, MainMenu mainMenu, CharacterSelectionMenu selectionMenu)
        {
            characterList.RefreshCompleted += sender =>
            {
                mainMenu.Open();
                if (characterList.TryGetActiveCharacter(out Character.Character character))
                {
                    mainMenu.SetDisplayCharacter(character);
                }
                else
                {
                    mainMenu.HideDisplayCharacter();
                }
                selectionMenu.SetCharacterList(sender.Characters.ToList());

                waitScreen.Close();
            };
        }
Beispiel #14
0
        private IEnumerator ProcessInitialSyncPacket(object sender, EventArgs eventArgs)
        {
            bool moreProcessorsToRun;

            do
            {
                yield return(Multiplayer.Main.StartCoroutine(RunPendingProcessors()));

                moreProcessorsToRun = (alreadyRan.Count < processors.Count);

                if (moreProcessorsToRun && processorsRanLastCycle == 0)
                {
                    throw new Exception("Detected circular dependencies in initial packet sync between: " + GetRemainingProcessorsText());
                }
            } while (moreProcessorsToRun);

            WaitScreen.Remove(loadingMultiplayerWaitItem);
            Multiplayer.Main.InitialSyncCompleted = true;
        }
Beispiel #15
0
        private static void SetLoadingComplete()
        {
            PropertyInfo property = PAXTerrainController.main.GetType().GetProperty("isWorking");

            property.SetValue(PAXTerrainController.main, false, null);

            WaitScreen waitScreen = (WaitScreen)ReflectionHelper.ReflectionGet <WaitScreen>(null, "main", false, true);

            waitScreen.ReflectionCall("Hide");

            List <WaitScreen.IWaitItem> items = (List <WaitScreen.IWaitItem>)waitScreen.ReflectionGet("items");

            items.Clear();

            PlayerManager remotePlayerManager = NitroxServiceLocator.LocateService <PlayerManager>();

            LoadingScreenVersionText.DisableWarningText();
            NitroxServiceLocator.LocateService <PlayerChatManager>().LoadChatKeyHint();
        }
        private static IEnumerator LoadMusic(bool force = false)
        {
            if (Config.IncludeOST)
            {
                LoadOST();
            }
            LoadCustomMusic();

            var failed = failedPaths.Count();

            yield return(new WaitWhile(() => WaitScreen.main == null));

            if (OSTPreload == null && OST.Any(x => x.Value == null))
            {
                OSTPreload = CoroutineHost.StartCoroutine(PreloadOST());
            }
            if (CustomMusicPreload == null && CustomMusic.Any(x => x.Value == null))
            {
                CustomMusicPreload = CoroutineHost.StartCoroutine(PreloadCustomMusic());
            }

            if ((OSTPreload != null || CustomMusicPreload != null) && force)
            {
                FreezeTime.Begin("CustomTunesPreload");
                WaitScreen.ShowImmediately();
            }

            yield return(OSTPreload);

            yield return(CustomMusicPreload);

            GeneratePlaylist();

            yield return(new WaitWhile(() => WaitScreen.main.isShown));

            FreezeTime.End("CustomTunesPreload");

            if (failedPaths.Count() > failed)
            {
                ErrorMessage.AddError("Some tracks failed to load, see error log for details.");
            }
        }
Beispiel #17
0
        private static void SetLoadingComplete()
        {
            PropertyInfo property = PAXTerrainController.main.GetType().GetProperty("isWorking");

            property.SetValue(PAXTerrainController.main, false, null);

            WaitScreen waitScreen = (WaitScreen)ReflectionHelper.ReflectionGet <WaitScreen>(null, "main", false, true);

            waitScreen.ReflectionCall("Hide");

            List <WaitScreen.IWaitItem> items = (List <WaitScreen.IWaitItem>)waitScreen.ReflectionGet("items");

            items.Clear();

            PlayerManager remotePlayerManager = NitroxServiceLocator.LocateService <PlayerManager>();

            LoadingScreenVersionText.DisableWarningText();
            DiscordRPController.Main.InitializeInGame(Main.multiplayerSession.AuthenticationContext.Username, remotePlayerManager.GetTotalPlayerCount(), Main.multiplayerSession.SessionPolicy.MaxConnections, $"{Main.multiplayerSession.IpAddress}:{Main.multiplayerSession.ServerPort}");
            NitroxServiceLocator.LocateService <PlayerChatManager>().LoadChatKeyHint();
        }
Beispiel #18
0
        public static IEnumerator LoadAsync()
        {
            WaitScreen.ManualWaitItem worldSettleItem = WaitScreen.Add(Language.main.Get("Nitrox_WorldSettling"));
            WaitScreen.ShowImmediately();

            yield return(new WaitUntil(() => LargeWorldStreamer.main != null &&
                                       LargeWorldStreamer.main.land != null &&
                                       LargeWorldStreamer.main.IsReady() &&
                                       LargeWorldStreamer.main.IsWorldSettled()));

            WaitScreen.Remove(worldSettleItem);

            WaitScreen.ManualWaitItem item = WaitScreen.Add(Language.main.Get("Nitrox_JoiningSession"));
            yield return(Main.StartCoroutine(Main.StartSession()));

            WaitScreen.Remove(item);

            yield return(new WaitUntil(() => Main.InitialSyncCompleted));

            SetLoadingComplete();
        }
        private IEnumerator ProcessInitialSyncPacket(object sender, EventArgs eventArgs)
        {
            // Some packets should not fire during game session join but only afterwards so that initialized/spawned game objects don't trigger packet sending again.
            using (packetSender.Suppress <PingRenamed>())
            {
                bool moreProcessorsToRun;
                do
                {
                    yield return(Multiplayer.Main.StartCoroutine(RunPendingProcessors()));

                    moreProcessorsToRun = alreadyRan.Count < processors.Count;
                    if (moreProcessorsToRun && processorsRanLastCycle == 0)
                    {
                        throw new Exception("Detected circular dependencies in initial packet sync between: " + GetRemainingProcessorsText());
                    }
                } while (moreProcessorsToRun);
            }

            WaitScreen.Remove(loadingMultiplayerWaitItem);
            Multiplayer.Main.InitialSyncCompleted = true;
        }
        private IEnumerator RunPendingProcessors()
        {
            processorsRanLastCycle = 0;

            foreach (InitialSyncProcessor processor in processors)
            {
                if (IsWaitingToRun(processor.GetType()) && HasDependenciesSatisfied(processor))
                {
                    loadingMultiplayerWaitItem.SetProgress(cumulativeProcessorsRan, processors.Count);

                    Log.Info("Running " + processor.GetType());
                    alreadyRan.Add(processor.GetType());
                    processorsRanLastCycle++;
                    cumulativeProcessorsRan++;

                    subWaitScreenItem = WaitScreen.Add("Running " + processor.GetType().Name);
                    yield return(Multiplayer.Main.StartCoroutine(processor.Process(packet, subWaitScreenItem)));

                    WaitScreen.Remove(subWaitScreenItem);
                }
            }
        }
        private static IEnumerator PreloadCustomMusic()
        {
            WaitScreen.ManualWaitItem waitItemCustomMusic = null;
            yield return(new WaitUntil(() => WaitScreen.main != null));

            waitItemCustomMusic = WaitScreen.Add("Preloading custom music ♫");

            foreach (var audioClipPath in CustomMusic.ToList())
            {
                if (audioClipPath.Value == null)
                {
                    var loadTrackTask = LoadTrack(audioClipPath.Key);
                    yield return(loadTrackTask);

                    yield return(new WaitWhile(() => loadTrackTask.GetResult() == null));

                    var audioClip = loadTrackTask.GetResult();

                    if (audioClip.AudioClip == null)
                    {
                        CustomMusic.Remove(audioClipPath.Key);
                        failedPaths.Add(audioClipPath.Key);
                    }
                    else
                    {
                        yield return(new WaitWhile(() => audioClip.AudioClip.loadState == AudioDataLoadState.Loading));

                        RegisterAudioClip(audioClipPath.Key, audioClip.AudioClip);
                    }

                    waitItemCustomMusic.SetProgress(CustomMusic.Count(x => x.Value != null), CustomMusic.Count());
                }
            }

            WaitScreen.Remove(waitItemCustomMusic);
            CustomMusicPreload = null;
        }
Beispiel #22
0
        public CharCreationMenuEventWiring(
            CharCreationMenu charCreationMenu,
            MainMenu mainMenu,
            CharacterCreation characterCreation,
            WaitScreen waitScreen,
            CharacterList characterList,
            ErrorScreenManager errorScreenManager)
        {
            charCreationMenu.CharacterCreationCompleted += (sender, args) =>
            {
                sender.Close();
                characterCreation.StartCharacterCreation(args.CharCreationInfo);
                waitScreen.Message = "Charaktererstellung läuft...";
                waitScreen.Open();
            };

            characterCreation.CharacterCreationFailed += (sender, args) =>
            {
                charCreationMenu.SetHelpText(args.ReasonText);
                waitScreen.Close();
                errorScreenManager.ShowError(args.ReasonText, charCreationMenu.Open);
            };

            characterCreation.CharacterCreationSuccessful += sender =>
            {
                waitScreen.Message = "Lade Charakterliste...";
                waitScreen.Open();
                characterList.RefreshFromServer();
            };

            charCreationMenu.OnEscape += sender =>
            {
                sender.Close();
                mainMenu.Open();
            };
        }
Beispiel #23
0
        public AccountCreationMenuEventWiring(AccountCreationMenu accountCreationMenu, LoginMenu loginMenu, AccountCreation accountCreation, WaitScreen waitScreen)
        {
            //Escape was pressed
            accountCreationMenu.OnEscape += sender =>
            {
                loginMenu.Open();
                accountCreationMenu.Close();
            };

            //Account creation canceled.
            accountCreationMenu.ChancelSelected += sender =>
            {
                loginMenu.Open();
                accountCreationMenu.Close();
            };

            //Account creation started.
            accountCreationMenu.CreationInformationEntered += sender =>
            {
                waitScreen.Open();
                waitScreen.Message = "Accounterstellung läuft...";
                sender.Close();
                accountCreation.StartAccountCreation(accountCreationMenu.UserName, accountCreationMenu.Password);
            };

            //Account creation successful return to login menu
            accountCreation.AccountCreationSuccessful += sender =>
            {
                loginMenu.UserName = accountCreationMenu.UserName;
                loginMenu.Password = accountCreationMenu.Password;
                loginMenu.Open();

                accountCreationMenu.Close();
                waitScreen.Close();
            };

            //Account creation failed. Display error.
            accountCreation.AccountCreationFailed += (sender, args) =>
            {
                accountCreationMenu.SetErrorText(args.ReasonText);
                accountCreationMenu.Open();
                waitScreen.Close();
            };
        }
Beispiel #24
0
        public MainMenuEventWiring(
            MainMenu mainMenu,
            CharCreationMenu charCreationMenu,
            ExitMenu exitMenu,
            ScriptClient client,
            LoginMenu loginMenu,
            Login.Login login,
            WaitScreen waitScreen,
            CharacterSelectionMenu selectionMenu,
            JoinGameSender joinGameSender,
            CharacterList characterList,
            ErrorScreenManager errorScreenManager)
        {
            mainMenu.CharacterCreationSelected += sender =>
            {
                sender.Close();
                charCreationMenu.Open();
            };

            mainMenu.JoinGameSelected += sender =>
            {
                if (!characterList.TryGetActiveCharacter(out Character.Character character))
                {
                    mainMenu.Close();
                    errorScreenManager.ShowError("Kein Character gewählt!", mainMenu.Open);
                    return;
                }

                joinGameSender.StartJoinGame(character);
                waitScreen.Message = "Trete Spiel bei...";
                waitScreen.Open();
                mainMenu.Close();

                //client.SendSpectateMessage();
            };

            mainMenu.BackToLoginSelected += sender =>
            {
                sender.Close();
                waitScreen.Message = "Logout läuft...";
                waitScreen.Open();
                login.StartLogout();
            };

            mainMenu.CharacterSelectionSelected += sender =>
            {
                selectionMenu.Open();
                sender.Close();
            };

            mainMenu.ExitGameSelected += sender =>
            {
                sender.Close();
                exitMenu.Open();
            };

            joinGameSender.JoinGameRequestSuccessful += sender =>
            {
                //The server accepted the join request, close the ui, from here on the server does most of the controlling.
                waitScreen.Close();
            };

            joinGameSender.JoinGameFailed += (sender, args) =>
            {
                //Something went wrong show an error message to the player and then return to the main menu.
                waitScreen.Close();
                errorScreenManager.ShowError(args.ReasonText, mainMenu.Open);
            };
        }
Beispiel #25
0
        public InGameMenuWiring(ScriptClient client, InGameMenu inGameMenu, ExitMenu exitMenu, WaitScreen waitScreen, Login.Login login, CharacterList characterList, LeaveGameSender leaveMsgSender)
        {
            inGameMenu.BackToMainMenu += sender =>
            {
                leaveMsgSender.SendLeaveGameMessage();
                waitScreen.Message = "Lade Charakterliste...";
                waitScreen.Open();
                sender.Close();
                characterList.RefreshFromServer();
            };


            inGameMenu.BackToLoginSelected += sender =>
            {
                sender.Close();
                waitScreen.Message = "Logout läuft...";
                waitScreen.Open();
                login.StartLogout();
            };


            inGameMenu.ExitGameSelected += sender =>
            {
                sender.Close();
                exitMenu.Open();
            };

            inGameMenu.OnEscape += sender => sender.Close();
        }
Beispiel #26
0
        public LoginMenuWiring(
            LoginMenu loginMenu,
            WaitScreen waitScreen,
            Login.Login login,
            IEnumerable <IClosableMenu> closableMenus,
            CharacterList characterList,
            AccountCreationMenu accountCreationMenu,
            ErrorScreenManager errorScreenManager)
        {
            var menus = closableMenus.ToArray();

            //Login credentials have been entered. Switch to the waiting screen and try to login an the server.
            loginMenu.CredentialsEntered += (sender, args) =>
            {
                //Missing parts of the login information, show an error message.
                if (string.IsNullOrWhiteSpace(args.UserName) || string.IsNullOrWhiteSpace(args.Password))
                {
                    errorScreenManager.ShowError("Accountname und Password eingeben!", loginMenu.Open);
                    return;
                }

                waitScreen.Message = "Login läuft...";
                waitScreen.Open();
                loginMenu.Close();
                login.StartLogin(args.UserName, args.Password);
            };

            //Login got denied for some reason. Show an error message and the go back to the login screen.
            login.LoginDenied += (sender, args) =>
            {
                waitScreen.Close();
                errorScreenManager.ShowError($"Login fehlgeschlagen: {args.ReasonText}", loginMenu.Open);
            };

            //Login successful. Go to the main menu.
            login.LoginAcknowledged += (sender, args) =>
            {
                waitScreen.Message = "Lade Charakterliste...";
                waitScreen.Open();
                characterList.RefreshFromServer();
            };

            //Open the account creation menu.
            loginMenu.CreateAccountSelected += sender =>
            {
                accountCreationMenu.Open();
                loginMenu.Close();
            };


            login.LoggedOut += sender =>
            {
                //CGameManager.ExitSession();
                //Close all menus on logout(its somewhat of a cleanup).
                foreach (var closableMenu in menus)
                {
                    closableMenu.Close();
                }
                loginMenu.Open();
            };
        }