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); } }
public static int GetRegistryNumber(Type type) { int spellID; if (type == null || !TypeIDs.TryGetValue(type, out spellID)) { spellID = -1; } return(spellID); }
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()); }
/// <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"); }