using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using GCGame.Table; using Games.Item; public class OtherPlayerMagicWeaponInfo : MonoBehaviour { public UICameraTexture modelTexture; // 模型展示的RenderTexture public Text tipText; // 提示信息 public Image[] weaponMagics; // 已装备的法宝 Image 数组 public Image[] weaponMagicsBg; public Text Name; // 当前显示的法宝名称 public Button leftBtn; // 左按钮 public Button rightBtn; // 右按钮 public Sprite noneMagicBg; public static OtherPlayerMagicWeaponInfo Instance; private void Awake() { Instance = this; // 翻页按钮事件监听 leftBtn.onClick.AddListener(Click_LastModel); rightBtn.onClick.AddListener(Click_NextModel); } private void OnDestroy() { Instance = null; } // 初始化法宝界面 public void InitMagicWeaponPanelInfo() { // 初始化法宝装备信息 InitWeaponMagicInfo(); // 初始化法宝模型 if (GameManager.gameManager.OtherPlayerData != null) { Tab_MagicWeaponActiveModel magicModel = TableManager.GetMagicWeaponActiveModelByID(GameManager.gameManager.OtherPlayerData.CurDressedMagicWeaponIndex, 0); if (magicModel != null) { InitModel(magicModel.ShowModel); } else { int model = GetMagicModelNext(-1); InitModel(model); } } } // 获得法宝表格中,上一个法宝的索引 int GetMagicModelLast(int id) { var magicModels = TableManager.GetMagicWeaponActiveModel().Keys; int result = -1; foreach (var key in magicModels) { if (key == id) return result; result = key; } return result; } // 获得法宝表格中,下一个法宝的索引 int GetMagicModelNext(int id) { var magicModels = TableManager.GetMagicWeaponActiveModel().Keys; int? result = null; var valid = false; foreach (var key in magicModels) { if (result == null) result = key; if (valid) { result = key; break; } else if (key == id) valid = true; } if (result == null) result = -1; return result.Value; } // 显示装备槽的装备情况 void InitWeaponMagicInfo() { if (GameManager.gameManager.PlayerDataPool == null) return; GameItemContainer Container = GameManager.gameManager.OtherPlayerData.MagicPack; if (Container == null) { return; } for (int i = 0; i < weaponMagics.Length; i++) { weaponMagics[i].gameObject.SetActive(false); weaponMagicsBg[i].sprite = noneMagicBg; } for (int i = 0; i < Container.ContainerSize; i++) { GameItem gameItem = Container.GetItem(i); Tab_CommonItem line = TableManager.GetCommonItemByID(gameItem.DataID, 0); if (line == null) { continue; } if (line.SubClassID - 1 < weaponMagics.Length) { weaponMagics[line.SubClassID - 1].gameObject.SetActive(true); LoadAssetBundle.Instance.SetImageSprite(weaponMagics[line.SubClassID - 1], line.Icon); LoadAssetBundle.Instance.SetImageSprite(weaponMagicsBg[line.SubClassID - 1], GCGame.Utils.GetItemQualityFrame(line.Quality)); if (line.QualityEffect > 0) { CommonItemContainerItem.ShowQualityEffect(true, line.QualityEffect, weaponMagics[line.SubClassID - 1].transform); } else { CommonItemContainerItem.ShowQualityEffect(false, line.QualityEffect, weaponMagics[line.SubClassID - 1].transform); } } } } // 点发法宝回调 public void Click_WeaponMagic(int index) { GameItemContainer Container = GameManager.gameManager.OtherPlayerData.MagicPack; if (Container == null) { return; } GameItem tempItem; for (int i = 0; i < Container.ContainerSize; ++i) { tempItem = Container.GetItem(i); if (tempItem.DataID == -1) { continue; } Tab_CommonItem line = TableManager.GetCommonItemByID(tempItem.DataID, 0); if(line.SubClassID - 1== index) { MagicTooltipLogic.ShowEquipTooltip(tempItem, ItemTooltipsLogic.ShowType.Info); break; } } } // 当前被选中的法宝ID private int selectModelId = -1; public void InitModel(int modelID) { if (modelTexture == null) return; Tab_MagicWeaponActiveModel magicModel = TableManager.GetMagicWeaponActiveModelByID(modelID, 0); if (magicModel == null) return; Tab_CharModel charModelTab = TableManager.GetCharModelByID(magicModel.ShowModel, 0); if (charModelTab != null) { modelTexture.gameObject.SetActive(true); modelTexture.InitModelPath(charModelTab.ResPath, charModelTab, LoadAssetBundle.BUNDLE_PATH_MODEL, true); selectModelId = modelID; Name.text = charModelTab.Name; } // 对是否激活分做出提示 if (GameManager.gameManager.OtherPlayerData.IsMagicModelActive(modelID) == true) tipText.text = string.Format("{0}", StrDictionary.GetClientDictionaryString("#{41015}")); else { tipText.text = StrDictionary.GetClientDictionaryString("#{41016}", magicModel.Color, GetColorItemCount(magicModel.Color), magicModel.Num); } } // 配合提示使用 // 获取装备中品质大于 color 的法宝数目 public int GetColorItemCount(int color) { int count = 0; List gameItems = GameManager.gameManager.PlayerDataPool.MagicPack.GetList(); for (int i = 0; i < gameItems.Count; i++) { if ((int)(gameItems[i].GetQuality()) >= color) count++; } return count; } public void Click_LastModel() { int modelId = GetMagicModelLast(selectModelId); InitModel(modelId); } public void Click_NextModel() { int modelId = GetMagicModelNext(selectModelId); InitModel(modelId); } }