//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Saturday, January 06, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class WorshipInfoListWin : Window { [SerializeField] RawImage rawImage; [SerializeField] Text m_PlayerName; [SerializeField] Text m_WorshipText; //膜拜原因 [SerializeField] Image m_TitleIcon; [SerializeField] Button m_WorshipBtn; [SerializeField] Button m_CloseBtn; [SerializeField] Toggle m_Toggle; WorshipInfoListModel worshipInfoListModel { get { return ModelCenter.Instance.GetModel(); } } int showIndex = 0; WorshipInfoListModel.WorshipPlayer player; float showNextTime = 0; //下一个显示起始时间,用于防范服务端没有回报问题 #region Built-in protected override void BindController() { } protected override void AddListeners() { m_CloseBtn.onClick.AddListener(CloseClick); m_Toggle.SetListener((bool isOn) => { worshipInfoListModel.notShowTip = isOn; }); m_WorshipBtn.AddListener(Worship); } protected override void OnPreOpen() { m_Toggle.isOn = worshipInfoListModel.notShowTip; worshipInfoListModel.WorshipResultEvent += WorshipResult; showIndex = 0; m_Toggle.isOn = false; Display(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { worshipInfoListModel.WorshipResultEvent -= WorshipResult; UI3DModelExhibition.InstanceClone7.StopShow(); worshipInfoListModel.players.Clear(); } protected override void OnAfterClose() { } protected override void LateUpdate() { if (showNextTime != 0 && Time.time > showNextTime + 1) { showIndex++; showNextTime = 0; Display(); } } #endregion void Worship() { var pack = new CB020_tagCGWorship(); pack.PlayerID = player.playerID; pack.WorshipType = player.worshipType; pack.WorshipValue = player.worshipValue; GameNetSystem.Instance.SendInfo(pack); showNextTime = Time.time; if (m_Toggle.isOn) CloseClick(); } private void DisplayTitle() { DienstgradConfig config = DienstgradConfig.Get(player.playerInfo.TitleID); if (config == null) { if (player.playerInfo.TitleID != 0) { Debug.LogError("DienstgradConfig not found, ID:" + player.playerInfo.TitleID); } m_TitleIcon.SetActive(false); return; } m_TitleIcon.SetActive(true); UIFrame frame = m_TitleIcon.GetComponent(); if (UIFrameMgr.Inst.ContainsDynamicImage(config.Image)) { m_TitleIcon.raycastTarget = false; frame.enabled = true; frame.ResetFrame(config.Image); } else { frame.enabled = false; m_TitleIcon.SetSprite(config.Image); } } void Display() { if (showIndex >= worshipInfoListModel.players.Count) { CloseClick(); return; } player = worshipInfoListModel.players[showIndex]; DisplayTitle(); int serverID = UIHelper.GetServerIDByAccount(player.playerInfo.AccID); string serverName = ServerListCenter.Instance.GetServerName(serverID); m_PlayerName.text = StringUtility.Contact(player.playerInfo.Name, " ", Language.Get("Z2002", serverName)); m_WorshipText.text = Language.Get(StringUtility.Contact("WorshipType_", player.worshipType, "_", player.worshipValue)); ShowPlayer(); } public void ShowPlayer() { int _suitLevel = (int)(player.playerInfo.EquipShowSwitch % 10); int clothes = worshipInfoListModel.GetItemId(RoleEquipType.Clothes, player.playerInfo.EquipShowID); int weapon = worshipInfoListModel.GetItemId(RoleEquipType.Weapon, player.playerInfo.EquipShowID); int weapon2 = worshipInfoListModel.GetItemId(RoleEquipType.Weapon2, player.playerInfo.EquipShowID); int fashionClothes = worshipInfoListModel.GetItemId(RoleEquipType.FashionClothes, player.playerInfo.EquipShowID); int fashionWeapon = worshipInfoListModel.GetItemId(RoleEquipType.FashionWeapon, player.playerInfo.EquipShowID); int fashionWeapon2 = worshipInfoListModel.GetItemId(RoleEquipType.FashionWeapon2, player.playerInfo.EquipShowID); var data = new UI3DPlayerExhibitionData { job = player.playerInfo.Job, fashionClothesId = fashionClothes, fashionWeaponId = fashionWeapon, fashionSecondaryId = fashionWeapon2, clothesId = clothes, suitLevel = _suitLevel, weaponId = weapon, wingsId = 0, secondaryId = weapon2, reikiRootEffectId = 0, isDialogue = false, equipLevel = (int)player.playerInfo.EquipShowSwitch / 10 % 100, scale = 0.8f, titleID = player.playerInfo.TitleID, }; rawImage.SetActiveIL(true); UI3DModelExhibition.InstanceClone7.ShowPlayer(rawImage, data); rawImage.raycastTarget = false; } void WorshipResult() { showNextTime = 0; if (player.playerID == worshipInfoListModel.playerIDResult && player.worshipType == worshipInfoListModel.worshipTypeResult) { showIndex++; } Display(); } } }