using BX;
using Config.config;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
///
/// 商店UI
///
public partial class ShopUI : UIBaseClass
{
///
/// 条件图片
///
public Image condition;
///
/// 使用图片
///
public Image use;
///
/// 数量
///
public TextMeshProUGUI number;
///
/// 返回按钮
///
public Button backBtn;
///
/// 左按钮
///
public Button leftBtn;
///
/// 右按钮
///
public Button rightBtn;
///
/// 获得
///
public Button acquisitionBtn;
///
/// 使用
///
public Button useBtn;
///
/// 索引
///
private int index;
///
/// 生成血量节点
///
public Transform bloodVolumeNode;
///
/// 技能UI对象
///
public List skillUIObjs = new List();
///
/// 血量图标列表
///
public List bloodVolume = new List();
///
/// 皮肤车数据
///
private SkinCarConfig skinCarConfig;
///
/// 血量图片协程
///
private Coroutine bloodVolumeCoroutine;
private void Start()
{
BackListener();
LeftBtnListener();
RigheListener();
AcquisitionBtnListener();
UseBtnListener();
AddSweepAway();
RedDot();
}
public override void OnShow()
{
base.OnShow();
BXSdk.Instance.LogEvent("ModShop_Show");
StartCoroutine(IE_SkillUIAnim());
}
///
/// 设置索引
///
public void SetIndex(int index)
{
this.index = index;
SetCarValue(index);
SetBloodVolume(index);
}
///
/// 设置技能UI对象
///
public void SetSkillUIObjs()
{
for (int i = 0; i < skillUIObjs.Count; i++)
{
skillUIObjs[i].Init();
}
}
///
/// 动效
///
private IEnumerator IE_SkillUIAnim()
{
for (int i = 0; i < skillUIObjs.Count; i++)
{
skillUIObjs[i].Zoom();
yield return new WaitForSeconds(0.1f);
}
}
///
/// 设置血量显示
///
///
public void SetBloodVolume(int index)
{
if (bloodVolumeCoroutine != null)
{
StopCoroutine(bloodVolumeCoroutine);
}
int number = ConfigManager.Instance.Tables.TbSkinCarConfig.Get("Car_" + index).Hp/25;
int wide = 0;
for (int i = bloodVolumeNode.childCount-1; i >=0; i--)
{
CachePoolManager.Instance.Put(bloodVolumeNode.GetChild(i).gameObject);
}
bloodVolume.Clear();
for (int i = 0; i < number; i++)
{
GameObject bloodVolumeObj=CachePoolManager.Instance.Take(YooAssetManager.Instance.LoadAssetSync(PackagesName.GameData, "BloodVolumeObj"));
bloodVolumeObj.transform.SetParent(bloodVolumeNode);
bloodVolumeObj.transform.localPosition = Vector3.zero;
bloodVolumeObj.transform.localScale = Vector3.zero;
bloodVolume.Add(bloodVolumeObj);
}
for (int i = 0; i < bloodVolumeNode.childCount; i++)
{
switch (number)
{
case 4:
wide = 130;
break;
case 5:
wide = 100;
break;
case 6:
wide = 80;
break;
case 8:
wide = 55;
break;
}
(bloodVolumeNode.GetChild(i).transform as RectTransform).sizeDelta = new Vector2(wide, (bloodVolumeNode.GetChild(i).transform as RectTransform).rect.height);
}
bloodVolumeCoroutine= StartCoroutine(IE_BloodVolume());
}
///
/// 血量图片协程
///
///
private IEnumerator IE_BloodVolume()
{
for (int i = 0; i < bloodVolume.Count; i++)
{
bloodVolume[i].transform.DOScale(Vector3.one * 1.2f, 0.05f).OnComplete(() =>
{
bloodVolume[i].transform.DOScale(Vector3.one, 0.05f);
});
yield return new WaitForSeconds(0.05f);
}
}
///
/// 设置卡车参数
///
private void SetCarValue(int value)
{
useBtn.gameObject.SetActive(false);
acquisitionBtn.gameObject.SetActive(false);
skinCarConfig= ConfigManager.Instance.Tables.TbSkinCarConfig.Get("Car_" + value);
if (UserDataManager.Instance.userData.cars.Contains(skinCarConfig.Id))//拥有
{
useBtn.transform.DOKill();
useBtn.gameObject.SetActive(true);
useBtn.transform.localScale = Vector3.zero;
useBtn.transform.DOScale(Vector3.one * 1.1f, 0.2f).OnComplete(() =>
{
useBtn.transform.DOScale(Vector3.one,0.1f);
});
if(UserDataManager.Instance.userData.useCar==skinCarConfig.Id)
{
use.sprite= YooAssetManager.Instance.LoadAssetSync(PackagesName.GameData, "INUSEIcon");
}
else
{
use.sprite = YooAssetManager.Instance.LoadAssetSync(PackagesName.GameData, "USEIcon");
}
}
else
{
acquisitionBtn.transform.DOKill();
acquisitionBtn.gameObject.SetActive(true);
acquisitionBtn.transform.localScale = Vector3.zero;
acquisitionBtn.transform.DOScale(Vector3.one * 1.1f, 0.2f).OnComplete(() =>
{
acquisitionBtn.transform.DOScale(Vector3.one, 0.1f);
});
if (skinCarConfig.IsAD)
{
BXSdk.Instance.LogEvent("RV_Button_Show", new System.Collections.Generic.Dictionary()
{
{"Position","RV_GetCar"}
});
condition.sprite = YooAssetManager.Instance.LoadAssetSync(PackagesName.GameData, "ADIcon");
if (UserDataManager.Instance.userData.carAD.ContainsKey(skinCarConfig.Id))
{
number.text = UserDataManager.Instance.userData.carAD[skinCarConfig.Id]+"/"+skinCarConfig.ADNumber.ToString();
}
else
{
number.text =0 + "/" + skinCarConfig.ADNumber.ToString();
}
}
else
{
condition.sprite = YooAssetManager.Instance.LoadAssetSync(PackagesName.GameData, "BigMoneyIcon");
number.text = skinCarConfig.Pric.ToString();
}
}
}
///
/// 返回按钮监听
///
private void BackListener()
{
backBtn.onClick.AddListener(() =>
{
HideMe();
UIManager.Instance.AsynShowUI();
Scenes.Instance.player.TurnToHallCamear();
Scenes.Instance.player.CarInit();
});
}
///
/// 左按钮监听
///
private void LeftBtnListener()
{
leftBtn.onClick.AddListener(() =>
{
index--;
if(index<=0)
{
index = ConfigManager.Instance.Tables.TbSkinCarConfig.DataList.Count;
}
Scenes.Instance.player.CutCar(index);
SetBloodVolume(index);
SetCarValue(index);
DesLeftTips();
});
}
///
/// 右按钮监听
///
private void RigheListener()
{
rightBtn.onClick.AddListener(() =>
{
index++;
if (index > ConfigManager.Instance.Tables.TbSkinCarConfig.DataList.Count)
{
index = 1;
}
Scenes.Instance.player.CutCar(index);
SetCarValue(index);
SetBloodVolume(index);
DesRightTips();
});
}
///
/// 获得按钮监听
///
private void AcquisitionBtnListener()
{
acquisitionBtn.onClick.AddListener(() =>
{
if (skinCarConfig.IsAD)
{
SDKManager.Instance.ShowReward("RV_GetCar", () =>
{
UserDataManager.Instance.AddCarAD(skinCarConfig.Id);
if (UserDataManager.Instance.userData.carAD[skinCarConfig.Id] >= skinCarConfig.ADNumber)
{
BXSdk.Instance.LogEvent("Car_Unlock", new Dictionary()
{
{"Car_Name",skinCarConfig.Name}
});
AudioManager.Instance.PlaySound(YooAssetManager.Instance.LoadAssetSync(PackagesName.GameData, "Purchase"));
UserDataManager.Instance.AddCar(skinCarConfig.Id);
}
SetCarValue(index);
});
}
else
{
if(UserDataManager.Instance.RemoveMoney(skinCarConfig.Pric))
{
BXSdk.Instance.LogEvent("Car_Unlock", new Dictionary()
{
{"Car_Name",skinCarConfig.Name}
});
AudioManager.Instance.PlaySound(YooAssetManager.Instance.LoadAssetSync(PackagesName.GameData, "Purchase"));
UserDataManager.Instance.AddCar(skinCarConfig.Id);
SetCarValue(index);
}
else
{
UIManager.Instance.GetUI().SetTips(MyConstant.BeShortOfGoldCoins);
}
}
});
}
///
/// 使用按钮监听
///
private void UseBtnListener()
{
useBtn.onClick.AddListener(() =>
{
if (UserDataManager.Instance.userData.useCar == skinCarConfig.Id) return;
AudioManager.Instance.PlaySound(YooAssetManager.Instance.LoadAssetSync(PackagesName.GameData, "USECar"));
UserDataManager.Instance.SetUseCar(skinCarConfig.Id);
SetCarValue(index);
Scenes.Instance.player.skinCar.USE();
});
}
}