yyl
2026-05-11 51b0f6ed9f4e1d3bb6f8144470b46908c7699a96
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
 
/// <summary>
/// 公会大厅 成员
/// </summary>
public class GuildMemberCell : CellView
{
 
    [SerializeField] AvatarCell avatarCell;
    [SerializeField] OfficialTitleCell titleCell;
    [SerializeField] Text lvText;
    [SerializeField] Text guildJobText;
    [SerializeField] Image guildJobImg;
    [SerializeField] Text nameText;
    [SerializeField] Text fightPowerText;
    [SerializeField] Text contribText;
    [SerializeField] Text loginTimeText;
 
    [SerializeField] Button showOpBtn;
    [SerializeField] Image showArrowImg;
 
 
 
    public void Display(int index)
    {
        var playerID = PlayerDatas.Instance.fairyData.memberIDList[index];
        var playerInfo = PlayerDatas.Instance.fairyData.GetMember(playerID);
        nameText.text = playerInfo.Name;
 
        avatarCell.InitUI(AvatarHelper.GetAvatarModel(0, playerInfo.Face, playerInfo.FacePic)).Forget();
        titleCell.InitUI(playerInfo.RealmLV, playerInfo.TitleID).Forget();
        lvText.text = playerInfo.LV.ToString();
        if (playerInfo.FmLV > 0)
        {
            guildJobImg.SetActive(true);
            guildJobText.text = RichTextMsgReplaceConfig.GetRichReplace("FAMILY", playerInfo.FmLV);
            guildJobImg.SetSprite("GuildJob" + playerInfo.FmLV);
        }
        else
        {
            guildJobImg.SetActive(false);
        }
 
        fightPowerText.text = UIHelper.ReplaceLargeArtNum(playerInfo.FightPower);
 
        avatarCell.SetOnLoaded(() =>
        {
            avatarCell.AddListener(() =>
            {
                OtherPlayerDetailManager.Instance.ViewPlayerDetail(playerID, playerInfo.ServerID);
            });
        });
 
        contribText.text = playerInfo.ContribDay + "/" + playerInfo.ContribTotal;
        int leftTime = TimeUtility.AllSeconds - playerInfo.OffTime;
        if (playerInfo.OffTime == 0)
        {
            loginTimeText.text = UIHelper.AppendColor(TextColType.Green, Language.Get("L1025"));
        }
        else if (leftTime < 60)
        {
            loginTimeText.text = Language.Get("Guild_63");    //刚刚在线
        }
        else
        {
            loginTimeText.text = Language.Get("Guild_61", SecondsToOnlyTime(leftTime));
        }
 
 
        showOpBtn.SetActive(PlayerDatas.Instance.fairyData.mine.FmLV >= GuildManager.Instance.GetNeedGuildJobLV((int)GuildFuncType.ChangeJob)
        && PlayerDatas.Instance.fairyData.mine.FmLV > playerInfo.FmLV);
 
        showOpBtn.AddListener(() =>
        {
            if (GuildManager.Instance.memberOPIndex == index)
            {
                GuildManager.Instance.memberOPIndex = -1;
                return;
            }
            GuildManager.Instance.memberOPIndex = index;
        });
 
        if (GuildManager.Instance.memberOPIndex == index)
        {
            //展开
            showArrowImg.transform.localScale = new Vector3(1, 1, 1);
        }
        else
        {
            showArrowImg.transform.localScale = new Vector3(1, -1, 1);
        }
    }
 
    //例子 取整处理, 1.5天 显示1天; 最大7天特殊处理
    //x天
    //x时
    //x分
    //x秒
    public static string SecondsToOnlyTime(int _seconds)
    {
        float days = (float)_seconds / 86400;
        float hours = (float)_seconds % 86400 / 3600;
        int mins = _seconds % 3600 / 60;
        float seconds = (float)_seconds % 60;
        if (days >= 1)
        {
            days = Math.Min(days, 7);
            return StringUtility.Concat(((int)days).ToString(), Language.Get("L1074"));
        }
        else if (hours >= 1)
        {
            return StringUtility.Concat(((int)hours).ToString(), Language.Get("L1072"));
        }
        else if (mins >= 1)
        {
            return StringUtility.Concat(mins.ToString(), Language.Get("L1073"));
        }
        else
        {
            return StringUtility.Concat(seconds.ToString(), Language.Get("L1075"));
        }
    }
}