Example #1
0
 public static void HideIfCharacterCreated()
 {
     if (instance is not null &&
         CharacterCreationSystem.SharedIsCharacterCreated(ClientCurrentCharacterHelper.Character))
     {
         instance.RemoveControl();
     }
 }
Example #2
0
        private bool ServerRemote_RestoreCharacterData(CharacterProgressData data)
        {
            var character = ServerRemoteContext.Character;

            if (!Server.Core.IsLocalServer ||
                !Server.Core.IsLocalServerHoster(character))
            {
                throw new Exception("The player is not the local server hoster: " + character);
            }

            Logger.Important("New Game +: Restoring old character progress");

            // restore style
            CharacterStyleSystem.ServerSetStyle(character, data.FaceStyle, data.IsMale);
            CharacterCreationSystem.ServerSetOrigin(character, data.ProtoCharacterOrigin);

            // ensure character spawned
            CharacterCreationSystem.ServerSpawnIfReady(character);

            // restore finished quests
            var quests = character.SharedGetQuests();

            quests.ServerReset();
            foreach (var quest in data.FinishedQuests)
            {
                QuestsSystem.ServerCompleteQuest(quests,
                                                 quest,
                                                 ignoreRequirements: true,
                                                 provideReward: false);
            }

            // restore technologies
            var technologies = character.SharedGetTechnologies();

            technologies.ServerSetLearningPoints(data.LearningPoints);

            foreach (var techGroup in data.TechGroups)
            {
                technologies.ServerAddGroup(techGroup);
            }

            foreach (var techNode in data.TechNodes)
            {
                technologies.ServerAddNode(techNode);
            }

            // restore skills
            var skills = character.SharedGetSkills();

            skills.ServerReset();
            foreach (var(skill, experience) in data.Skills)
            {
                skills.ServerDebugSetSkill(skill, experience);
            }

            Logger.Important("New Game +: Finished restoring old character data");
            return(true);
        }
Example #3
0
        public static void SpawnPlayer(ICharacter character, bool isRespawn)
        {
            ServerAddTorchItemIfNoItems(character);

            if (character.IsInitialized &&
                CharacterCreationSystem.SharedIsCharacterCreated(character))
            {
                PlacePlayer(character, isRespawn);
            }
            else
            {
                // first time spawn, requires character creation
                CharacterDespawnSystem.DespawnCharacter(character);
            }
        }
Example #4
0
        private async void CreateCharacter()
        {
            (CharacterHumanFaceStyle style, bool isMale)selectedStyle
                = this.characterCustomizationControl.GetSelectedStyle();

            // show splash screen
            LoadingSplashScreenManager.Show("Character created", displayStructureInfos: false);
            await LoadingSplashScreenManager.WaitShownAsync();

            // select the style only now, when the loading splash is displayed,
            // so there is no stuttering of the loading splash screen animation
            CharacterStyleSystem.ClientChangeStyle(selectedStyle.style, selectedStyle.isMale);
            CharacterCreationSystem.ClientSelectOrigin(this.SelectedOrigin.ProtoCharacterOrigin);

            this.closeCallback();

            // allow hiding after a short delay (it will still check whether everything is loaded)
            ClientTimersSystem.AddAction(
                delaySeconds: 1.0 + Math.Min(1, Api.Client.CurrentGame.PingGameSeconds),
                LoadingSplashScreenManager.Hide);
        }