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