/// <summary> /// Invoked when <see cref="Player"/> moves to a new zone. /// </summary> public void OnZoneUpdate() { // maybe there is a more efficient lookup method @sub_1406FB130 - this works for all zones though WorldZoneEntry worldZoneEntry = player.Zone; MapZoneEntry zoneMap = null; do { if (worldZoneEntry == null) { break; } zoneMap = GameTableManager.Instance.MapZone.Entries.FirstOrDefault(m => m.WorldZoneId == worldZoneEntry.Id); if (zoneMap != null) { break; } worldZoneEntry = GameTableManager.Instance.WorldZone.GetEntry(worldZoneEntry.ParentZoneId); }while (worldZoneEntry != null); if (zoneMap == null) { MapZoneWorldJoinEntry mapZoneWorldJoin = GameTableManager.Instance.MapZoneWorldJoin.Entries.FirstOrDefault(m => m.WorldId == player.Map.Entry.Id); if (mapZoneWorldJoin != null) { zoneMap = GameTableManager.Instance.MapZone.GetEntry(mapZoneWorldJoin.MapZoneId); } } if (zoneMap == null) { currentZoneMap = 0; return; } if (zoneMap.Id == currentZoneMap) { return; } if (!zoneMaps.ContainsKey((ushort)zoneMap.Id)) { zoneMaps.Add((ushort)zoneMap.Id, new ZoneMap(zoneMap, player)); } currentZoneMap = (ushort)zoneMap.Id; }
private IEnumerable <uint> GetTextIds(WorldLocation2Entry entry) { WorldZoneEntry worldZone = GameTableManager.Instance.WorldZone.GetEntry(entry.WorldZoneId); if (worldZone != null && worldZone.LocalizedTextIdName != 0) { yield return(worldZone.LocalizedTextIdName); } WorldEntry world = GameTableManager.Instance.World.GetEntry(entry.WorldId); if (world != null && world.LocalizedTextIdName != 0) { yield return(world.LocalizedTextIdName); } }