diff --git a/Assets/Scripts/Scenes/MainController.cs b/Assets/Scripts/Scenes/MainController.cs index a5b6ed39..2c14887c 100644 --- a/Assets/Scripts/Scenes/MainController.cs +++ b/Assets/Scripts/Scenes/MainController.cs @@ -176,6 +176,7 @@ public class MainController : BaseScene } void FinishMessageLeft() { +#if UNITY_STANDALONE_WIN msgIndex = 0; if (msgs != null) { @@ -184,6 +185,7 @@ public class MainController : BaseScene item.DOFade(0, 0.3f); } } +#endif } void FinishMessageRight() @@ -313,7 +315,8 @@ public class MainController : BaseScene MapUDPService.Send(0, App.CurrentUser.Id, new double[]{ 0d,0d}, competitionId: 0); //发送消息 - foreach (var item in MapUDPService.GetOnlineUserList()) + var list = MapUDPService.GetAllOnlineUserList(); + foreach (var item in list) { if (item.RouteId > 0) { @@ -326,7 +329,7 @@ public class MainController : BaseScene App.RouteNameDict.Add(item.RouteId, item.RouteName); } } - else + else { item.RouteName = App.RouteNameDict[item.RouteId]; } @@ -339,27 +342,32 @@ public class MainController : BaseScene { message = $"完成了{item.RouteName}的挑战"; } - if (!string.IsNullOrEmpty(message)) + if (!string.IsNullOrEmpty(message)) { EventQueueSystem.QueueEventOnce(new LinkedMessageEvent(item.RouteId, message, item.HeadImage, item.Name), $"{item.RouteId}{item.Name}"); } } + if (item.Point[0] == -1d) + { + var message = $"{item.Name}上线了"; + EventQueueSystem.QueueEventOnce(new LinkedMessageEvent(item.RouteId, message, item.HeadImage, item.Name), $"{item.Id}{item.LastActiveTime}{item.Point}"); + } //距离 if (item.EndDistance > 50) { - var message = $"在骑行过程中突破了{"50KM"}的挑战" ; + var message = $"在骑行过程中突破了{"50KM"}的挑战"; EventQueueSystem.QueueEventOnce(new LinkedMessageEvent(item.RouteId, message, item.HeadImage, item.Name), $"{item.RouteId}{item.Name}50KM"); } //速度 if (item.Speed > 10) { - var message = $"在骑行过程中速度达到了惊人的{item.Speed}KM/H"; + var message = $"在骑行过程中速度达到了惊人的{item.Speed}KM/H"; EventQueueSystem.QueueEventOnce(new LinkedMessageEvent(item.RouteId, message, item.HeadImage, item.Name), $"{item.RouteId}{item.Name}10KM/H"); } //功体比 if (item.WeightKg > 2) { - var message = $"在骑行过程中功体比达到了惊人的{item.WeightKg}w/kg"; + var message = $"在骑行过程中功体比达到了惊人的{item.WeightKg}w/kg"; EventQueueSystem.QueueEventOnce(new LinkedMessageEvent(item.RouteId, message, item.HeadImage, item.Name), $"{item.RouteId}{item.Name}2WeightKg"); } } @@ -417,6 +425,7 @@ public class MainController : BaseScene } private void OnDestroy() { + EventQueueSystem.RemoveListener(LinkedMessageHandler); App.isHomeChanged -= OnIsHomeChanged; } } diff --git a/Assets/Scripts/Scenes/Ride/Network/MapUDPService.cs b/Assets/Scripts/Scenes/Ride/Network/MapUDPService.cs index 1ca9b1e1..4aefe67b 100644 --- a/Assets/Scripts/Scenes/Ride/Network/MapUDPService.cs +++ b/Assets/Scripts/Scenes/Ride/Network/MapUDPService.cs @@ -303,7 +303,7 @@ namespace Assets.Scenes.Ride.Scripts return result; } - public static List GetOnlineUserList() + public static List GetAllOnlineUserList() { var result = onlineUserHelper.OnlineUsers.Where(c => !c.IsSelf).ToList(); return result; @@ -325,6 +325,11 @@ namespace Assets.Scenes.Ride.Scripts } public static int GetNearRiderCount() + { + return onlineUserHelper.OnlineUsers.Where(c=> (c.Point[0] != 0 && c.Point[1] != 0)|| (c.Point[0] != -1 && c.Point[1] != -1)).Count(); + } + + public static int GetAllOnlineUserCount() { return onlineUserHelper.OnlineUsers.Count(); } @@ -484,7 +489,7 @@ namespace Assets.Scenes.Ride.Scripts var list = mes.ToList(); //去除自己的数据和命令包 //mes.RemoveAll(item => item.MemberId == App.CurrentUser.Id || item.Point[0] == 0); - list.RemoveAll(item => item.Point[0] == 0 && item.Point[1] == 0); + //list.RemoveAll(item => item.Point[0] == 0 && item.Point[1] == 0); //去除重复数据 list = list.Distinct(new OlineUserComparer()).ToList(); diff --git a/Assets/Scripts/Scenes/Ride/Scripts/EventQueueManager.cs b/Assets/Scripts/Scenes/Ride/Scripts/EventQueueManager.cs index 2b5a7044..6aa19ece 100644 --- a/Assets/Scripts/Scenes/Ride/Scripts/EventQueueManager.cs +++ b/Assets/Scripts/Scenes/Ride/Scripts/EventQueueManager.cs @@ -64,6 +64,7 @@ namespace Assets.Scenes.Ride.Scripts Instance.delegates[typeof(T)] = temp; } Instance.delegateLookup.Remove(del); + keyList.Clear(); } } @@ -120,16 +121,15 @@ namespace Assets.Scenes.Ride.Scripts return; Instance.eventQueue.Enqueue(e); } - static List keyList = new List(); + private static Dictionary keyList = new Dictionary(); public static void QueueEventOnce(GameEvent e,string key) { if (!Instance.delegates.ContainsKey(e.GetType())) return; - if (keyList.Contains(key)) + if (keyList.ContainsKey(key)) return; - keyList.Add(key); - Debug.Log(126); + keyList.Add(key,e); Instance.eventQueue.Enqueue(e); } float timer = 0.0f; diff --git a/Assets/Scripts/Utils/Loom.cs b/Assets/Scripts/Utils/Loom.cs index 75921602..ea44f950 100644 --- a/Assets/Scripts/Utils/Loom.cs +++ b/Assets/Scripts/Utils/Loom.cs @@ -46,8 +46,8 @@ public class Loom : MonoBehaviour DontDestroyOnLoad(g); _current = g.AddComponent(); MapUDPService.Init(); + MapUDPService.Send(0, App.CurrentUser.Id, new double[] { -1d, -1d }, competitionId: 0); } - } private List _actions = new List();