//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, November 19, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class GodWeaponPreviewWin : Window { [SerializeField] Text m_Stage; [SerializeField] Text m_RequireLevel; [SerializeField] Button[] m_SelectStages; [SerializeField] Image m_Select; [SerializeField] RawImage m_RawModel; [SerializeField] PropertyBehaviour[] m_Propertys; [SerializeField] Text m_FightPower; [SerializeField] Button m_Close; int selectStage = 1; public static int selectGodWeaponType = 1; MagicianModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Close.onClick.AddListener(CloseClick); for (int i = 0; i < m_SelectStages.Length; i++) { var index = i + 1; m_SelectStages[i].AddListener(() => { if (selectStage != index) { OnSelectStage(index); } }); } } protected override void OnPreOpen() { var defaultStage = model.GetGodWeaponStage(selectGodWeaponType); defaultStage = Mathf.Clamp(defaultStage + 1, 1, 3); OnSelectStage(defaultStage); } protected override void OnAfterOpen() { } protected override void OnPreClose() { UI3DModelExhibition.Instance.StopShow(); } protected override void OnAfterClose() { } #endregion private void OnSelectStage(int index) { m_Select.transform.localPosition = m_SelectStages[index - 1].transform.localPosition; selectStage = index; DisplayModel(); DisplayStage(); DisplayRequireLevel(); DisplayProperty(); DisplayFightPower(); } private void DisplayStage() { var config = GodWeaponConfig.GetConfig(selectGodWeaponType, 1); m_Stage.text = StringUtility.Contact(config.Name, Language.Get("GodWeaponStage", selectStage)); } private void DisplayRequireLevel() { var requireLevel = model.GetGodWeaponStageRequireLevel(selectGodWeaponType, selectStage); var config = GodWeaponConfig.GetConfig(selectGodWeaponType, 1); m_RequireLevel.text = Language.Get("GodWeaponStageRequireLevel", config.Name, requireLevel); } private void DisplayFightPower() { var fightPower = 0; var dict = model.GetEffectPropertyUpper(selectGodWeaponType, selectStage); fightPower += model.TryGetEffectFightPower(selectGodWeaponType, selectStage); if (dict != null) { fightPower += UIHelper.GetFightPower(dict); } m_FightPower.text = StringUtility.Contact("+", fightPower); } private void DisplayProperty() { var dict = model.GetEffectPropertyUpper(selectGodWeaponType, selectStage); var index = 0; foreach (var key in dict.Keys) { if (index < m_Propertys.Length) { m_Propertys[index].gameObject.SetActive(true); m_Propertys[index].DisplayUpper(key, dict[key]); } index++; } for (int i = index; i < m_Propertys.Length; i++) { m_Propertys[i].gameObject.SetActive(false); } } private void DisplayModel() { m_RawModel.gameObject.SetActive(true); var job = PlayerDatas.Instance.baseData.Job; var playerPack = ModelCenter.Instance.GetModel(); var clothes = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retClothes); var clothesId = clothes == null ? 0 : (int)clothes.itemInfo.ItemID; var weapon = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWeapon); var weaponId = weapon == null ? 0 : (int)weapon.itemInfo.ItemID; var wings = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWing); var wingsId = wings == null ? 0 : (int)wings.itemInfo.ItemID; var secondary = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWeapon2); var secondaryId = secondary == null ? 0 : (int)secondary.itemInfo.ItemID; int _suitLevel = 0; if (clothes != null) { if (clothes.itemInfo.IsSuite == 1) { if (clothes.GetUseDataModel(30) != null && clothes.GetUseDataModel(30)[0] != 0) { _suitLevel = clothes.GetUseDataModel(30)[0]; } } } Dictionary dict = new Dictionary(); for (int i = 0; i < model.godWeaponTypes.Count; i++) { var type = model.godWeaponTypes[i]; var godWeaponInfo = model.GetGodWeaponInfo(type); dict.Add(type, godWeaponInfo == null ? 0 : godWeaponInfo.level); if (type == selectGodWeaponType) { dict[type] = model.GetGodWeaponStageRequireLevel(selectGodWeaponType, selectStage); } } UI3DPlayerExhibitionData data = new UI3DPlayerExhibitionData() { job = job, clothesId = clothesId, suitLevel = _suitLevel, weaponId = weaponId, wingsId = wingsId, secondaryId = secondaryId, isDialogue = false, godWeapons = dict }; UI3DModelExhibition.Instance.ShowOtherPlayer(m_RawModel, data); } } }