Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
0
        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);
            }
        }