using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; namespace UltraCombos.Marvel.DrawHeroes { public class PaintSender : MonoBehaviour { [SerializeField] float interval = 1.0f; public PaintCraft.CanvasController canvas; ResourceClient client; Coroutine coroutine = null; public global::PaintCraft.Canvas.Configs.PageConfig signaturePage; [Space(10)] public UnityEvent onPaintingSaved = new UnityEvent(); private void Start() { } public void SavePainting() { if (coroutine == null) { coroutine = StartCoroutine(DoSavePainting()); } } public void SavePaintingAndSignature() { if (coroutine == null) { coroutine = StartCoroutine(DoSavePaintingAndSignature()); } } IEnumerator DoSavePainting() { yield return canvas.MakeColoringTexture(); var data = AppData.Instance; if (data.lastPainting == null) { data.lastPainting = new Texture2D(canvas.ColoringTexture.width, canvas.ColoringTexture.height, canvas.ColoringTexture.format, false); } Graphics.CopyTexture(canvas.ColoringTexture, data.lastPainting); data.lastPainting.Apply(); data.lastPainting.name = $"painting - {data.serial}"; if (data.lastThumbnail == null) { data.lastThumbnail = new Texture2D(canvas.ThumbnailTexture.width, canvas.ThumbnailTexture.height, canvas.ThumbnailTexture.format, false); } Graphics.CopyTexture(canvas.ThumbnailTexture, data.lastThumbnail); data.lastThumbnail.Apply(); data.lastThumbnail.name = $"thumbnail - {data.serial}"; global::PaintCraft.Canvas.AppData.SelectedPageConfig = signaturePage; onPaintingSaved.Invoke(); yield return new WaitForSeconds(interval); coroutine = null; } IEnumerator DoSavePaintingAndSignature() { //Debug.Log("DoSavePaintingAndSignature"); yield return canvas.MakeColoringTexture(); var data = AppData.Instance; if (data.lastPainting == null) { data.lastPainting = new Texture2D(canvas.ColoringTexture.width, canvas.ColoringTexture.height, canvas.ColoringTexture.format, false); } Graphics.CopyTexture(canvas.ColoringTexture, data.lastPainting); data.lastPainting.Apply(); data.lastPainting.name = $"painting - {data.serial}"; yield return null; if (data.lastThumbnail == null) { data.lastThumbnail = new Texture2D(canvas.ThumbnailTexture.width, canvas.ThumbnailTexture.height, canvas.ThumbnailTexture.format, false); } Graphics.CopyTexture(canvas.ThumbnailTexture, data.lastThumbnail); data.lastThumbnail.Apply(); data.lastThumbnail.name = $"thumbnail - {data.serial}"; yield return null; if (data.lastSignature == null) { data.lastSignature = new Texture2D(64, 64, TextureFormat.RGBA32, false); data.lastSignature.name = $"signature - empty"; } yield return new WaitForSeconds(interval); onPaintingSaved.Invoke(); coroutine = null; //Debug.Log("DoSavePaintingAndSignature is done."); } public void Send() { if (coroutine == null) { if (client == null) { client = GetComponent(); } coroutine = StartCoroutine(DoSend()); } } IEnumerator DoSaveSignature() { yield return canvas.MakeColoringTexture(); var data = AppData.Instance; if (data.lastSignature == null) { data.lastSignature = new Texture2D(canvas.ColoringTexture.width, canvas.ColoringTexture.height, canvas.ColoringTexture.format, false); } Graphics.CopyTexture(canvas.ColoringTexture, data.lastSignature); data.lastSignature.Apply(); data.lastSignature.name = $"signature - {data.serial}"; coroutine = null; } IEnumerator DoSend() { //yield return DoSaveSignature(); var data = AppData.Instance; if (AppData.Instance.dev == false) client.SendData(data.lastThumbnail, data.lastSignature, data.lastThumbnail); yield return new WaitForSeconds(interval); coroutine = null; } } }