Exemplo n.º 1
0
        public static void Register(int spellID, Type type)
        {
            if (!Types.InBounds(spellID))
            {
                return;
            }

            var old = Types[spellID];

            if (old != null)
            {
                TypeIDs.Remove(old);
                TypeInfos.Remove(old);
            }

            Types[spellID] = type;

            //Console.WriteLine("Register: ID '{0}', replace '{1}' with '{2}'", spellID, old, type);

            if (type == null)
            {
                return;
            }

            TypeIDs.AddOrReplace(type, spellID);

            Spell s = type.CreateInstanceSafe <Spell>((Mobile)null, (Item)null);

            if (s != null && s.Info != null)
            {
                TypeInfos.AddOrReplace(type, s.Info);

                //Console.WriteLine("Register: Info resolved for '{0}'", s.Name);
            }
        }
 public ItemFilter(IEnumerable <string> typeIDs) : this()
 {
     if (typeIDs != null)
     {
         TypeIDs.AddRange(typeIDs);
     }
 }
Exemplo n.º 3
0
        public static int GetRegistryNumber(Type type)
        {
            int spellID;

            if (type == null || !TypeIDs.TryGetValue(type, out spellID))
            {
                spellID = -1;
            }

            return(spellID);
        }
Exemplo n.º 4
0
        public override string ToString()
        {
            // For example:
            // | Type ID  |   0     |0    1    2
            // | Table ID |         |0    1    2
            // +----------+---------+---------------------------------------

            var sb = new StringBuilder();

            string slotSpan = (SlotSpan == 1)
                                ? StartSlot.ToString() :
                              string.Format("{0}-{1}", StartSlot, StartSlot + SlotSpan - 1);

            sb.AppendLine(string.Format("// | Type ID  |   {0,-5} |{1}", slotSpan,
                                        string.Join(" ", TypeIDs.Select(x => string.Format("{0,-4}", x)))));
            sb.AppendLine(string.Format("// | Table ID |         |{0}",
                                        string.Join(" ", TableIDs.Select(x => string.Format("{0,-4}", x)))));
            sb.AppendLine("// +----------+---------+---------------------------------------");
            return(sb.ToString());
        }
Exemplo n.º 5
0
        /// <summary>
        /// Returns a Stream instance with data from the specified item.
        /// </summary>
        /// <param name="ID">ID of the item to grab.</param>
        /// <param name="TypeID">TypeID of the the item to grab.</param>
        /// <returns>An object that can be casted to the instance corresponding to the TypeID.</returns>
        private static object GrabItem(uint ID, TypeIDs TypeID)
        {
            Stream Data;

            m_StillLoading.WaitOne();

            foreach (DBPFArchive Archive in m_DBPFArchives)
            {
                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.Custom)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.Custom);
                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                    {
                        if (IsUTK(Data))
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new UTKFile2(Data)));
                        else
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new XAFile(Data)));
                    }

                    return m_Assets[UniqueID.UniqueID].AssetData;
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.CustomTrks)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.CustomTrks);

                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                        AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new TRK(Data)));

                    return Archive.GrabEntry(UniqueID);
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.EP2)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.EP2);
                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                    {
                        if (IsUTK(Data))
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new UTKFile2(Data)));
                        else
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new XAFile(Data)));
                    }

                    return Archive.GrabEntry(UniqueID);
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.EP5Samps)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.EP5Samps);
                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                    {
                        if (IsUTK(Data))
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new UTKFile2(Data)));
                        else
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new XAFile(Data)));
                    }

                    return m_Assets[UniqueID.UniqueID].AssetData;
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.HitLists)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.HitLists);

                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                        AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new HLS(Data)));

                    return m_Assets[UniqueID.UniqueID].AssetData;
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.HitListsTemp)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.HitListsTemp);

                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                        AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new HLS(Data)));

                    return m_Assets[UniqueID.UniqueID].AssetData;
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.Multiplayer)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.Multiplayer);
                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                    {
                        if (IsUTK(Data))
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new UTKFile2(Data)));
                        else
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new XAFile(Data)));
                    }

                    return m_Assets[UniqueID.UniqueID].AssetData;
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.Samples)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.Samples);
                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                    {
                        if (IsUTK(Data))
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new UTKFile2(Data)));
                        else
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new XAFile(Data)));
                    }

                    return m_Assets[UniqueID.UniqueID].AssetData;
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.TrackDefs)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.TrackDefs);
                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                        AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new TRK(Data)));

                    return m_Assets[UniqueID.UniqueID].AssetData;
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.Tracks)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.Tracks);
                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                        AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new TRK(Data)));

                    return m_Assets[UniqueID.UniqueID].AssetData;
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.tsov2)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.tsov2);
                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                    {
                        if (IsUTK(Data))
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new UTKFile2(Data)));
                        else
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new XAFile(Data)));
                    }

                    return m_Assets[UniqueID.UniqueID].AssetData;
                }

                if (Archive.ContainsEntry(new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.Stings)))
                {
                    UniqueFileID UniqueID = new UniqueFileID((uint)TypeID, ID, (uint)GroupIDs.Stings);
                    Data = Archive.GrabEntry(UniqueID);

                    if (!m_Assets.ContainsKey(UniqueID.UniqueID))
                    {
                        if (IsUTK(Data))
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new UTKFile2(Data)));
                        else
                            AddItem(UniqueID.UniqueID, new Asset(UniqueID.UniqueID, (uint)Data.Length, new XAFile(Data)));
                    }

                    return m_Assets[UniqueID.UniqueID].AssetData;
                }
            }

            return null;
        }
 public void Validate()
 {
     TypeIDs.ValidateRequired <string>("TypeIDs");
 }