Firstborn/Assets/Scripts/ScreenshotTool.cs

88 lines
2.6 KiB
C#
Raw Normal View History

using System.Collections;
using System.IO;
using System;
using UnityEngine;
using RPGCreationKit;
using RPGCreationKit.SaveSystem;
using UnityEngine.UI;
public class ScreenshotTool : MonoBehaviour
{
[Header("Game Objects")]
[SerializeField] private GameObject UI;
[SerializeField] private Slider superSizeSlider;
[SerializeField] private INIReader INI;
[Header("Fills out on initialization")]
[SerializeField] private string outputPath;
[SerializeField] private string filePrefix;
[SerializeField] private string lastSavedFileName;
[SerializeField] private string ImageName;
[SerializeField] private int SSCount = 0;
[SerializeField, Range(0, 3)] public int Quality = 3;
[SerializeField] private string Extension = "EXR";
private bool IsActing = false;
void Start() {
outputPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments)+@"\My Games\Firstborn\Screenshots";
if (Directory.Exists(outputPath) == false){
Directory.CreateDirectory(outputPath);
}
InitializeSettings();
}
private void InitializeSettings() {
SSCount = INI.ReadSettingInt("Screenshot Tool", "Screenshot", 0);
superSizeSlider.value = (float)INI.ReadSettingInt("Screenshot Tool", "ScreenshotMultiplier", 0);
}
public void CaptureScreenshot()
{
if (IsActing == false) {
IsActing = true;
PlayerData data = SaveSystemManager.instance.saveFile.PlayerData;
string saveFolder = Path.Combine(outputPath, data.playerName);
if (Directory.Exists(saveFolder) == false) {
Directory.CreateDirectory(saveFolder);
}
if (Directory.Exists(saveFolder)) {
filePrefix = data.playerLocation;
ImageName = SSCount + "_" + filePrefix + "." + Extension;
string fileName = Path.Combine(saveFolder, ImageName);
UI.SetActive(false);
ScreenCapture.CaptureScreenshot(fileName, (int)superSizeSlider.value);
StartCoroutine(UIOn());
}
} else {
Debug.Log("We are already taking a screenshot!");
}
}
public void SaveSuperSizeSlider() {
INI.SaveSettingInt("Screenshot Tool", "ScreenshotMultiplier", (int)superSizeSlider.value);
}
IEnumerator UIOn() {
yield return new WaitForSeconds(1f);
UI.SetActive(true);
AlertMessage.instance.InitAlertMessage("Saved as: " + ImageName, 3f);
SSCount += 1;
IsActing = false;
INI.SaveSettingInt("Screenshot Tool", "Screenshot", SSCount);
}
public void SetQuality(int A) {
Quality = A;
if (A == 3) {
Extension = "EXR";
} else if (A == 2) {
Extension = "TIFF";
} else if (A == 1) {
Extension = "PNG";
} else if (A == 0) {
Extension = "JPG";
}
INI.SaveSettingInt("Screenshot Tool", "ScreenshotExtension", A);
}
}