void Awake() { playerEnterExit = GetComponent <PlayerEnterExit>(); if (!playerEnterExit) { throw new Exception("PlayerEnterExit not found."); } playerCamera = GetComponentInChildren <Camera>(); if (!playerCamera) { throw new Exception("Player Camera not found."); } playerMouseLook = playerCamera.GetComponent <PlayerMouseLook>(); if (!playerMouseLook) { throw new Exception("PlayerMouseLook not found."); } playerMotor = GetComponent <PlayerMotor>(); if (!playerMotor) { throw new Exception("PlayerMotor not found."); } playerEntityBehaviour = GetComponent <DaggerfallEntityBehaviour>(); if (!playerEntityBehaviour) { throw new Exception("PlayerEntityBehaviour not found."); } SaveLoadManager.RegisterSerializableGameObject(this); }
public void LoadLevel(string levelName) { if (!EditorManager.LevelExists(levelName)) { return; } string path = Application.persistentDataPath + "/Wolf3DLevels/" + levelName + ".json"; bool fromRes = false; if (!File.Exists(path)) { TextAsset level = Resources.Load <TextAsset>($"Maps/{levelName}"); if (level) { fromRes = true; path = levelName; } else { Debug.LogError($"Couldn't find map with name {levelName}"); return; } } Debug.Log("Opening level " + path); ClearLevel(); level = LevelSerialiser.LoadLevel(path, fromRes); LoadTiles(); LoadEntities(); mouseLook = playerObject.GetComponentInChildren <PlayerMouseLook>(); mapInfoPanel.SetValues(level.name, tilesCount, enemyCount); mapNameText.text = level.name; }
public void SetMouseLookEnabled(bool v) { WeaponController weaponController = Player.MainPlayer?.GetComponent <WeaponController>(); if (weaponController != null) { if (v) { weaponController.DrawCrosshair = _wasCrosshairEnabled; } else { _wasCrosshairEnabled = weaponController.DrawCrosshair; weaponController.DrawCrosshair = false; } } PlayerMouseLook playerMouseLook = Player.MainPlayer?.MovementController?.GetComponent <PlayerMouseLook>(); if (playerMouseLook == null) { return; } playerMouseLook.enabled = v; }
private void DoHideCursor(bool hide) { PlayerMouseLook mLook = GameManager.Instance.PlayerMouseLook; if (mLook != null) { mLook.ForceHideCursor(hide && hideCursor); } }
// Start is called before the first frame update void Start() { rb = GetComponent <Rigidbody2D>(); MouseLook = GetComponent <PlayerMouseLook>(); currentState = airState; StartCoroutine(DecreaseHealthRoutine()); }
public static string Execute(params string[] args) { PlayerMouseLook mLook = GameManager.Instance.PlayerMouseLook;//GameObject.FindObjectOfType<PlayerMouseLook>(); if (mLook == null) { return(error); } else { //mLook.smoothing = new Vector2(speed, speed); mLook.enableSmoothing = !mLook.enableSmoothing; return(string.Format("Mouse smoothing is on: {0}", mLook.enableSmoothing.ToString())); } }
void Awake() { playerContext.PMovement = GetComponent <PlayerMovement>(); playerContext.PWallrun = GetComponent <PlayerWallrun>(); playerContext.PStamina = GetComponent <PlayerStamina>(); playerContext.PController = GetComponent <CharacterController>(); playerContext.FootstepAudio = GetComponentInChildren <FootstepAudioScript>(); playerContext.PlayerTransform = transform; playerContext.CameraTransform = GameObject.FindGameObjectWithTag("PlayerCamera").transform; playerContext.TransformChanges = GetComponent <TransformChanges>(); playerContext.PMouse = GetComponentInChildren <PlayerMouseLook>(); pGrab = GetComponent <PlayerGrab>(); pMLook = GetComponent <PlayerMouseLook>(); }
public static string Execute(params string[] args) { PlayerMouseLook mLook = GameManager.Instance.PlayerMouseLook;//GameObject.FindObjectOfType<PlayerMouseLook>(); float speed = 0; if (args == null || args.Length < 1 || !float.TryParse(args[0], out speed)) { if (mLook) { Console.Log(string.Format("Current mouse smoothing: {0}", mLook.smoothing)); } return(HelpCommand.Execute(SetMouseSmoothing.name)); } else if (mLook == null) { return(error); } else { mLook.smoothing = new Vector2(speed, speed); return(string.Format("Set mouse smoothing to: {0}", mLook.smoothing.ToString())); } }
void Start() { dfUnity = DaggerfallUnity.Instance; streamingWorld = GameObject.FindObjectOfType<StreamingWorld>(); playerEnterExit = GetComponent<PlayerEnterExit>(); playerGPS = GetComponent<PlayerGPS>(); playerMotor = GetComponent<PlayerMotor>(); playerMouseLook = GameObject.FindObjectOfType<PlayerMouseLook>(); titleScreen = GameObject.FindObjectOfType<ShowTitleScreen>(); // Get starting run speed if (playerMotor) startRunSpeed = playerMotor.runSpeed; // Get starting torch range if (PlayerTorch != null) startTorchRange = PlayerTorch.range; }
public void ApplyStartSettings() { // Resolution if (DaggerfallUnity.Settings.ExclusiveFullscreen && DaggerfallUnity.Settings.Fullscreen) { Screen.SetResolution( DaggerfallUnity.Settings.ResolutionWidth, DaggerfallUnity.Settings.ResolutionHeight, FullScreenMode.ExclusiveFullScreen); } else { Screen.SetResolution( DaggerfallUnity.Settings.ResolutionWidth, DaggerfallUnity.Settings.ResolutionHeight, DaggerfallUnity.Settings.Fullscreen); } // Camera settings GameObject cameraObject = GameObject.FindGameObjectWithTag("MainCamera"); if (cameraObject) { // Set camera FOV Camera camera = cameraObject.GetComponent <Camera>(); if (camera) { camera.fieldOfView = DaggerfallUnity.Settings.FieldOfView; } // Set mouse look PlayerMouseLook mouseLook = cameraObject.GetComponent <PlayerMouseLook>(); if (mouseLook) { mouseLook.invertMouseY = DaggerfallUnity.Settings.InvertMouseVertical; } // Set mouse look smoothing if (mouseLook) { mouseLook.enableSmoothing = DaggerfallUnity.Settings.MouseLookSmoothing; } // Set mouse look sensitivity if (mouseLook) { mouseLook.sensitivityScale = DaggerfallUnity.Settings.MouseLookSensitivity; } } // Set shadow resolution GameManager.UpdateShadowResolution(); // VSync settings if (DaggerfallUnity.Settings.VSync) { QualitySettings.vSyncCount = 1; } else { QualitySettings.vSyncCount = 0; } // Target frame rate settings // Does nothing if VSync enabled // Default is 0 but anything below 30 is ignored and treated as disabled if (DaggerfallUnity.Settings.TargetFrameRate >= 30 && !DaggerfallUnity.Settings.VSync) { Application.targetFrameRate = DaggerfallUnity.Settings.TargetFrameRate; } // Filter settings DaggerfallUnity.Instance.MaterialReader.MainFilterMode = (FilterMode)DaggerfallUnity.Settings.MainFilterMode; DaggerfallUnity.Instance.MaterialReader.CompressModdedTextures = DaggerfallUnity.Settings.CompressModdedTextures; // HUD settings DaggerfallHUD hud = DaggerfallUI.Instance.DaggerfallHUD; if (hud != null) //null at startup { hud.ShowCrosshair = DaggerfallUnity.Settings.Crosshair; } // Weapon swing settings WeaponManager weaponManager = GameManager.Instance.WeaponManager; weaponManager.AttackThreshold = DaggerfallUnity.Settings.WeaponAttackThreshold; TransportManager transportManager = GameManager.Instance.TransportManager; // Weapon hand settings // Only supporting left-hand rendering for now // More handedness options may be added later if (DaggerfallUnity.Settings.Handedness == 1) { weaponManager.ScreenWeapon.FlipHorizontal = true; } // GodMode setting PlayerEntity playerEntity = FindPlayerEntity(); playerEntity.GodMode = GodMode; PlayerSpeedChanger speedChanger = FindPlayerSpeedChanger(); speedChanger.ToggleSneak = DaggerfallUnity.Settings.ToggleSneak; // Enable/disable videos DaggerfallUI.Instance.enableVideos = EnableVideos; // Streaming world terrain distance GameManager.Instance.StreamingWorld.TerrainDistance = DaggerfallUnity.Settings.TerrainDistance; }
void ApplyStartSettings() { // Resolution Screen.SetResolution( DaggerfallUnity.Settings.ResolutionWidth, DaggerfallUnity.Settings.ResolutionHeight, DaggerfallUnity.Settings.Fullscreen); // Camera settings GameObject cameraObject = GameObject.FindGameObjectWithTag("MainCamera"); if (cameraObject) { // Set camera FOV Camera camera = cameraObject.GetComponent <Camera>(); if (camera) { camera.fieldOfView = DaggerfallUnity.Settings.FieldOfView; } // Set mouse look PlayerMouseLook mouseLook = cameraObject.GetComponent <PlayerMouseLook>(); if (mouseLook) { mouseLook.invertMouseY = DaggerfallUnity.Settings.InvertMouseVertical; } // Set mouse look smoothing if (mouseLook) { mouseLook.enableSmoothing = DaggerfallUnity.Settings.MouseLookSmoothing; } // Set mouse look sensitivity if (mouseLook) { mouseLook.sensitivityScale = DaggerfallUnity.Settings.MouseLookSensitivity; } // Set rendering path if (DaggerfallUnity.Settings.UseLegacyDeferred) { camera.renderingPath = RenderingPath.DeferredLighting; } } // VSync settings if (DaggerfallUnity.Settings.VSync) { QualitySettings.vSyncCount = 1; } else { QualitySettings.vSyncCount = 0; } // Filter settings DaggerfallUnity.Instance.MaterialReader.MainFilterMode = (FilterMode)DaggerfallUnity.Settings.MainFilterMode; // HUD settings DaggerfallHUD hud = DaggerfallUI.Instance.DaggerfallHUD; if (hud != null) { hud.ShowCrosshair = DaggerfallUnity.Settings.Crosshair; } // Weapon swing settings WeaponManager weaponManager = GameManager.Instance.WeaponManager; weaponManager.HorizontalThreshold = DaggerfallUnity.Settings.WeaponSwingThreshold; weaponManager.VerticalThreshold = DaggerfallUnity.Settings.WeaponSwingThreshold; weaponManager.TriggerCount = DaggerfallUnity.Settings.WeaponSwingTriggerCount; // Weapon hand settings // Only supporting left-hand rendering for now // More handedness options may be added later if (DaggerfallUnity.Settings.Handedness == 1) { weaponManager.RightHandWeapon.LeftHand = true; } // GodMode setting playerHealth.GodMode = GodMod; // Enable/disable videos DaggerfallUI.Instance.enableVideos = EnableVideos; // Streaming world terrain distance int terrainDistance = DaggerfallUnity.Settings.TerrainDistance; if (DaggerfallUnity.Settings.Nystul_IncreasedTerrainDistance) { // Reduce terrain distance by 1 if far terrain enabled terrainDistance = Mathf.Clamp(terrainDistance - 1, 1, 4); } GameManager.Instance.StreamingWorld.TerrainDistance = terrainDistance; }
void Awake() { playerEnterExit = GetComponent<PlayerEnterExit>(); if (!playerEnterExit) throw new Exception("PlayerEnterExit not found."); playerCamera = GetComponentInChildren<Camera>(); if (!playerCamera) throw new Exception("Player Camera not found."); playerMouseLook = playerCamera.GetComponent<PlayerMouseLook>(); if (!playerMouseLook) throw new Exception("PlayerMouseLook not found."); playerMotor = GetComponent<PlayerMotor>(); if (!playerMotor) throw new Exception("PlayerMotor not found."); playerEntityBehaviour = GetComponent<DaggerfallEntityBehaviour>(); if (!playerEntityBehaviour) throw new Exception("PlayerEntityBehaviour not found."); SaveLoadManager.RegisterSerializableGameObject(this); }
void ApplyStartSettings() { // Camera settings GameObject cameraObject = GameObject.FindGameObjectWithTag("MainCamera"); if (cameraObject) { // Set camera FOV Camera camera = cameraObject.GetComponent <Camera>(); if (camera) { camera.fieldOfView = DaggerfallUnity.Settings.FieldOfView; } // Set mouse look PlayerMouseLook mouseLook = cameraObject.GetComponent <PlayerMouseLook>(); if (mouseLook) { mouseLook.invertMouseY = DaggerfallUnity.Settings.InvertMouseVertical; } // Set mouse look smoothing if (mouseLook) { mouseLook.enableSmoothing = DaggerfallUnity.Settings.MouseLookSmoothing; } // Set mouse look sensitivity if (mouseLook) { mouseLook.sensitivityScale = DaggerfallUnity.Settings.MouseLookSensitivity; } // Set rendering path if (DaggerfallUnity.Settings.UseLegacyDeferred) { camera.renderingPath = RenderingPath.DeferredLighting; } } // VSync settings if (DaggerfallUnity.Settings.VSync) { QualitySettings.vSyncCount = 1; } else { QualitySettings.vSyncCount = 0; } // Filter settings DaggerfallUnity.Instance.MaterialReader.MainFilterMode = (FilterMode)DaggerfallUnity.Settings.MainFilterMode; // HUD settings DaggerfallHUD hud = DaggerfallUI.Instance.DaggerfallHUD; if (hud != null) { hud.ShowCrosshair = DaggerfallUnity.Settings.Crosshair; } // Weapon hand settings WeaponManager weaponManager = GameManager.Instance.WeaponManager; weaponManager.RightHandWeapon.LeftHand = DaggerfallUnity.Settings.ShowWeaponLeftHand; // Weapon swing settings weaponManager.HorizontalThreshold = DaggerfallUnity.Settings.WeaponSwingThreshold; weaponManager.VerticalThreshold = DaggerfallUnity.Settings.WeaponSwingThreshold; weaponManager.TriggerCount = DaggerfallUnity.Settings.WeaponSwingTriggerCount; // GodMode setting playerHealth.GodMode = GodMod; // Enable/disable videos DaggerfallUI.Instance.enableVideos = EnableVideos; }
void StartFromClassicSave() { DaggerfallUnity.ResetUID(); QuestMachine.Instance.ClearState(); RaiseOnNewGameEvent(); ResetWeaponManager(); // Save index must be in range if (classicSaveIndex < 0 || classicSaveIndex >= 6) { throw new IndexOutOfRangeException("classicSaveIndex out of range."); } // Open saves in parent path of Arena2 folder string path = SaveLoadManager.Instance.DaggerfallSavePath; SaveGames saveGames = new SaveGames(path); if (!saveGames.IsPathOpen) { throw new Exception(string.Format("Could not open Daggerfall saves path {0}", path)); } // Open save index if (!saveGames.TryOpenSave(classicSaveIndex)) { string error = string.Format("Could not open classic save index {0}.", classicSaveIndex); DaggerfallUI.MessageBox(error); DaggerfallUnity.LogMessage(string.Format(error), true); return; } // Get required save data SaveTree saveTree = saveGames.SaveTree; SaveVars saveVars = saveGames.SaveVars; SaveTreeBaseRecord positionRecord = saveTree.FindRecord(RecordTypes.CharacterPositionRecord); if (NoWorld) { playerEnterExit.DisableAllParents(); } else { // Set player to world position playerEnterExit.EnableExteriorParent(); StreamingWorld streamingWorld = FindStreamingWorld(); int worldX = positionRecord.RecordRoot.Position.WorldX; int worldZ = positionRecord.RecordRoot.Position.WorldZ; streamingWorld.TeleportToWorldCoordinates(worldX, worldZ); streamingWorld.suppressWorld = false; } GameObject cameraObject = GameObject.FindGameObjectWithTag("MainCamera"); PlayerMouseLook mouseLook = cameraObject.GetComponent <PlayerMouseLook>(); if (mouseLook) { // Classic save value ranges from -256 (looking up) to 256 (looking down). // The maximum up and down range of view in classic is similar to 45 degrees up and down in DF Unity. float pitch = positionRecord.RecordRoot.Pitch; if (pitch != 0) { pitch = (pitch * 45 / 256); } mouseLook.Pitch = pitch; float yaw = positionRecord.RecordRoot.Yaw; // In classic saves 2048 units of yaw is 360 degrees. if (yaw != 0) { yaw = (yaw * 360 / 2048); } mouseLook.Yaw = yaw; } // Set whether the player's weapon is drawn GameManager.Instance.WeaponManager.Sheathed = (!saveVars.WeaponDrawn); // Set game time DaggerfallUnity.Instance.WorldTime.Now.FromClassicDaggerfallTime(saveVars.GameTime); // Get character record List <SaveTreeBaseRecord> records = saveTree.FindRecords(RecordTypes.Character); if (records.Count != 1) { throw new Exception("SaveTree CharacterRecord not found."); } // Get prototypical character document data CharacterRecord characterRecord = (CharacterRecord)records[0]; characterDocument = characterRecord.ToCharacterDocument(); // Assign data to player entity PlayerEntity playerEntity = FindPlayerEntity(); playerEntity.AssignCharacter(characterDocument, characterRecord.ParsedData.level, characterRecord.ParsedData.maxHealth, false); // Assign biography modifiers playerEntity.BiographyResistDiseaseMod = saveVars.BiographyResistDiseaseMod; playerEntity.BiographyResistMagicMod = saveVars.BiographyResistMagicMod; playerEntity.BiographyAvoidHitMod = saveVars.BiographyAvoidHitMod; playerEntity.BiographyResistPoisonMod = saveVars.BiographyResistPoisonMod; playerEntity.BiographyFatigueMod = saveVars.BiographyFatigueMod; // Assign faction data playerEntity.FactionData.ImportClassicReputation(saveVars); // Assign global variables playerEntity.GlobalVars.ImportClassicGlobalVars(saveVars); // Set time of last check for raising skills playerEntity.TimeOfLastSkillIncreaseCheck = saveVars.LastSkillCheckTime; // Assign items to player entity playerEntity.AssignItems(saveTree); // Assign gold pieces playerEntity.GoldPieces = (int)characterRecord.ParsedData.physicalGold; // GodMode setting playerEntity.GodMode = saveVars.GodMode; // Setup bank accounts var bankRecords = saveTree.FindRecord(RecordTypes.BankAccount); Banking.DaggerfallBankManager.ReadNativeBankData(bankRecords); // Get regional data. playerEntity.RegionData = saveVars.RegionData; // Set time tracked by playerEntity for game minute-based updates playerEntity.LastGameMinutes = saveVars.GameTime; // Start game DaggerfallUI.Instance.PopToHUD(); GameManager.Instance.PauseGame(false); DaggerfallUI.Instance.FadeHUDFromBlack(); DaggerfallUI.PostMessage(PostStartMessage); lastStartMethod = StartMethods.LoadClassicSave; SaveIndex = -1; if (OnStartGame != null) { OnStartGame(this, null); } }
void ApplyStartSettings() { // Resolution Screen.SetResolution( DaggerfallUnity.Settings.ResolutionWidth, DaggerfallUnity.Settings.ResolutionHeight, DaggerfallUnity.Settings.Fullscreen); // Camera settings GameObject cameraObject = GameObject.FindGameObjectWithTag("MainCamera"); if (cameraObject) { // Set camera FOV Camera camera = cameraObject.GetComponent <Camera>(); if (camera) { camera.fieldOfView = DaggerfallUnity.Settings.FieldOfView; } // Set mouse look PlayerMouseLook mouseLook = cameraObject.GetComponent <PlayerMouseLook>(); if (mouseLook) { mouseLook.invertMouseY = DaggerfallUnity.Settings.InvertMouseVertical; } // Set mouse look smoothing if (mouseLook) { mouseLook.enableSmoothing = DaggerfallUnity.Settings.MouseLookSmoothing; } // Set mouse look sensitivity if (mouseLook) { mouseLook.sensitivityScale = DaggerfallUnity.Settings.MouseLookSensitivity; } // Set rendering path if (DaggerfallUnity.Settings.UseLegacyDeferred) { camera.renderingPath = RenderingPath.DeferredLighting; } } // Shadow Resoltion Mode switch (DaggerfallUnity.Settings.ShadowResolutionMode) { case 0: QualitySettings.shadowResolution = ShadowResolution.Low; break; case 1: default: QualitySettings.shadowResolution = ShadowResolution.Medium; break; case 2: QualitySettings.shadowResolution = ShadowResolution.High; break; case 3: QualitySettings.shadowResolution = ShadowResolution.VeryHigh; break; } // VSync settings if (DaggerfallUnity.Settings.VSync) { QualitySettings.vSyncCount = 1; } else { QualitySettings.vSyncCount = 0; } // Filter settings DaggerfallUnity.Instance.MaterialReader.MainFilterMode = (FilterMode)DaggerfallUnity.Settings.MainFilterMode; DaggerfallUnity.Instance.MaterialReader.CompressModdedTextures = DaggerfallUnity.Settings.CompressModdedTextures; // HUD settings DaggerfallHUD hud = DaggerfallUI.Instance.DaggerfallHUD; if (hud != null) //null at startup { hud.ShowCrosshair = DaggerfallUnity.Settings.Crosshair; } // Weapon swing settings WeaponManager weaponManager = GameManager.Instance.WeaponManager; weaponManager.AttackThreshold = DaggerfallUnity.Settings.WeaponAttackThreshold; TransportManager transportManager = GameManager.Instance.TransportManager; // Weapon hand settings // Only supporting left-hand rendering for now // More handedness options may be added later if (DaggerfallUnity.Settings.Handedness == 1) { weaponManager.ScreenWeapon.FlipHorizontal = true; } // GodMode setting PlayerEntity playerEntity = FindPlayerEntity(); playerEntity.GodMode = GodMode; // Enable/disable videos DaggerfallUI.Instance.enableVideos = EnableVideos; // Streaming world terrain distance GameManager.Instance.StreamingWorld.TerrainDistance = DaggerfallUnity.Settings.TerrainDistance; }
void StartFromClassicSave() { DaggerfallUnity.ResetUID(); QuestMachine.Instance.ClearState(); RaiseOnNewGameEvent(); ResetWeaponManager(); // Save index must be in range if (classicSaveIndex < 0 || classicSaveIndex >= 6) { throw new IndexOutOfRangeException("classicSaveIndex out of range."); } // Open saves in parent path of Arena2 folder string path = SaveLoadManager.Instance.DaggerfallSavePath; SaveGames saveGames = new SaveGames(path); if (!saveGames.IsPathOpen) { throw new Exception(string.Format("Could not open Daggerfall saves path {0}", path)); } // Open save index if (!saveGames.TryOpenSave(classicSaveIndex)) { string error = string.Format("Could not open classic save index {0}.", classicSaveIndex); DaggerfallUI.MessageBox(error); DaggerfallUnity.LogMessage(string.Format(error), true); return; } // Get required save data SaveTree saveTree = saveGames.SaveTree; SaveVars saveVars = saveGames.SaveVars; SaveTreeBaseRecord positionRecord = saveTree.FindRecord(RecordTypes.CharacterPositionRecord); if (NoWorld) { playerEnterExit.DisableAllParents(); } else { // Set player to world position playerEnterExit.EnableExteriorParent(); StreamingWorld streamingWorld = FindStreamingWorld(); int worldX = positionRecord.RecordRoot.Position.WorldX; int worldZ = positionRecord.RecordRoot.Position.WorldZ; streamingWorld.TeleportToWorldCoordinates(worldX, worldZ); streamingWorld.suppressWorld = false; } GameObject cameraObject = GameObject.FindGameObjectWithTag("MainCamera"); PlayerMouseLook mouseLook = cameraObject.GetComponent <PlayerMouseLook>(); if (mouseLook) { // Classic save value ranges from -256 (looking up) to 256 (looking down). // The maximum up and down range of view in classic is similar to 45 degrees up and down in DF Unity. float pitch = positionRecord.RecordRoot.Pitch; if (pitch != 0) { pitch = (pitch * 45 / 256); } mouseLook.Pitch = pitch; float yaw = positionRecord.RecordRoot.Yaw; // In classic saves 2048 units of yaw is 360 degrees. if (yaw != 0) { yaw = (yaw * 360 / 2048); } mouseLook.Yaw = yaw; } // Set whether the player's weapon is drawn WeaponManager weaponManager = GameManager.Instance.WeaponManager; weaponManager.Sheathed = (!saveVars.WeaponDrawn); // Set game time DaggerfallUnity.Instance.WorldTime.Now.FromClassicDaggerfallTime(saveVars.GameTime); // Get character record List <SaveTreeBaseRecord> records = saveTree.FindRecords(RecordTypes.Character); if (records.Count != 1) { throw new Exception("SaveTree CharacterRecord not found."); } // Get prototypical character document data CharacterRecord characterRecord = (CharacterRecord)records[0]; characterDocument = characterRecord.ToCharacterDocument(); // Assign data to player entity PlayerEntity playerEntity = FindPlayerEntity(); playerEntity.AssignCharacter(characterDocument, characterRecord.ParsedData.level, characterRecord.ParsedData.maxHealth, false); // Assign biography modifiers playerEntity.BiographyResistDiseaseMod = saveVars.BiographyResistDiseaseMod; playerEntity.BiographyResistMagicMod = saveVars.BiographyResistMagicMod; playerEntity.BiographyAvoidHitMod = saveVars.BiographyAvoidHitMod; playerEntity.BiographyResistPoisonMod = saveVars.BiographyResistPoisonMod; playerEntity.BiographyFatigueMod = saveVars.BiographyFatigueMod; // Assign faction data playerEntity.FactionData.ImportClassicReputation(saveVars); // Assign global variables playerEntity.GlobalVars.ImportClassicGlobalVars(saveVars); // Set time of last check for raising skills playerEntity.TimeOfLastSkillIncreaseCheck = saveVars.LastSkillCheckTime; // Assign items to player entity playerEntity.AssignItems(saveTree); // Assign guild memberships playerEntity.AssignGuildMemberships(saveTree); // Assign diseases and poisons to player entity playerEntity.AssignDiseasesAndPoisons(saveTree); // Assign gold pieces playerEntity.GoldPieces = (int)characterRecord.ParsedData.physicalGold; // Assign weapon hand being used weaponManager.UsingRightHand = !saveVars.UsingLeftHandWeapon; // GodMode setting playerEntity.GodMode = saveVars.GodMode; // Setup bank accounts var bankRecords = saveTree.FindRecord(RecordTypes.BankAccount); Banking.DaggerfallBankManager.ReadNativeBankData(bankRecords); // Get regional data. playerEntity.RegionData = saveVars.RegionData; // Set time tracked by playerEntity for game minute-based updates playerEntity.LastGameMinutes = saveVars.GameTime; // Get breath remaining if player was submerged (0 if they were not in the water) playerEntity.CurrentBreath = saveVars.BreathRemaining; // TODO: Import classic spellbook playerEntity.DeserializeSpellbook(null); // Get last type of crime committed playerEntity.CrimeCommitted = (PlayerEntity.Crimes)saveVars.CrimeCommitted; // Get weather byte[] climateWeathers = saveVars.ClimateWeathers; // Enums for thunder and snow are reversed in classic and Unity, so they are converted here. for (int i = 0; i < climateWeathers.Length; i++) { // TODO: 0x80 flag can be set for snow or rain, to add fog to these weathers. This isn't in DF Unity yet, so // temporarily removing the flag. climateWeathers[i] &= 0x7f; if (climateWeathers[i] == 5) { climateWeathers[i] = 6; } else if (climateWeathers[i] == 6) { climateWeathers[i] = 5; } } GameManager.Instance.WeatherManager.PlayerWeather.ClimateWeathers = climateWeathers; // Load character biography text playerEntity.BackStory = saveGames.BioFile.Lines; // Validate spellbook item DaggerfallUnity.Instance.ItemHelper.ValidateSpellbookItem(playerEntity); // Start game DaggerfallUI.Instance.PopToHUD(); GameManager.Instance.PauseGame(false); DaggerfallUI.Instance.FadeBehaviour.FadeHUDFromBlack(); DaggerfallUI.PostMessage(PostStartMessage); lastStartMethod = StartMethods.LoadClassicSave; SaveIndex = -1; if (OnStartGame != null) { OnStartGame(this, null); } }
public void ApplyStartSettings() { // Resolution if (DaggerfallUnity.Settings.ExclusiveFullscreen && DaggerfallUnity.Settings.Fullscreen) { Screen.SetResolution( DaggerfallUnity.Settings.ResolutionWidth, DaggerfallUnity.Settings.ResolutionHeight, FullScreenMode.ExclusiveFullScreen); } else { Screen.SetResolution( DaggerfallUnity.Settings.ResolutionWidth, DaggerfallUnity.Settings.ResolutionHeight, DaggerfallUnity.Settings.Fullscreen); } // Camera settings GameObject cameraObject = GameObject.FindGameObjectWithTag("MainCamera"); if (cameraObject) { // Set camera FOV Camera camera = cameraObject.GetComponent <Camera>(); if (camera) { camera.fieldOfView = DaggerfallUnity.Settings.FieldOfView; } // Set mouse look PlayerMouseLook mouseLook = cameraObject.GetComponent <PlayerMouseLook>(); if (mouseLook) { mouseLook.invertMouseY = DaggerfallUnity.Settings.InvertMouseVertical; // Set mouse look smoothing mouseLook.enableSmoothing = DaggerfallUnity.Settings.MouseLookSmoothing; // Set mouse look sensitivity mouseLook.sensitivityScale = DaggerfallUnity.Settings.MouseLookSensitivity; mouseLook.joystickSensitivityScale = DaggerfallUnity.Settings.JoystickLookSensitivity; } // Anti-aliasing method PostProcessLayer postProcessLayer = camera.GetComponent <PostProcessLayer>(); if (postProcessLayer) { switch ((AntiAliasingMethods)DaggerfallUnity.Settings.Antialiasing) { case AntiAliasingMethods.None: postProcessLayer.antialiasingMode = PostProcessLayer.Antialiasing.None; break; case AntiAliasingMethods.FXAA: postProcessLayer.antialiasingMode = PostProcessLayer.Antialiasing.FastApproximateAntialiasing; break; case AntiAliasingMethods.SMAA: postProcessLayer.antialiasingMode = PostProcessLayer.Antialiasing.SubpixelMorphologicalAntialiasing; break; case AntiAliasingMethods.TAA: postProcessLayer.antialiasingMode = PostProcessLayer.Antialiasing.TemporalAntialiasing; break; } } } InputManager.Instance.JoystickCursorSensitivity = DaggerfallUnity.Settings.JoystickCursorSensitivity; InputManager.Instance.JoystickMovementThreshold = DaggerfallUnity.Settings.JoystickMovementThreshold; InputManager.Instance.JoystickDeadzone = DaggerfallUnity.Settings.JoystickDeadzone; InputManager.Instance.EnableController = DaggerfallUnity.Settings.EnableController; Application.runInBackground = DaggerfallUnity.Settings.RunInBackground; // Set shadow resolution GameManager.UpdateShadowResolution(); // VSync settings if (DaggerfallUnity.Settings.VSync) { QualitySettings.vSyncCount = 1; } else { QualitySettings.vSyncCount = 0; } // Target frame rate settings // Does nothing if VSync enabled // Default is 0 but anything below 30 is ignored and treated as disabled if (DaggerfallUnity.Settings.TargetFrameRate >= 30 && !DaggerfallUnity.Settings.VSync) { Application.targetFrameRate = DaggerfallUnity.Settings.TargetFrameRate; } // Filter settings DaggerfallUnity.Instance.MaterialReader.MainFilterMode = (FilterMode)DaggerfallUnity.Settings.MainFilterMode; DaggerfallUnity.Instance.MaterialReader.CompressModdedTextures = DaggerfallUnity.Settings.CompressModdedTextures; // HUD settings DaggerfallHUD hud = DaggerfallUI.Instance.DaggerfallHUD; if (hud != null) //null at startup { hud.ShowCrosshair = DaggerfallUnity.Settings.Crosshair; } // Weapon swing settings WeaponManager weaponManager = GameManager.Instance.WeaponManager; weaponManager.AttackThreshold = DaggerfallUnity.Settings.WeaponAttackThreshold; TransportManager transportManager = GameManager.Instance.TransportManager; // Weapon hand settings // Only supporting left-hand rendering for now // More handedness options may be added later if (DaggerfallUnity.Settings.Handedness == 1) { weaponManager.ScreenWeapon.FlipHorizontal = true; } // GodMode setting PlayerEntity playerEntity = FindPlayerEntity(); playerEntity.GodMode = GodMode; PlayerSpeedChanger speedChanger = FindPlayerSpeedChanger(); speedChanger.ToggleSneak = DaggerfallUnity.Settings.ToggleSneak; // Enable/disable videos DaggerfallUI.Instance.enableVideos = EnableVideos; // Streaming world terrain distance GameManager.Instance.StreamingWorld.TerrainDistance = DaggerfallUnity.Settings.TerrainDistance; }