public static void GetScreen(GameClient Client, ConquerCallback Callback) { Client.Screen.Cleanup(); try { EntityManager.AcquireLock(); int Distance = -1; GameClient[] Clients = EntityManager.Clients; foreach (GameClient Other in Clients) { if (Other == null) continue; if (Other.UID == Client.UID) continue; if (Other.Entity.Location.MapID != Client.Entity.Location.MapID) continue; Distance = ConquerMath.CalculateDistance(Other.Entity.Location, Client.Entity.Location); if (Distance <= ScreenView) { if (Client.Screen.Add(Other.Entity)) { if (Callback != null) { Callback(Client.Entity, Other.Entity); } } } } NonPlayerCharacter[] NPCs = EntityManager.GetNonPlayingCharacters(Client.Entity.Location.MapID); if (NPCs != null) { foreach (NonPlayerCharacter npc in NPCs) { if (npc.Location.MapID != Client.Entity.Location.MapID) continue; Distance = ConquerMath.CalculateDistance(npc.Location, Client.Entity.Location); if (Distance <= ScreenView) { if (Client.Screen.Add(npc)) { NpcSpawn Spawn = npc.GetSpawnPacket(); Client.Send(&Spawn, Spawn.Size); } } } } } finally { EntityManager.ReleaseLock(); } }
public static void GetScreen(GameClient Client, ConquerCallback Callback) { Client.Screen.Cleanup(); try { EntityManager.AcquireLock(); int Distance = -1; GameClient[] Clients = EntityManager.Clients; foreach (GameClient Other in Clients) { if (Other == null) { continue; } if (Other.UID == Client.UID) { continue; } if (Other.Entity.Location.MapID != Client.Entity.Location.MapID) { continue; } Distance = ConquerMath.CalculateDistance(Other.Entity.Location, Client.Entity.Location); if (Distance <= ScreenView) { if (Client.Screen.Add(Other.Entity)) { if (Callback != null) { Callback(Client.Entity, Other.Entity); } } } } NonPlayerCharacter[] NPCs = EntityManager.GetNonPlayingCharacters(Client.Entity.Location.MapID); if (NPCs != null) { foreach (NonPlayerCharacter npc in NPCs) { if (npc.Location.MapID != Client.Entity.Location.MapID) { continue; } Distance = ConquerMath.CalculateDistance(npc.Location, Client.Entity.Location); if (Distance <= ScreenView) { if (Client.Screen.Add(npc)) { NpcSpawn Spawn = npc.GetSpawnPacket(); Client.Send(&Spawn, Spawn.Size); } } } } } finally { EntityManager.ReleaseLock(); } }