You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

167 lines
4.9 KiB

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<ResourceClient>();
}
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;
}
}
}