public LevelManager.CheckpointData.PlayerData MakeCheckpoint() { LevelManager.CheckpointData.PlayerData data = new LevelManager.CheckpointData.PlayerData(); data.worldPosition = transform.position; data.localRotation = transform.localEulerAngles; data.health = currentHealth; data.armor = armorDurability; data.maxArmor = maxArmorDurability; data.rageAmount = rageAmount; data.guns = new LevelManager.CheckpointData.GunData[guns.Length]; for (int i = 1; i < guns.Length; i++) { if (guns[i] != null) { data.guns[i].collected = true; data.guns[i].ammoRemaining = guns[i].ammoRemaining; } else { data.guns[i].collected = false; } } data.keys = new List <KeyPickup.Key>(keys); data.gunIndex = currentGunIndex; return(data); }
public void LoadCheckpoint(LevelManager.CheckpointData.PlayerData data) { deathText.SetActive(false); isAlive = true; GetComponent <CharacterController>().enabled = false; StartCoroutine(LockControlTemporarily()); transform.position = data.worldPosition; transform.localEulerAngles = data.localRotation; minimapCamera.enabled = false; CharacterActions.instance.fpsCamera.enabled = false; CharacterActions.instance.fpsCamera.transform.localEulerAngles = Vector3.zero; CharacterActions.instance.fpsCamera.enabled = true; minimapCamera.enabled = true; currentHealth = data.health; armorDurability = data.armor; maxArmorDurability = data.maxArmor; rageAmount = data.rageAmount; hurtVignette.color = new Color(1, 1, 1, 0); for (int i = 1; i < data.guns.Length; i++) { if (data.guns[i].collected) { guns[i].SetAmmo(data.guns[i].ammoRemaining); } else if (guns[i] != null) { guns[i] = null; } } ClearKeys(); keys = new List <KeyPickup.Key>(data.keys); SwapGun(data.gunIndex); GetComponent <CharacterController>().enabled = true; ResetUI(); }