|
@@ -1,11 +1,13 @@
|
|
using System;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
-
|
|
|
|
|
|
+using System.Linq;
|
|
|
|
+using DragonBones;
|
|
using UnityEngine;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.UI;
|
|
using UnityEngine.UI;
|
|
using Random = UnityEngine.Random;
|
|
using Random = UnityEngine.Random;
|
|
|
|
+using Transform = UnityEngine.Transform;
|
|
|
|
|
|
public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
|
|
public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
|
|
{
|
|
{
|
|
@@ -34,13 +36,87 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
|
|
|
|
|
|
private string AnswerColor;
|
|
private string AnswerColor;
|
|
private FlowerInfo AnswerInfo;
|
|
private FlowerInfo AnswerInfo;
|
|
- private SpriteRenderer ParentSR;
|
|
|
|
- public SpriteRenderer ChestSR;
|
|
|
|
- public SpriteRenderer ShadowSR;
|
|
|
|
|
|
|
|
- private Material GrayMaterial;
|
|
|
|
- private MaterialUnit MaterialUnit;
|
|
|
|
- private TweenMatFloat MaterialTween;
|
|
|
|
|
|
+ public bool Initialized;
|
|
|
|
+ public MeshFilter ChestMF;
|
|
|
|
+ public MeshFilter ShadowMF;
|
|
|
|
+ public MeshRenderer ChestMR;
|
|
|
|
+ public MeshRenderer ParentMR;
|
|
|
|
+ public MeshRenderer ShadowMR;
|
|
|
|
+ private static Mesh ShadowMesh
|
|
|
|
+ {
|
|
|
|
+ get
|
|
|
|
+ {
|
|
|
|
+ if (shadowMesh == null)
|
|
|
|
+ {
|
|
|
|
+ shadowMesh = SpriteUtility.CreateMesh(ManaReso.LoadSprite("花影子", Folder.Scene));
|
|
|
|
+ shadowMesh.SetUVs(1, Enumerable.Repeat(new Vector2(0,1), shadowMesh.vertices.Length).ToList());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return shadowMesh;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ private static Mesh shadowMesh;
|
|
|
|
+ private static Mesh SystemMesh
|
|
|
|
+ {
|
|
|
|
+ get
|
|
|
|
+ {
|
|
|
|
+ if (systemMesh == null)
|
|
|
|
+ {
|
|
|
|
+ systemMesh = SpriteUtility.CreateMesh(ManaReso.LoadSprite("系统宝箱", Folder.Scene));
|
|
|
|
+ systemMesh.SetUVs(1, Enumerable.Repeat(new Vector2(1,1), systemMesh.vertices.Length).ToList());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return systemMesh;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ private static Mesh systemMesh;
|
|
|
|
+ private static Mesh LuckyMesh
|
|
|
|
+ {
|
|
|
|
+ get
|
|
|
|
+ {
|
|
|
|
+ if (luckyMesh == null)
|
|
|
|
+ {
|
|
|
|
+ luckyMesh = SpriteUtility.CreateMesh(ManaReso.LoadSprite("钻石宝箱", Folder.Scene));
|
|
|
|
+ luckyMesh.SetUVs(1, Enumerable.Repeat(new Vector2(0,1), luckyMesh.vertices.Length).ToList());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return luckyMesh;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ private static Mesh luckyMesh;
|
|
|
|
+ private static Mesh NumberMesh
|
|
|
|
+ {
|
|
|
|
+ get
|
|
|
|
+ {
|
|
|
|
+ if (numberMesh == null)
|
|
|
|
+ {
|
|
|
|
+ numberMesh = SpriteUtility.CreateMesh(ManaReso.LoadSprite("数字宝箱", Folder.Scene));
|
|
|
|
+ numberMesh.SetUVs(1, Enumerable.Repeat(new Vector2(0,1), numberMesh.vertices.Length).ToList());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return numberMesh;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ private static Mesh numberMesh;
|
|
|
|
+ private static Mesh ColorMesh
|
|
|
|
+ {
|
|
|
|
+ get
|
|
|
|
+ {
|
|
|
|
+ if (colorMesh == null)
|
|
|
|
+ {
|
|
|
|
+ colorMesh = SpriteUtility.CreateMesh(ManaReso.LoadSprite("花朵宝箱", Folder.Scene));
|
|
|
|
+ colorMesh.SetUVs(1, Enumerable.Repeat(new Vector2(0,1), colorMesh.vertices.Length).ToList());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return colorMesh;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ private static Mesh colorMesh;
|
|
|
|
+
|
|
|
|
+ public TweenGrayMesh TweenGrayMesh;
|
|
|
|
+ public TweenRenderer TweenRenderer;
|
|
|
|
+ public TweenScale TweenScale;
|
|
|
|
|
|
public static InputField InputField;
|
|
public static InputField InputField;
|
|
public static PlazaRoomChest CurrentChest;
|
|
public static PlazaRoomChest CurrentChest;
|
|
@@ -141,26 +217,13 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
|
|
|
|
|
|
public void RetriveChest()
|
|
public void RetriveChest()
|
|
{
|
|
{
|
|
- ParentSR.TweenBacSr();
|
|
|
|
|
|
+ TweenRenderer.StartBackward();
|
|
}
|
|
}
|
|
|
|
|
|
public void Init(ChestData chestData)
|
|
public void Init(ChestData chestData)
|
|
{
|
|
{
|
|
BaseInit(chestData);
|
|
BaseInit(chestData);
|
|
|
|
|
|
- ChestSR.sharedMaterial = ShadowSR.sharedMaterial;
|
|
|
|
-
|
|
|
|
- //if (chestData.Owner == long.Parse(ManaServer.SerialNumber))
|
|
|
|
- //{
|
|
|
|
- // SetColliders(false);
|
|
|
|
- // StopAnim();
|
|
|
|
- //}
|
|
|
|
- //else
|
|
|
|
- //{
|
|
|
|
- // SetColliders(true);
|
|
|
|
- //}
|
|
|
|
- SetColliders(true);
|
|
|
|
-
|
|
|
|
if (chestData.ChestType == ChestType.GuessColor)
|
|
if (chestData.ChestType == ChestType.GuessColor)
|
|
{
|
|
{
|
|
AnswerInfo = ManaGarden.FlowerInfoDic.Random();
|
|
AnswerInfo = ManaGarden.FlowerInfoDic.Random();
|
|
@@ -172,20 +235,11 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
|
|
{
|
|
{
|
|
BaseInit(chestData);
|
|
BaseInit(chestData);
|
|
|
|
|
|
- GrayMaterial = new Material(Lib.GraySpriteMat);
|
|
|
|
- GrayMaterial.SetFloat("_GrayLerp", 1);
|
|
|
|
- GrayMaterial.SetFloat("_GrayScaleX", 0.299f);
|
|
|
|
- GrayMaterial.SetFloat("_GrayScaleY", 0.587f);
|
|
|
|
- GrayMaterial.SetFloat("_GrayScaleZ", 0.114f);
|
|
|
|
- MaterialUnit = new MaterialUnit(GrayMaterial, transform, new List<string>() { "_GrayLerp" });
|
|
|
|
- MaterialTween = MaterialUnit.CreateTweenMatFloat(1, 0, 0.25f, true, true, Curve.EaseOutQuad);
|
|
|
|
- MaterialTween.OnForwardFinish = () => { ChestSR.sharedMaterial = ShadowSR.sharedMaterial; };
|
|
|
|
|
|
+ TweenGrayMesh = new TweenGrayMesh(ChestMF, 1, 0, 0.25f, true, true, Curve.EaseOutQuad);
|
|
|
|
|
|
Deactive();
|
|
Deactive();
|
|
|
|
|
|
SystemChest = this;
|
|
SystemChest = this;
|
|
-
|
|
|
|
- //SetColliders(false);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
private void BaseInit(ChestData chestData)
|
|
private void BaseInit(ChestData chestData)
|
|
@@ -195,48 +249,60 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
|
|
InputField = ManaReso.Get<InputField>("Y_InputField");
|
|
InputField = ManaReso.Get<InputField>("Y_InputField");
|
|
}
|
|
}
|
|
|
|
|
|
- ChestSR = transform.GetComponent<SpriteRenderer>();
|
|
|
|
- ShadowSR = transform.parent.GetChild(1).GetComponent<SpriteRenderer>();
|
|
|
|
- ShadowSR.sprite = ManaReso.LoadSprite("花影子", Folder.Scene);
|
|
|
|
- if (chestData.ChestType == ChestType.System)
|
|
|
|
- {
|
|
|
|
- ChestSR.sprite = ManaReso.LoadSprite("系统宝箱", Folder.Scene);
|
|
|
|
- }
|
|
|
|
- else if (chestData.ChestType == ChestType.Lucky)
|
|
|
|
|
|
+ if (!Initialized)
|
|
{
|
|
{
|
|
- ChestSR.sprite = ManaReso.LoadSprite("钻石宝箱", Folder.Scene);
|
|
|
|
|
|
+ Initialized = true;
|
|
|
|
+
|
|
|
|
+ ParentMR = transform.parent.GetComponent<MeshRenderer>();
|
|
|
|
+ ChestMF = transform.GetComponent<MeshFilter>();
|
|
|
|
+ ChestMR = transform.GetComponent<MeshRenderer>();
|
|
|
|
+ ShadowMF = transform.parent.GetChild(1).GetComponent<MeshFilter>();
|
|
|
|
+ ShadowMR = transform.parent.GetChild(1).GetComponent<MeshRenderer>();
|
|
|
|
+
|
|
|
|
+ ShadowMF.mesh = ShadowMesh;
|
|
|
|
+
|
|
|
|
+ TweenRenderer = new TweenRenderer(ParentMR, new Color(1, 1, 1, 0), Color.white, 0.25f, true, true, Curve.EaseOutQuad, false, true);
|
|
|
|
+ TweenRenderer.OnBackwardFinish = () => { ManaReso.Save(transform.parent.gameObject); };
|
|
|
|
+
|
|
|
|
+ TweenScale = transform.CreateTweenScale(0, 0.8f, 0.25f, false, true, Curve.EaseOutQuad);
|
|
|
|
+ TweenScale.StartForward();
|
|
}
|
|
}
|
|
- else if (chestData.ChestType == ChestType.GuessColor)
|
|
|
|
|
|
+ else
|
|
{
|
|
{
|
|
- ChestSR.sprite = ManaReso.LoadSprite("花朵宝箱", Folder.Scene);
|
|
|
|
|
|
+ TweenScale.InOrigin = true;
|
|
|
|
+ TweenScale.StartForward();
|
|
}
|
|
}
|
|
- else if (chestData.ChestType == ChestType.GuessNumber)
|
|
|
|
|
|
+
|
|
|
|
+ SetColliders(true);
|
|
|
|
+
|
|
|
|
+ ParentMR.sharedMaterial = UnityFactory.Materials[0];
|
|
|
|
+ ChestMR.sharedMaterial = UnityFactory.Materials[0];
|
|
|
|
+ ShadowMR.sharedMaterial = UnityFactory.Materials[0];
|
|
|
|
+
|
|
|
|
+ if (TweenGrayMesh != null)
|
|
{
|
|
{
|
|
- ChestSR.sprite = ManaReso.LoadSprite("数字宝箱", Folder.Scene);
|
|
|
|
|
|
+ TweenGrayMesh.InDestination = true;
|
|
}
|
|
}
|
|
|
|
|
|
- ParentSR = GetComponent<SpriteRenderer>();
|
|
|
|
- TweenRoot tweenRoot = ParentSR.GetTweenSr();
|
|
|
|
- if (tweenRoot != null)
|
|
|
|
|
|
+ if (chestData.ChestType == ChestType.System)
|
|
{
|
|
{
|
|
- tweenRoot.InDestination = true;
|
|
|
|
|
|
+ if (ChestMF.mesh != SystemMesh)
|
|
|
|
+ ChestMF.mesh = SystemMesh;
|
|
}
|
|
}
|
|
- else
|
|
|
|
|
|
+ else if (chestData.ChestType == ChestType.Lucky)
|
|
{
|
|
{
|
|
- tweenRoot = ParentSR.CreateTweenSr(0, 1, 0.25f, false, true, Curve.EaseOutQuad, false, true);
|
|
|
|
- tweenRoot.OnBackwardFinish = () => { ManaReso.Save(transform.parent.gameObject); };
|
|
|
|
|
|
+ if (ChestMF.mesh != LuckyMesh)
|
|
|
|
+ ChestMF.mesh = LuckyMesh;
|
|
}
|
|
}
|
|
-
|
|
|
|
- tweenRoot = transform.GetTweenScale();
|
|
|
|
- if (tweenRoot != null)
|
|
|
|
|
|
+ else if (chestData.ChestType == ChestType.GuessColor)
|
|
{
|
|
{
|
|
- tweenRoot.InOrigin = true;
|
|
|
|
- tweenRoot.StartForward();
|
|
|
|
|
|
+ if (ChestMF.mesh != ColorMesh)
|
|
|
|
+ ChestMF.mesh = ColorMesh;
|
|
}
|
|
}
|
|
- else
|
|
|
|
|
|
+ else if (chestData.ChestType == ChestType.GuessNumber)
|
|
{
|
|
{
|
|
- tweenRoot = transform.CreateTweenScale(0, 0.8f, 0.25f, false, true, Curve.EaseOutQuad);
|
|
|
|
- tweenRoot.StartForward();
|
|
|
|
|
|
+ if (ChestMF.mesh != NumberMesh)
|
|
|
|
+ ChestMF.mesh = NumberMesh;
|
|
}
|
|
}
|
|
|
|
|
|
ChestData = chestData;
|
|
ChestData = chestData;
|
|
@@ -252,8 +318,7 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
|
|
{
|
|
{
|
|
if (ChestData.ChestType == ChestType.System)
|
|
if (ChestData.ChestType == ChestType.System)
|
|
{
|
|
{
|
|
- ChestSR.material = GrayMaterial;
|
|
|
|
- MaterialTween.StartBackward();
|
|
|
|
|
|
+ TweenGrayMesh.StartBackward();
|
|
}
|
|
}
|
|
|
|
|
|
IsActive = false;
|
|
IsActive = false;
|
|
@@ -263,7 +328,7 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
|
|
{
|
|
{
|
|
if (ChestData.ChestType == ChestType.System)
|
|
if (ChestData.ChestType == ChestType.System)
|
|
{
|
|
{
|
|
- MaterialTween.StartForward();
|
|
|
|
|
|
+ TweenGrayMesh.StartForward();
|
|
}
|
|
}
|
|
|
|
|
|
IsActive = true;
|
|
IsActive = true;
|