123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- using Random = UnityEngine.Random;
- public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
- {
- #region Config
- public float Time = 5;
- public float Timer;
- public bool IsActive = true;
- public Animator Animator
- {
- get
- {
- if (Animator_ == null)
- {
- Animator_ = GetComponent<Animator>();
- }
- return Animator_;
- }
- set { Animator_ = value; }
- }
- public Animator Animator_;
- public ChestData ChestData;
- private string AnswerColor;
- private FlowerInfo AnswerInfo;
- private SpriteRenderer ParentSR;
- private SpriteRenderer ChestSR;
- private SpriteRenderer ShadowSR;
- private Material GrayMaterial;
- private MaterialUnit MaterialUnit;
- private TweenMatFloat MaterialTween;
- public static InputField InputField;
- public static PlazaRoomChest CurrentChest;
- public static PlazaRoomChest SystemChest;
- #endregion
- public void Update()
- {
- if (!IsActive)
- {
- return;
- }
- Timer += UnityEngine.Time.deltaTime;
- if (Timer >= Time)
- {
- Timer = 0;
- Animator.SetInteger("Count", 0);
- }
- }
- public void GetAward(string inputValue)
- {
- if (ChestData.ChestType == ChestType.System || ChestData.ChestType == ChestType.Lucky)
- {
- Take();
- }
- else
- {
- Guess(inputValue);
- }
- }
- private void Take()
- {
- Deactive();
- SFSManager.GardenSmartFox.EventManager.PlazaRoomEvent.GetChestAward(ChestData.ID);
- if (ChestData.ChestType != ChestType.System)
- {
- SetColliders(false);
- }
- }
- private void Guess(string inputValue)
- {
- if (string.IsNullOrEmpty(inputValue))
- {
- GuessFailed();
- }
- else
- {
- inputValue = inputValue.ToLower();
- inputValue = inputValue.Trim();
- if (ChestData.ChestType == ChestType.GuessColor)
- {
- if (inputValue == AnswerColor)
- {
- GuessSucceed();
- }
- else
- {
- GuessFailed();
- }
- }
- else
- {
- int digit = ChestData.Value % 10;
- int guessNumber = int.Parse(inputValue);
- if (guessNumber == digit)
- {
- GuessSucceed();
- }
- else
- {
- GuessFailed();
- }
- }
- }
- }
- private void GuessFailed()
- {
- Bubble.Show(null, Language.GetStr("UI", "Y_GuessWrong"));
- }
- private void GuessSucceed()
- {
- ManaReso.Get<CanvasGroup>("Y_Chest").interactable = false;
- SFSManager.GardenSmartFox.EventManager.PlazaRoomEvent.GetChestAward(ChestData.ID);
- }
- public void RetriveChest()
- {
- ParentSR.TweenBacSr();
- }
- public void Init(ChestData chestData)
- {
- BaseInit(chestData);
- //if (chestData.Owner == long.Parse(ManaServer.SerialNumber))
- //{
- // SetColliders(false);
- // StopAnim();
- //}
- //else
- //{
- // SetColliders(true);
- //}
- SetColliders(true);
- if (chestData.ChestType == ChestType.GuessColor)
- {
- AnswerInfo = ManaGarden.FlowerInfoDic.Random();
- AnswerColor = Language.GetStr("FlowerColor", AnswerInfo.ID).ToLower();
- }
- }
- public void SystemChestInit(ChestData 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.material = ShadowSR.material; };
- Deactive();
- SystemChest = this;
- //SetColliders(false);
- }
- private void BaseInit(ChestData chestData)
- {
- if (InputField == null)
- {
- InputField = ManaReso.Get<InputField>("Y_InputField");
- }
- ChestSR = transform.GetChild(0).GetComponent<SpriteRenderer>();
- ShadowSR = transform.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)
- {
- ChestSR.sprite = ManaReso.LoadSprite("钻石宝箱", Folder.Scene);
- }
- else if (chestData.ChestType == ChestType.GuessColor)
- {
- ChestSR.sprite = ManaReso.LoadSprite("花朵宝箱", Folder.Scene);
- }
- else if (chestData.ChestType == ChestType.GuessNumber)
- {
- ChestSR.sprite = ManaReso.LoadSprite("数字宝箱", Folder.Scene);
- }
- ParentSR = GetComponent<SpriteRenderer>();
- TweenRoot tweenRoot = ParentSR.GetTweenSr();
- if (tweenRoot != null)
- {
- tweenRoot.InDestination = true;
- }
- else
- {
- tweenRoot = ParentSR.CreateTweenSr(0, 1, 0.25f, false, true, Curve.EaseOutQuad, false, true);
- tweenRoot.OnBackwardFinish = () => { ManaReso.Save(gameObject); };
- }
- tweenRoot = transform.GetTweenScale();
- if (tweenRoot != null)
- {
- tweenRoot.InOrigin = true;
- tweenRoot.StartForward();
- }
- else
- {
- tweenRoot = transform.CreateTweenScale(0, 0.8f, 0.25f, false, true, Curve.EaseOutQuad);
- tweenRoot.StartForward();
- }
- ChestData = chestData;
- }
- public void OnFinish()
- {
- Animator.SetInteger("Count", Animator.GetInteger("Count") + 1);
- }
- public void Deactive()
- {
- if (ChestData.ChestType == ChestType.System)
- {
- ChestSR.material = GrayMaterial;
- MaterialTween.StartBackward();
- }
- IsActive = false;
- }
- public void Active()
- {
- if (ChestData.ChestType == ChestType.System)
- {
- MaterialTween.StartForward();
- }
- IsActive = true;
- }
- public void SetColliders(bool enable)
- {
- foreach (var collider in GetComponentsInChildren<Collider>())
- {
- collider.enabled = enable;
- }
- }
- public void OnPointerClick(PointerEventData eventData)
- {
- CurrentChest = this;
- ManaAudio.PlayClip(Clip.BtnClip);
- if (ChestData.ChestType == ChestType.Lucky)
- {
- GetAward(null);
- }
- else if (ChestData.ChestType == ChestType.System)
- {
- if (IsActive)
- {
- GetAward(null);
- }
- else
- {
- Bubble.Show(null, Language.GetStr("UI", "Y_Unactive"));
- }
- }
- else
- {
- ManaReso.Get("Y_Chest").TweenForCG();
- ManaReso.SetActive("Ya_GetAward", false);
- ManaReso.SetActive("Y_Guess", true);
- ManaReso.SetActive("Yb_CreateChest", false);
- if (ChestData.ChestType == ChestType.GuessColor)
- {
- ManaReso.SetActive("Y_RewardLab", false);
- ManaReso.SetActive("Y_RewardIcon", true);
- ManaReso.Get<Image>("Y_RewardIcon").sprite = AnswerInfo.Icon;
- ManaReso.Get<Image>("Y_RewardIcon").Resize(true, 0.3125f, 0.3125f);
- ManaReso.Get<Image>("Y_RewardIcon").color = Color.white;
- ManaLan.Add(ManaReso.Get<Text>("Y_Tit"), new LanStr("UI", "Yb_GuessColor"));
- ManaLan.Add(ManaReso.Get<Text>("Y_Desc"), new LanStr("UI", "Y_GuessColorDesc"));
- InputField.text = "";
- InputField.characterLimit = 30;
- }
- else
- {
- ManaReso.SetActive("Y_RewardLab", true);
- ManaReso.SetActive("Y_RewardIcon", false);
- ManaLan.Add(ManaReso.Get<Text>("Y_Tit"), new LanStr("UI", "Yb_GuessNumber"));
- ManaLan.Add(ManaReso.Get<Text>("Y_Desc"), new LanStr("UI", "Y_GuessNumberDesc"));
- InputField.text = "";
- InputField.characterLimit = 1;
- }
- }
- }
- }
|