备份CatanBuilding瘦身独立工程
This commit is contained in:
253
Assets/Scripts/UI/Setting/PlayerHeadPopupPanel.cs
Normal file
253
Assets/Scripts/UI/Setting/PlayerHeadPopupPanel.cs
Normal file
@@ -0,0 +1,253 @@
|
||||
using asap.core;
|
||||
using cfg;
|
||||
using game;
|
||||
using GameCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using tysdk;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class PlayerHeadPopupPanel : MonoBehaviour
|
||||
{
|
||||
IUserService userService;
|
||||
public Button btn_mask;
|
||||
public Button btn_close;
|
||||
public Head head;
|
||||
public TMP_Text text_name;
|
||||
public Button btn_name;
|
||||
public Button btn_save;
|
||||
public Transform content;
|
||||
public GameObject item;
|
||||
string url;
|
||||
string headUrl;
|
||||
int index;
|
||||
List<HeadItem> platformHead = new List<HeadItem>();
|
||||
List<HeadItem> headItems = new List<HeadItem>();
|
||||
List<UserAvatar> userAvatars = new List<UserAvatar>();
|
||||
HeadItem headItem_fb;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
userAvatars = GContext.container.Resolve<Tables>().TbUserAvatar.DataList;
|
||||
userService = GContext.container.Resolve<IUserService>();
|
||||
btn_mask = transform.Find("mask").GetComponent<Button>();
|
||||
btn_close = transform.Find("btn_close").GetComponent<Button>();
|
||||
head = transform.Find("root/btn_head").GetComponent<Head>();
|
||||
text_name = transform.Find("root/btn_head/text_name").GetComponent<TMP_Text>();
|
||||
btn_name = transform.Find("root/btn_head/text_name/btn_change").GetComponent<Button>();
|
||||
btn_save = transform.Find("root/btn_save/btn_green").GetComponent<Button>();
|
||||
content = transform.Find("root/ScrollView1/Viewport/Content/Item/panel_head").GetComponent<Transform>();
|
||||
item = transform.Find("root/ScrollView1/Viewport/Content/Item/panel_head/head").gameObject;
|
||||
GContext.container.Resolve<GuideDataCenter>().InspectTriggerGuide("PlayerHeadPopupPanel");
|
||||
}
|
||||
private void Start()
|
||||
{
|
||||
item.SetActive(false);
|
||||
text_name.text = userService.DisplayName;
|
||||
url = headUrl = userService.AvatarUrl;
|
||||
btn_save.onClick.AddListener(OnClickSave);
|
||||
btn_name.onClick.AddListener(OnClickName);
|
||||
btn_mask.onClick.AddListener(OnClickClose);
|
||||
btn_close.onClick.AddListener(OnClickClose);
|
||||
|
||||
|
||||
index = 0;
|
||||
|
||||
platformHead = new List<HeadItem>();
|
||||
#region facebookAvatar
|
||||
GameObject head_fb = Instantiate(item, content);
|
||||
head_fb.SetActive(true);
|
||||
headItem_fb = head_fb.AddComponent<HeadItem>();
|
||||
headItem_fb.SetSelected(false);
|
||||
headItem_fb.SetUrlAsync("sp_avatar_33");
|
||||
platformHead.Add(headItem_fb);
|
||||
headItem_fb.onClick = OnBtnFacebook;
|
||||
#endregion facebookAvatar
|
||||
|
||||
Dictionary<string, string> EAccoutUrl = userService.EAccoutUrl;
|
||||
if (EAccoutUrl != null && EAccoutUrl.Count > 0)
|
||||
{
|
||||
//平台头像
|
||||
if (EAccoutUrl.TryGetValue(EAccoutType.hwFacebook.ToString(), out string facebookAvatar))
|
||||
{
|
||||
headItem_fb.SetUrlAsync(facebookAvatar);
|
||||
headItem_fb.SetSelected(url == facebookAvatar);
|
||||
if (url == facebookAvatar)
|
||||
{
|
||||
index = -1;
|
||||
}
|
||||
headItem_fb.onClick = () => { ClickItem(-1, facebookAvatar); };
|
||||
headItem_fb.transform.Find("tag_facebook").gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
index = 0;
|
||||
}
|
||||
|
||||
for (int i = 0; i < userAvatars.Count; i++)
|
||||
{
|
||||
GameObject gameObject = Instantiate(item, content);
|
||||
gameObject.SetActive(true);
|
||||
HeadItem headItem = gameObject.AddComponent<HeadItem>();
|
||||
headItem.SetSelected(false);
|
||||
string avatar = userAvatars[i].Avatar;
|
||||
int clickindex = i;
|
||||
headItem.onClick = () => { ClickItem(clickindex, avatar); };
|
||||
|
||||
headItems.Add(headItem);
|
||||
if (string.IsNullOrEmpty(headUrl))
|
||||
{
|
||||
if (userAvatars[i].ID == GContext.container.Resolve<Tables>().TbGlobalConfig.InitAvatar)
|
||||
{
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (userAvatars[i].Avatar == headUrl)
|
||||
{
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (index >= headItems.Count)
|
||||
{
|
||||
index = 0;
|
||||
}
|
||||
if (index >= 0)
|
||||
{
|
||||
headItems[index].SetSelected(true);
|
||||
url = userAvatars[index].Avatar;
|
||||
}
|
||||
|
||||
head.SetData(url);
|
||||
for (int i = 0; i < userAvatars.Count; i++)
|
||||
{
|
||||
headItems[i].SetUrlAsync(userAvatars[i].Avatar);
|
||||
}
|
||||
}
|
||||
async void OnClickName()
|
||||
{
|
||||
btn_name.enabled = false;
|
||||
GameObject panel = await UIManager.Instance.GetUIAsync(UITypes.PlayerNamePopupPanel);
|
||||
PlayerNamePopupPanel playerNamePopupPanel = panel.GetComponent<PlayerNamePopupPanel>();
|
||||
//playerNamePopupPanel.inputField.text = text_name.text;
|
||||
playerNamePopupPanel.Show(text_name);
|
||||
btn_name.enabled = true;
|
||||
}
|
||||
void ClickItem(int _index, string avatar)
|
||||
{
|
||||
if (index == _index)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (index >= 0)
|
||||
{
|
||||
headItems[index].SetSelected(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
platformHead[-index - 1].SetSelected(false);
|
||||
}
|
||||
index = _index;
|
||||
if (index >= 0)
|
||||
{
|
||||
headItems[index].SetSelected(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
platformHead[-index - 1].SetSelected(true);
|
||||
}
|
||||
url = avatar;
|
||||
head.SetData(url);
|
||||
}
|
||||
void OnClickSave()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(url) && headUrl != url)
|
||||
{
|
||||
userService.UpdateAvatarUrl(url);
|
||||
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_13"));
|
||||
}
|
||||
OnClickClose();
|
||||
}
|
||||
void OnClickClose()
|
||||
{
|
||||
UIManager.Instance.DestroyUI(UITypes.PlayerHeadPopupPanel);
|
||||
}
|
||||
|
||||
async void OnBtnFacebook()
|
||||
{
|
||||
var result = await userService.LinkAccount(EAccoutType.hwFacebook);
|
||||
if (result)
|
||||
{
|
||||
PlayFabMgr.Instance.UpdateUserDataValue(EAccoutType.hwFacebook.ToString(), "1");
|
||||
Dictionary<string, string> EAccoutUrl = userService.EAccoutUrl;
|
||||
if (EAccoutUrl != null && EAccoutUrl.Count > 0)
|
||||
{
|
||||
if (EAccoutUrl.TryGetValue(EAccoutType.hwFacebook.ToString(), out string facebookAvatar))
|
||||
{
|
||||
headItem_fb.SetUrlAsync(facebookAvatar);
|
||||
headItem_fb.onClick = () => { ClickItem(-1, facebookAvatar); };
|
||||
headItem_fb.transform.Find("tag_facebook").gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
GetReward();
|
||||
}
|
||||
}
|
||||
void GetReward()
|
||||
{
|
||||
int rewardID = GContext.container.Resolve<Tables>().TbGlobalConfig.AccountLinkReward;
|
||||
ItemData itemData = GContext.container.Resolve<PlayerItemData>().GetItemDataOne(rewardID);
|
||||
GContext.container.Resolve<PlayerItemData>().AddItem(itemData);
|
||||
GContext.Publish(new ShowData(itemData));
|
||||
GContext.Publish(new ShowData());
|
||||
GContext.container.Resolve<PlayerShopData>().GetSKUs();
|
||||
}
|
||||
}
|
||||
class HeadItem : MonoBehaviour
|
||||
{
|
||||
public Image icon_head;
|
||||
Button btn_head;
|
||||
public GameObject selected;
|
||||
GameObject loading;
|
||||
public Action onClick;
|
||||
private void Awake()
|
||||
{
|
||||
btn_head = GetComponent<Button>();
|
||||
icon_head = transform.Find("mask/icon_head").GetComponent<Image>();
|
||||
selected = transform.Find("selected").gameObject;
|
||||
loading = transform.Find("loading").gameObject;
|
||||
btn_head.onClick.AddListener(OnClick);
|
||||
}
|
||||
public void SetSelected(bool value)
|
||||
{
|
||||
selected.SetActive(value);
|
||||
}
|
||||
void OnClick()
|
||||
{
|
||||
if (loading.activeSelf)
|
||||
{
|
||||
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_102"));
|
||||
return;
|
||||
}
|
||||
if (onClick != null)
|
||||
{
|
||||
onClick();
|
||||
}
|
||||
}
|
||||
public async void SetUrlAsync(string url)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(url))
|
||||
{
|
||||
loading.SetActive(true);
|
||||
await GContext.container.Resolve<IUIService>().SetHeadImage(icon_head, url);
|
||||
if (loading != null)
|
||||
{
|
||||
loading.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user