hch
3 天以前 cfe2a2d5bc6fe9a85488542597d4f73dddbfeee8
285 【公会】公会行商(砍价)
9个文件已修改
12个文件已添加
749 ■■■■■ 已修改文件
Main/Core/NetworkPackage/DTCFile/ServerPack/HA5_Family/DTCA512_tagMCFamilyZhenbaogeInfo.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HA5_Family/DTCA512_tagMCFamilyZhenbaogeInfo.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA5_Family/HA512_tagMCFamilyZhenbaogeInfo.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA5_Family/HA512_tagMCFamilyZhenbaogeInfo.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/SDK/SDKUtils.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/SDK/ynmbxxjUtil.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildBaseWin.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildHawkerCutCell.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildHawkerCutCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildHawkerNoCutCell.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildHawkerNoCutCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildHawkerNoCutWin.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildHawkerNoCutWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildHawkerWin.cs 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildHawkerWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildManager.cs 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Message/ImgAnalysis.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Sound/SoundPlayer.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/TimeUtility.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/UIHelper.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HA5_Family/DTCA512_tagMCFamilyZhenbaogeInfo.cs
New file
@@ -0,0 +1,12 @@
using UnityEngine;
using System.Collections;
// A5 12 珍宝阁信息 #tagMCFamilyZhenbaogeInfo
public class DTCA512_tagMCFamilyZhenbaogeInfo : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HA512_tagMCFamilyZhenbaogeInfo vNetData = vNetPack as HA512_tagMCFamilyZhenbaogeInfo;
        GuildManager.Instance.UpdateZhenbaogeInfo(vNetData);
    }
}
Main/Core/NetworkPackage/DTCFile/ServerPack/HA5_Family/DTCA512_tagMCFamilyZhenbaogeInfo.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ec9f17e4edd25e341a241f6ad8cdf8f6
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -108,6 +108,7 @@
        Register(typeof(HA722_tagSCADInfoList), typeof(DTCA722_tagSCADInfoList));
        Register(typeof(H0320_tagFBEnd), typeof(DTC0320_tagFBEnd));
        Register(typeof(HA502_tagSCDonateCntInfo), typeof(DTCA502_tagSCDonateCntInfo));
        Register(typeof(HA512_tagMCFamilyZhenbaogeInfo), typeof(DTCA512_tagMCFamilyZhenbaogeInfo));
        Register(typeof(HA513_tagMCFamilyActionInfo), typeof(DTCA513_tagMCFamilyActionInfo));
        Register(typeof(HA520_tagMCRoleFamilyInfo), typeof(DTCA520_tagMCRoleFamilyInfo));
        Register(typeof(HA521_tagMCFamilyChange), typeof(DTCA521_tagMCFamilyChange));
Main/Core/NetworkPackage/ServerPack/HA5_Family/HA512_tagMCFamilyZhenbaogeInfo.cs
New file
@@ -0,0 +1,19 @@
using UnityEngine;
using System.Collections;
// A5 12 珍宝阁信息 #tagMCFamilyZhenbaogeInfo
public class HA512_tagMCFamilyZhenbaogeInfo : GameNetPackBasic {
    public byte CutState;    // 今日是否已砍价,此状态为全局状态,与盟Action砍价状态不同
    public byte BuyState;    // 今日是否已购买,此状态为全局状态,与盟Action购买状态不同
    public HA512_tagMCFamilyZhenbaogeInfo () {
        _cmd = (ushort)0xA512;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out CutState, vBytes, NetDataType.BYTE);
        TransBytes (out BuyState, vBytes, NetDataType.BYTE);
    }
}
Main/Core/NetworkPackage/ServerPack/HA5_Family/HA512_tagMCFamilyZhenbaogeInfo.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 06bc06bc3506760409fd2a280d68e559
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/SDK/SDKUtils.cs
@@ -128,7 +128,7 @@
    public void Init()
    {
        ynmbxxjUtil.Instance.Init();
        ynmbxxjUtil.Instance.Init();    // sdk临时用,后续新做SDK后删除
        Device = new DeviceInfo();
        string uid = LocalSave.GetString("Device_uniqueID");
        //Debug.Log(Math.Abs(System.Environment.TickCount));
Main/SDK/ynmbxxjUtil.cs
@@ -1,4 +1,4 @@

// sdk临时用,后续新做SDK后删除
public class ynmbxxjUtil : SingletonMonobehaviour<ynmbxxjUtil>
{
    public void HandleMsgWithSDK(string jsonString)
Main/System/Guild/GuildBaseWin.cs
@@ -9,6 +9,9 @@
public class GuildBaseWin : UIBase
{
    [SerializeField] Button guildBtn;
    [SerializeField] Button guildHawkerBtn; //行商
    [SerializeField] Text guildHawkerTimeText;
    [SerializeField] Text guildHawkerInfo;  //备货
    [SerializeField] GuildEmblemCell emblemCell;
    [SerializeField] Text guildNameText;
    [SerializeField] Text guildMemberCountText;
@@ -24,11 +27,13 @@
        {
            UIManager.Instance.OpenWindow<GuildHallWin>();
        });
        requestBtn.AddListener(() =>
        {
            // UIManager.Instance.OpenWindow<GuildRequestWin>();
        });
        guildHawkerBtn.AddListener(OpenHawker);
    }
@@ -36,21 +41,27 @@
    {
        if (PlayerDatas.Instance.fairyData.fairy == null)
            return;
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        Display();
    }
    protected override void OnPreClose()
    {
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
    }
    void Display()
    {
        ShowGuildInfo();
        ShowHawkerTime();
    }
    void OnSecondEvent()
    {
        ShowHawkerTime();
    }
    void ShowGuildInfo()
    {
@@ -59,4 +70,32 @@
        var config = FamilyConfig.Get(PlayerDatas.Instance.fairyData.fairy.FamilyLV);
        guildMemberCountText.text = PlayerDatas.Instance.fairyData.fairy.MemberCount + "/" + config.MemberMax;
    }
    void OpenHawker()
    {
        if (TimeUtility.GetToTenClockSeconds() > 0)
        {
            SysNotifyMgr.Instance.ShowTip("GuildSys17");
            return;
        }
        UIManager.Instance.OpenWindow<GuildHawkerWin>();
    }
    void ShowHawkerTime()
    {
        var toTenSeconds = TimeUtility.GetToTenClockSeconds();
        if (toTenSeconds > 0)
        {
            guildHawkerTimeText.text = TimeUtility.SecondsToHMS(toTenSeconds);
            guildHawkerInfo.SetActive(true);
            var addStr = new string('.', (int)Time.time % 4);
            guildHawkerInfo.text = Language.Get("Guild_72") + addStr;
        }
        else
        {
            guildHawkerTimeText.text = TimeUtility.SecondsToHMS((int)(TimeUtility.GetTodayEndTime() - TimeUtility.ServerNow).TotalSeconds);
            guildHawkerInfo.SetActive(false);
        }
    }
}
Main/System/Guild/GuildHawkerCutCell.cs
New file
@@ -0,0 +1,24 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GuildHawkerCutCell : CellView
{
    [SerializeField] Text nameText;
    [SerializeField] Image moneyIcon;
    [SerializeField] Text cutText;
    [SerializeField] Text buyState;
    public void Display(int index)
    {
        var info = GuildManager.Instance.familyZBGActions[GuildManager.Instance.sortPlayerCut[index]];
        nameText.text = string.Format("{0}.{1}", index + 1, info.Name);
        moneyIcon.SetIconWithMoneyType(GuildManager.Instance.zbgPriceType);
        cutText.text = info.Value2.ToString();
        buyState.SetActive(info.Value3 == 1);
    }
}
Main/System/Guild/GuildHawkerCutCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 147bae5514614244ea9d17fe6c138ae2
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/Guild/GuildHawkerNoCutCell.cs
New file
@@ -0,0 +1,23 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GuildHawkerNoCutCell : CellView
{
    [SerializeField] Text nameText;
    [SerializeField] Text timeText;
    public void Display(int id)
    {
        var fairyMember = GuildManager.Instance.tmpNoCutMembers[id];
        nameText.text = fairyMember.Name;
        timeText.text = fairyMember.OffTime != 0 ? UIHelper.GetFadeTime((uint)fairyMember.OffTime) + Language.Get("L1026") : string.Empty;
    }
}
Main/System/Guild/GuildHawkerNoCutCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b215a1842ddb2d042bea119716d15057
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/Guild/GuildHawkerNoCutWin.cs
New file
@@ -0,0 +1,47 @@
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public class GuildHawkerNoCutWin : UIBase
{
    [SerializeField] ScrollerController scroller;
    protected override void OnPreOpen()
    {
        scroller.OnRefreshCell += OnRefreshCell;
        GuildManager.Instance.CalcNoCutMembers();
        CreateScroller();
    }
    protected override void OnPreClose()
    {
        scroller.OnRefreshCell -= OnRefreshCell;
    }
    void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell as GuildHawkerNoCutCell;
        _cell.Display(cell.index);
    }
    void CreateScroller()
    {
        scroller.Refresh();
        var keys = GuildManager.Instance.tmpNoCutMembers.Keys.ToList();
        for (int i = 0; i < keys.Count; i++)
        {
            scroller.AddCell(ScrollerDataType.Header, keys[i]);
        }
        scroller.Restart();
    }
}
Main/System/Guild/GuildHawkerNoCutWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ce8023abd942fb2408e1d091c0c3317d
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/Guild/GuildHawkerWin.cs
New file
@@ -0,0 +1,246 @@
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public class GuildHawkerWin : UIBase
{
    [SerializeField] Text talkText;
    [SerializeField] List<ItemCell> items = new List<ItemCell>();
    [SerializeField] Text orgPrice;
    [SerializeField] Image orgIcon;
    [SerializeField] Text price;
    [SerializeField] Image nowIcon;
    [SerializeField] Text totalInfo;
    [SerializeField] Button memberOnlineBtn;
    [SerializeField] ScrollerController scroller;
    [SerializeField] Button cutBtn;
    [SerializeField] Text cutText;
    [SerializeField] Text timeText;
    protected override void InitComponent()
    {
        memberOnlineBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<GuildHawkerNoCutWin>();
        });
        cutBtn.AddListener(OnCut);
    }
    protected override void OnPreOpen()
    {
        GuildManager.Instance.UpdateFamilyActionEvent += OnFamilyActionInfoEvent;
        scroller.OnRefreshCell += OnRefreshCell;
        GuildManager.Instance.UpdateZhenbaogeEvent += OnPlayerZBGEvent;
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        Display();
        CreateScroller();
    }
    protected override void OnOpen()
    {
        DisplayTalk();
    }
    protected override void OnPreClose()
    {
        GuildManager.Instance.UpdateFamilyActionEvent -= OnFamilyActionInfoEvent;
        scroller.OnRefreshCell -= OnRefreshCell;
        GuildManager.Instance.UpdateZhenbaogeEvent -= OnPlayerZBGEvent;
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
    }
    void OnSecondEvent()
    {
        timeText.text = Language.Get("Guild_74", TimeUtility.SecondsToShortDHMS((int)(TimeUtility.GetTodayEndTime() - TimeUtility.ServerNow).TotalSeconds));
    }
    void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell as GuildHawkerCutCell;
        _cell.Display(cell.index);
    }
    void CreateScroller()
    {
        scroller.Refresh();
        var keys = GuildManager.Instance.sortPlayerCut;
        for (int i = 0; i < keys.Count; i++)
        {
            scroller.AddCell(ScrollerDataType.Header, i);
        }
        scroller.Restart();
    }
    void Display()
    {
        var awards = GuildManager.Instance.GetZBGItems();
        for (int i = 0; i < items.Count; i++)
        {
            if (i < awards.Length)
            {
                items[i].SetActive(true);
                int itemID = awards[i][0];
                items[i].Init(new ItemCellModel(itemID, false, awards[i][1]));
                items[i].button.AddListener(() => {
                    ItemTipUtility.Show(itemID);
                });
            }
            else
            {
                items[i].SetActive(false);
            }
        }
        orgPrice.text = GuildManager.Instance.zbgOrgPriceValue.ToString();
        orgIcon.SetIconWithMoneyType(GuildManager.Instance.zbgPriceType);
        nowIcon.SetIconWithMoneyType(GuildManager.Instance.zbgPriceType);
        DisplayFamilyCutInfo();
        DisplayBtnState();
        OnSecondEvent();
    }
    void DisplayFamilyCutInfo()
    {
        int cutPrice = 0;
        if (GuildManager.Instance.familyZBGActions[1].Value3 > 0)
        {
            price.text = "-" + GuildManager.Instance.familyZBGActions[1].Value2;
            cutPrice = GuildManager.Instance.zbgOrgPriceValue + (int)GuildManager.Instance.familyZBGActions[1].Value2;
        }
        else
        {
            price.text = GuildManager.Instance.familyZBGActions[1].Value2.ToString();
            cutPrice = GuildManager.Instance.zbgOrgPriceValue - (int)GuildManager.Instance.familyZBGActions[1].Value2;
        }
        totalInfo.text = Language.Get("Guild_73", GuildManager.Instance.familyZBGActions.Count - 1, PlayerDatas.Instance.fairyData.fairy.MemberCount,
            UIHelper.GetIconNameWithMoneyType(GuildManager.Instance.zbgPriceType), cutPrice);
        orgIcon.SetActive(GuildManager.Instance.familyZBGActions.Count > 1);
    }
    void DisplayBtnState()
    {
        if (GuildManager.Instance.zhenbaogeCutState == 0)
        {
            cutText.text = Language.Get("Guild_76");
            cutBtn.SetInteractable(true);
        }
        else if (GuildManager.Instance.zhenbaogeBuyState == 0)
        {
            cutText.text = Language.Get("L1134");
            cutBtn.SetInteractable(true);
        }
        else
        {
            cutText.text = Language.Get("L1133");
            cutBtn.SetInteractable(false);
        }
    }
    void DisplayTalk()
    {
        talkText.text = Language.Get("GuildHawkerTalk" + GuildManager.Instance.GetTalkState());
    }
    private void OnDisable()
    {
    }
    private void OnFamilyActionInfoEvent(bool restart)
    {
        if (restart)
        {
            Display();
        }
        else
        {
            DisplayFamilyCutInfo();
        }
        DisplayTalk();
        if (GuildManager.Instance.sortPlayerCut.Count != scroller.GetNumberOfCells(scroller.m_Scorller))
        {
            CreateScroller();
        }
        else
        {
            scroller.m_Scorller.RefreshActiveCellViews();
        }
        DisplayBtnState();
    }
    void OnCut()
    {
        //退盟的cd限制
        if (GuildManager.Instance.needCheckCutCD && (TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime) / 60 < GuildManager.Instance.zbgChangFamilyCD )
        {
            SysNotifyMgr.Instance.ShowTip("ZhenbaogeCut1", GuildManager.Instance.zbgChangFamilyCD - (TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime) / 60);
            return;
        }
        if (GuildManager.Instance.zhenbaogeCutState == 0)
        {
            GuildManager.Instance.OnZhenbaogeOP(0);
        }
        else if (GuildManager.Instance.zhenbaogeBuyState == 0)
        {
            if (PackManager.Instance.GetEmptyGridCount(PackType.Item) < items.Count)
            {
                SysNotifyMgr.Instance.ShowTip("GeRen_lhs_202580");
                return;
            }
            if (GuildManager.Instance.familyZBGActions[1].Value3 == 0 && UIHelper.GetMoneyCnt(GuildManager.Instance.zbgPriceType) < GuildManager.Instance.familyZBGActions[1].Value2)
            {
                SysNotifyMgr.Instance.ShowTip("LackMoney", GuildManager.Instance.zbgPriceType);
                return;
            }
            int cutPrice = 0;
            if (GuildManager.Instance.familyZBGActions[1].Value3 > 0)
            {
                cutPrice = -(int)GuildManager.Instance.familyZBGActions[1].Value2;
            }
            else
            {
                cutPrice = (int)GuildManager.Instance.familyZBGActions[1].Value2;
            }
            ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
            Language.Get("L1135", GuildManager.Instance.zbgPriceType, cutPrice)+ Language.Get("Guild_71"), (bool isOK) =>
                {
                    if (isOK)
                    {
                        GuildManager.Instance.OnZhenbaogeOP(1);
                    }
                });
        }
    }
    void OnPlayerZBGEvent()
    {
        DisplayBtnState();
    }
}
Main/System/Guild/GuildHawkerWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 71edf82d8b7ae104caa808df3de6e4e2
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/Guild/GuildManager.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cysharp.Threading.Tasks;
using LitJson;
@@ -33,6 +34,7 @@
    public event Action DonateCntListEvent;
    public event Action<bool> EnterOrQuitGuildEvent;   //进入或退出公会事件
    public override void Init()
    {
        ParseConfig();
@@ -56,6 +58,7 @@
    void OnPlayerLoginOk()
    {
        UpdateDonateRedPoint();
        QueryZBGFamilyInfo();
    }
    
    void PlayerDataRefreshEvent(PlayerDataType type)
@@ -83,15 +86,24 @@
        //需要转到HomeWin界面 且关闭公会相关界面(父子继承关闭)
        UIManager.Instance.GetUI<MainWin>()?.ClickFunc(0);
        isQueryZBGYet = false;
        zhenbaogeCutState = 0;
        familyZBGActions.Clear();
        sortPlayerCut.Clear();
        UpdateZBGRedpoint();
        UpdateDonateRedPoint();
        EnterOrQuitGuildEvent?.Invoke(false);
    }
    //注意上线通知公会数据时也会触发
    public async UniTask AfterEnterGuild()
    {
        //这里还没有公会数据, 后续的包会更新公会数据
        await UniTask.Delay(100);
        UpdateDonateRedPoint();
        UpdateZBGRedpoint();
        EnterOrQuitGuildEvent?.Invoke(true);
    }
@@ -123,6 +135,27 @@
    public int renameFairyNameCD;
    public int renameFairyNameCost;
    public int renameFairyNameMoneyType;
    //珍宝阁(行商)
    public int zhenbaogeCutState = 0;
    public int zhenbaogeBuyState = 0;
    public bool needCheckCutCD = false;
    public event Action UpdateZhenbaogeEvent;
    public bool isQueryZBGYet = false;
    public float lastZBGStartTime = 0; //过天刷新用
    public const int ZBGFamilyActionType = 16;
    //{id:数据} 砍价行为,value1为玩家ID,特殊约定为1时为家族的数据
    public Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction> familyZBGActions = new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction>();
    public List<int> sortPlayerCut = new List<int>();
    public event Action<bool> UpdateFamilyActionEvent;
    public int zbgPriceType;
    public int zbgOrgPriceValue;
    public int zbgChangFamilyCD;
    public List<int> cutCntListForTalk = new List<int>();
    void ParseConfig()
    {
@@ -156,6 +189,11 @@
        renameFairyNameMoneyType = arr[0];
        renameFairyNameCost = arr[1];
        config = FuncConfigConfig.Get("Zhenbaoge");
        zbgPriceType = int.Parse(config.Numerical1);
        zbgOrgPriceValue = int.Parse(config.Numerical2);
        zbgChangFamilyCD = int.Parse(config.Numerical3);
        cutCntListForTalk = JsonMapper.ToObject<List<int>>(config.Numerical4);
    }
@@ -384,6 +422,12 @@
    #region  公会自定义记录
    public void UpdateFamilyAction(HA513_tagMCFamilyActionInfo _package)
    {
        if (PlayerDatas.Instance.fairyData == null ||
            PlayerDatas.Instance.fairyData.fairy == null ||
            PlayerDatas.Instance.fairyData.fairy.FamilyID != _package.FamilyID)
        {
            return;
        }
        if (!familyActions.ContainsKey((int)_package.FamilyID))
        {
@@ -391,6 +435,9 @@
        }
        familyActions[(int)_package.FamilyID][_package.ActionType] = _package.FamilyActionList;
        UpdateHawkerAction(_package);
        FamilyActionInfoEvent?.Invoke((int)_package.FamilyID, _package.ActionType);
    }
@@ -414,7 +461,7 @@
    public void QueryFamilyAction(int familyID, int actionType)
    {
        var pack = new CA617_tagCMQueryFamilyAction();
        pack.FamilyID = (ushort)familyID;
        pack.FamilyID = (uint)familyID;
        pack.ActionType = (byte)actionType;
        GameNetSystem.Instance.SendInfo(pack);
    }
@@ -716,9 +763,143 @@
    }
    #endregion
    #region 珍宝阁
    public void UpdateZhenbaogeInfo(HA512_tagMCFamilyZhenbaogeInfo netPack)
    {
        //砍价状态:仙盟里记录已砍价才是真的已砍价状态,封包中的砍价状态用于判断cd间隔使用
        needCheckCutCD = netPack.CutState == 1;
        zhenbaogeBuyState = netPack.BuyState;
        UpdateZhenbaogeEvent?.Invoke();
        UpdateZBGRedpoint();
    }
    //登录后首次打开查询,换新仙盟查询
    public void QueryZBGFamilyInfo()
    {
        if (isQueryZBGYet)
            return;
        QueryFamilyAction((int)PlayerDatas.Instance.baseData.FamilyId, 16);
        isQueryZBGYet = true;
    }
    //更新砍价信息
    public void UpdateHawkerAction(HA513_tagMCFamilyActionInfo vNetData)
    {
        if (vNetData.ActionType != ZBGFamilyActionType)
        {
            return;
        }
        bool restart = false;
        if (vNetData.FamilyActionList.Length == 1 && vNetData.FamilyActionList[0].Value1 == 1)
        {
            if (familyZBGActions.ContainsKey(1) && familyZBGActions[1].Time != vNetData.FamilyActionList[0].Time)
            {
                familyZBGActions.Clear();
                sortPlayerCut.Clear();
                restart = true;
            }
        }
        for (int i = 0; i < vNetData.FamilyActionList.Length; i++)
        {
            int playerID = (int)vNetData.FamilyActionList[i].Value1;
            familyZBGActions[playerID] = vNetData.FamilyActionList[i];
        }
        if (familyZBGActions.ContainsKey((int)PlayerDatas.Instance.baseData.PlayerID))
        {
            //自己是否已砍价 从列表中查找
            zhenbaogeCutState = 1;
        }
        else
        {
            zhenbaogeCutState = 0;
        }
        sortPlayerCut = familyZBGActions.Keys.ToList();
        if (sortPlayerCut.Contains(1))
            sortPlayerCut.Remove(1);
        sortPlayerCut.Sort((a, b) => { return familyZBGActions[a].Time.CompareTo(familyZBGActions[b].Time); });
        UpdateFamilyActionEvent?.Invoke(restart);
        UpdateZBGRedpoint();
    }
    //砍价人数
    public int GetZBGFamilyActionCount()
    {
        return Math.Max(0, familyZBGActions.Count - 1);
    }
    public int GetTalkState()
    {
        int cnt = GetZBGFamilyActionCount();
        for (int i = 0; i < cutCntListForTalk.Count; i++)
        {
            if (cnt < cutCntListForTalk[i])
            {
                return i;
            }
        }
        return 0;
    }
    public int[][] GetZBGItems()
    {
        if (!familyZBGActions.ContainsKey(1))
            return null;
        return JsonMapper.ToObject<int[][]>(familyZBGActions[1].UseData);
    }
    public void OnZhenbaogeOP(byte type)
    {
        var pack = new CA616_tagCMZhenbaogeOP();
        pack.OpType = type;
        GameNetSystem.Instance.SendInfo(pack);
    }
    public Dictionary <int, FairyMember> tmpNoCutMembers = new Dictionary<int, FairyMember>();
    //未议价成员
    public void CalcNoCutMembers()
    {
        tmpNoCutMembers.Clear();
        var fairy = PlayerDatas.Instance.fairyData;
        if (fairy == null)
        {
            return;
        }
        foreach(var playerID in fairy.memberIDList)
        {
            if (!familyZBGActions.ContainsKey(playerID))
            {
                tmpNoCutMembers[playerID] = fairy.GetMember(playerID);
            }
        }
    }
    #endregion
    #region 红点
    Redpoint hallRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.guildHallRedpointID);
    Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.MainGuildRedpoint * 100);
    Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.guildHallRedpointID * 10);
    //珍宝阁(行商)
    Redpoint zbgRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.MainGuildRedpoint * 100 + 1);
    void UpdateDonateRedPoint()
    {
@@ -749,6 +930,28 @@
            }
        }
    }
    public void UpdateZBGRedpoint()
    {
        zbgRedpoint.state = RedPointState.None;
        if (!PlayerDatas.Instance.fairyData.HasFairy)
        {
            return;
        }
        if (zhenbaogeCutState == 0)
        {
            zbgRedpoint.state = RedPointState.Simple;
        }
        else if (zhenbaogeBuyState == 0)
        {
            if (familyZBGActions[1].Value3 > 0)
            {
                zbgRedpoint.state = RedPointState.Simple;
            }
        }
    }
    #endregion
Main/System/Message/ImgAnalysis.cs
@@ -221,8 +221,11 @@
                    return;
                }
            }
            presentImgInfo.width = presentImgInfo.sprite.rect.width * presentImgInfo.scale;
            presentImgInfo.height = presentImgInfo.sprite.rect.height * presentImgInfo.scale;
            if (presentImgInfo.scale != 1f)
            {
                presentImgInfo.width = presentImgInfo.sprite.rect.width * presentImgInfo.scale;
                presentImgInfo.height = presentImgInfo.sprite.rect.height * presentImgInfo.scale;
            }
        }
    }
Main/System/Sound/SoundPlayer.cs
@@ -11,8 +11,18 @@
    static readonly List<int> commonUseAudioSet = new List<int>() { defaultClickPositiveAudio, defaultClickNegativeAudio, 3, 4 };
    public static SoundPlayer Instance {
        get; set;
    static SoundPlayer m_Instance = null;
    public static SoundPlayer Instance
    {
        get
        {
            if (m_Instance == null)
            {
                CreateSoundPlayer();
            }
            return m_Instance;
        }
    }
    [SerializeField] AudioSource m_MusicAudioSource;
@@ -45,9 +55,9 @@
    public static void CreateSoundPlayer()
    {
        var gameObject = GameObject.Instantiate(BuiltInLoader.LoadPrefab("SoundPlayer"));
        Instance = gameObject.GetComponent<SoundPlayer>();
        Instance.name = "SoundPlayer";
        Instance.SetActive(true);
        m_Instance = gameObject.GetComponent<SoundPlayer>();
        m_Instance.name = "SoundPlayer";
        m_Instance.SetActive(true);
        DontDestroyOnLoad(gameObject);
    }
@@ -312,11 +322,11 @@
    //}
    //private void LateUpdate()
    //{
    //    if (CameraController.Instance != null && CameraController.Instance.CameraObject != null)
    //    {
    //        this.transform.position = CameraController.Instance.transform.position + new Vector3(0, 5, 0);
    //        this.transform.rotation = CameraController.Instance.CameraObject.transform.rotation;
    //{
    //    if (CameraController.Instance != null && CameraController.Instance.CameraObject != null)
    //    {
    //        this.transform.position = CameraController.Instance.transform.position + new Vector3(0, 5, 0);
    //        this.transform.rotation = CameraController.Instance.CameraObject.transform.rotation;
    //    }
    //}
Main/Utility/TimeUtility.cs
@@ -252,6 +252,7 @@
        return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
    }
    //详细显示
    //xx小时xx分XX秒
    //xx分XX秒
@@ -495,6 +496,17 @@
    }
    // 到10点还要多少秒,如果已经过了10点,返回0
    public static int GetToTenClockSeconds()
    {
        var now = ServerNow;
        if (now.Hour < 10)
        {
            return (int)(ServerNow - new DateTime(now.Year, now.Month, now.Day, 10, 0, 0)).TotalSeconds;
        }
        return 0;
    }
    //开服天结束倒计时;单位秒
    public static int GetRemindTimeByOpenDay(int days)
    {
Main/Utility/UIHelper.cs
@@ -83,7 +83,11 @@
    public static string GetIconNameWithMoneyType(int moneyType)
    {
        if (GeneralDefine.MoneyDisplayModel.ContainsKey(moneyType))
        if (IconConfig.HasKey("MoneyType_" + moneyType))
        {
            return IconConfig.Get("MoneyType_" + moneyType).sprite;
        }
        else if (GeneralDefine.MoneyDisplayModel.ContainsKey(moneyType))
        {
            return ItemConfig.Get(GeneralDefine.MoneyDisplayModel[moneyType]).IconKey;
        }
@@ -174,7 +178,7 @@
    }
    /// <summary>
    /// 获取消逝的时间
    /// 获取过去的时间
    /// </summary>
    /// <param name="lastTime"></param>
    /// <returns></returns>