lcy
昨天 0537119a9d1cb2c87286a6bc3ff38157b4f510b3
400 【常规】跑马灯 接入Gm广播消息封包
6个文件已添加
2个文件已修改
194 ■■■■■ 已修改文件
Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Main.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Message/GMNotify.cs 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Message/GMNotify.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs
New file
@@ -0,0 +1,14 @@
using UnityEngine;
using System.Collections;
//A0 01 Gm广播消息#tagBroadCastInfo
public class DTCA001_tagBroadCastInfo : DtcBasic
{
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        HA001_tagBroadCastInfo vNetData = vNetPack as HA001_tagBroadCastInfo;
        GMNotifyManager.Instance.Notify(vNetData);
    }
}
Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 42dceab20a12bc14da587223f4d76510
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -147,6 +147,7 @@
        Register(typeof(HB161_tagSCFuncPresetInfoList), typeof(DTCB161_tagSCFuncPresetInfoList));
        Register(typeof(HB162_tagSCFuncPresetSwitchInfo), typeof(DTCB162_tagSCFuncPresetSwitchInfo));
        Register(typeof(HB163_tagSCBatPresetSwitchInfo), typeof(DTCB163_tagSCBatPresetSwitchInfo));
        Register(typeof(HA001_tagBroadCastInfo), typeof(DTCA001_tagBroadCastInfo));
    }
    //主工程注册封包
Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs
New file
@@ -0,0 +1,27 @@
using UnityEngine;
using System.Collections;
//A0 01 Gm广播消息#tagBroadCastInfo
public class HA001_tagBroadCastInfo : GameNetPackBasic {
    public uint StartTime;
    public uint EndTime;
    public ushort Interval;    //时间间隔
    public ushort MsgLen;
    public string Msg;    //size = MsgLen
    public byte IsDelOthers;    //是否删除其他的
    public HA001_tagBroadCastInfo () {
        _cmd = (ushort)0xA001;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out StartTime, vBytes, NetDataType.DWORD);
        TransBytes (out EndTime, vBytes, NetDataType.DWORD);
        TransBytes (out Interval, vBytes, NetDataType.WORD);
        TransBytes (out MsgLen, vBytes, NetDataType.WORD);
        TransBytes (out Msg, vBytes, NetDataType.Chars, MsgLen);
        TransBytes (out IsDelOthers, vBytes, NetDataType.BYTE);
    }
}
Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8a5084f76f1b2d9469bcaebf5c3dbc79
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Main.cs
@@ -103,6 +103,7 @@
        managers.Add(EquipRecordManager.Instance);
        managers.Add(MinggeManager.Instance);
        managers.Add(FuncPresetManager.Instance);
        managers.Add(GMNotifyManager.Instance);
        foreach (var manager in managers)
        {
Main/System/Message/GMNotify.cs
New file
@@ -0,0 +1,118 @@
using System;
using System.Collections;
using System.Collections.Generic;
public class GMNotifyManager : GameSystemManager<GMNotifyManager>
{
    public override void Init()
    {
        GlobalTimeEvent.Instance.secondEvent += SecondEvent;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
    }
    public override void Release()
    {
        GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
    }
    public void OnBeforePlayerDataInitializeEventOnRelogin()
    {
        gmNotifies.Clear();
        serverInited = false;
    }
    public void OnPlayerLoginOk()
    {
        serverInited = true;
    }
    private List<GMNotifyMessgae> gmNotifies = new List<GMNotifyMessgae>();
    private ArrayList infoArray = new ArrayList();
    private bool serverInited = false;
    private void SecondEvent()
    {
        if (!serverInited)
        {
            return;
        }
        for (int i = 0; i < gmNotifies.Count; i++)
        {
            var _notify = gmNotifies[i];
            if (!CheckNotify(_notify))
            {
                gmNotifies.RemoveAt(i);
                _notify = null;
                i--;
                continue;
            }
            if (CheckSend())
            {
                if ((TimeUtility.ServerNow - _notify.nextNotifyTime).TotalSeconds >= 0)
                {
                    var _totalMinutes = (int)(TimeUtility.ServerNow - _notify.start).TotalMinutes;
                    var _detalMinutes = (_totalMinutes / _notify.interval + 1) * _notify.interval;
                    _notify.nextNotifyTime = _notify.start.AddTicks(_detalMinutes * TimeSpan.TicksPerMinute);
                    Notify(_notify);
                }
            }
        }
    }
    public void Notify(HA001_tagBroadCastInfo package)
    {
        if (package.IsDelOthers == 1)
        {
            gmNotifies.Clear();
        }
        gmNotifies.Add(new GMNotifyMessgae()
        {
            start = TimeUtility.GetTime(package.StartTime),
            end = TimeUtility.GetTime(package.EndTime),
            message = UIHelper.ServerStringTrim(package.Msg).Replace(@"\", string.Empty),
            interval = package.Interval,
            nextNotifyTime = TimeUtility.GetTime(package.StartTime),
        });
    }
    private void Notify(GMNotifyMessgae _notify)
    {
        ServerTipDetails.ShowMarquee(_notify.message, null, 10);
        ChatManager.Instance.AddSysData(_notify.message, infoArray, ChatChannel.World, false);
    }
    private bool CheckNotify(GMNotifyMessgae _notify)
    {
        if ((TimeUtility.ServerNow - _notify.end).TotalSeconds > 0)
        {
            return false;
        }
        return true;
    }
    private bool CheckSend()
    {
        if (StageManager.Instance.currentStage == StageName.Login)
        {
            return false;
        }
        return true;
    }
    public class GMNotifyMessgae
    {
        public DateTime start;
        public DateTime end;
        public DateTime nextNotifyTime;
        public int interval;//分钟
        public string message = string.Empty;
    }
}
Main/System/Message/GMNotify.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f42b6a1b0c4602c47a26401533a82716
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: