解决消息处理bug

This commit is contained in:
lishuo 2021-12-21 10:10:05 +08:00
parent 348552b0bc
commit 939084b074
3 changed files with 13 additions and 7 deletions

View File

@ -311,7 +311,7 @@ public class MainController : BaseScene
MapUDPService.Send(0, App.CurrentUser.Id, new double[]{ 0d,0d}, competitionId: 0);
//发送消息
var list = MapUDPService.GetOnlineUserList();
var list = MapUDPService.GetAllOnlineUserList();
foreach (var item in list)
{
if (item.RouteId > 0)
@ -421,6 +421,7 @@ public class MainController : BaseScene
}
private void OnDestroy()
{
EventQueueSystem.RemoveListener<LinkedMessageEvent>(LinkedMessageHandler);
App.isHomeChanged -= OnIsHomeChanged;
}
}

View File

@ -303,7 +303,7 @@ namespace Assets.Scenes.Ride.Scripts
return result;
}
public static List<OnlineUser> GetOnlineUserList()
public static List<OnlineUser> 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();

View File

@ -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<string> keyList = new List<string>();
private static Dictionary<string,GameEvent> keyList = new Dictionary<string, GameEvent>();
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;