From 0537119a9d1cb2c87286a6bc3ff38157b4f510b3 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期二, 20 一月 2026 15:50:56 +0800
Subject: [PATCH] 400 【常规】跑马灯 接入Gm广播消息封包
---
Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs.meta | 11 ++
Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs.meta | 11 ++
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs | 1
Main/System/Message/GMNotify.cs.meta | 11 ++
Main/Main.cs | 1
Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs | 14 +++
Main/System/Message/GMNotify.cs | 118 +++++++++++++++++++++++++++++
Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs | 27 ++++++
8 files changed, 194 insertions(+), 0 deletions(-)
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs
new file mode 100644
index 0000000..6bc84f7
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs
@@ -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);
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs.meta
new file mode 100644
index 0000000..198c9ed
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA001_tagBroadCastInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 42dceab20a12bc14da587223f4d76510
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
index de27332..8228824 100644
--- a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
+++ b/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));
}
//涓诲伐绋嬫敞鍐屽皝鍖�
diff --git a/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs b/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs
new file mode 100644
index 0000000..084257c
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs
@@ -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);
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs.meta
new file mode 100644
index 0000000..f9120ed
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA001_tagBroadCastInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8a5084f76f1b2d9469bcaebf5c3dbc79
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Main.cs b/Main/Main.cs
index 0e8361f..35335b9 100644
--- a/Main/Main.cs
+++ b/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)
{
diff --git a/Main/System/Message/GMNotify.cs b/Main/System/Message/GMNotify.cs
new file mode 100644
index 0000000..e541c2e
--- /dev/null
+++ b/Main/System/Message/GMNotify.cs
@@ -0,0 +1,118 @@
+锘縰sing 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;
+ }
+}
+
+
diff --git a/Main/System/Message/GMNotify.cs.meta b/Main/System/Message/GMNotify.cs.meta
new file mode 100644
index 0000000..d880cc3
--- /dev/null
+++ b/Main/System/Message/GMNotify.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f42b6a1b0c4602c47a26401533a82716
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
--
Gitblit v1.8.0