using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Core.Utilities;
using TowerDefense.Level;
using System;
using Protobuf;
using DG.Tweening;
/**
* 无尽模式道具掉落管理器
* @Author: chenxin
* @Date: 2020-10-20 15:00:12
*/
namespace KTGMGemClient
{
public class EndlessDrop
{
///
/// 唯一id,用于区分每一个掉落,获得掉落时EndlessDropManager会为id分配值
///
public int Id;
///
/// 配置数据
///
public reward Reward;
///
/// 自动拾取时间
///
public float AutoPickupTime;
///
/// 未拾取经历时间 > 自动拾取时间,自动获得
///
public float ElapsedTime;
///
/// 是否拾取完成,自动拾取/玩家手动点击拾取完成,拾取完成意味着真正的获得了掉落,清理场景时也要获得所有还未拾取的掉落
///
public bool IsPickupCompleted;
}
public class EndlessDropReward : MonoBehaviour
{
///
/// 发光粒子特效
///
public ParticleSystem LightParticle;
///
/// item图标
///
public Image Icon;
///
/// 自动拾取时间
///
public float AutoPickupTime { get; set; } = 5f;
public EndlessDrop DropData;
private string path = "UI/Props/";
public event Action ClickDropEvent;
private bool isBox;//是否是宝箱
private GameObject propBtn;
// Start is called before the first frame update
private void Start()
{
ClickDropEvent += EndlessDropManager.instance.OnClickDrop;
propBtn = GameObject.Find("BottomUI/PropsObtained/PropButton");
}
public GameObject drapIcon;
public void OnClick()
{
if (isBox)
{
EndlessDropManager.instance.FlyIcon(transform.parent, Icon.sprite, transform.position, (propBtn.transform as RectTransform).position, true);
}
else
{
FlyImage fly = EndlessDropManager.instance.CreateIcon(transform.parent);
fly.SetDestination(Icon.sprite, transform.position, (propBtn.transform as RectTransform).position, false);
}
if (ClickDropEvent != null)
ClickDropEvent(DropData);
}
public void SetIcon()
{
string resId = "";
Vector3 scale = Icon.rectTransform.localScale;
if (DropData.Reward.id == 0)
{
resId = $"{path}{(int)DropData.Reward.type}";
isBox = true;
}
else
{
resId = $"{path}{(int)DropData.Reward.type}_{DropData.Reward.id}";
scale *= 1.5f;
isBox = false;
}
Icon.sprite = Resources.Load(resId);
Icon.SetNativeSize();
//Debug.Log("开始缩放");
Icon.rectTransform.localScale = scale * 0.5f;
Icon.rectTransform.DOScale(scale, 0.5f);
}
///
/// 播放发光的粒子特效
///
public void PlayParticle()
{
LightParticle.Play();
}
}
}