コード例 #1
0
ファイル: Mod.cs プロジェクト: Unowndeveloper/tModLoader
        public int AddEquipTexture(EquipTexture equipTexture, ModItem item, EquipType type, string name, string texture,
                                   string armTexture = "", string femaleTexture = "")
        {
            int slot = EquipLoader.ReserveEquipID(type);

            equipTexture.Texture = texture;
            equipTexture.mod     = this;
            equipTexture.Name    = name;
            equipTexture.Type    = type;
            equipTexture.Slot    = slot;
            equipTexture.item    = item;
            EquipLoader.equipTextures[type][slot] = equipTexture;
            ModLoader.GetTexture(texture);
            if (type == EquipType.Body)
            {
                EquipLoader.armTextures[slot]    = armTexture;
                EquipLoader.femaleTextures[slot] = femaleTexture.Length > 0 ? femaleTexture : texture;
                ModLoader.GetTexture(armTexture);
                ModLoader.GetTexture(femaleTexture);
            }
            if (item != null && (type == EquipType.Head || type == EquipType.Body || type == EquipType.Legs))
            {
                EquipLoader.slotToId[type][slot] = item.item.type;
            }
            return(slot);
        }
コード例 #2
0
        private void AutoloadItem(Type type)
        {
            ModItem item = (ModItem)Activator.CreateInstance(type);

            item.mod = this;
            string            name    = type.Name;
            string            texture = (type.Namespace + "." + type.Name).Replace('.', '/');
            IList <EquipType> equips  = new List <EquipType>();

            if (item.Autoload(ref name, ref texture, equips))
            {
                AddItem(name, item, texture);
                if (equips.Count > 0)
                {
                    EquipLoader.idToSlot[item.item.type] = new Dictionary <EquipType, int>();
                    foreach (EquipType equip in equips)
                    {
                        string equipTexture  = texture + "_" + equip.ToString();
                        string armTexture    = texture + "_Arms";
                        string femaleTexture = texture + "_FemaleBody";
                        item.AutoloadEquip(equip, ref equipTexture, ref armTexture, ref femaleTexture);
                        int slot = AddEquipTexture(item, equip, equipTexture, armTexture, femaleTexture);
                        EquipLoader.idToSlot[item.item.type][equip] = slot;
                    }
                }
            }
        }
コード例 #3
0
ファイル: ModItem.cs プロジェクト: akemimadoka/tModLoader
        //change Terraria.Item.Clone
        //  Item newItem = (Item)base.MemberwiseClone();
        //  if (newItem.type >= ItemID.Count)
        //  {
        //      ItemLoader.GetItem(newItem.type).SetupModItem(newItem);
        //  }
        //  return newItem;
        internal void SetupModItem(Item item)
        {
            ModItem newItem = Clone(item);

            newItem.item = item;
            item.modItem = newItem;
            newItem.mod  = mod;
        }
コード例 #4
0
ファイル: ModItem.cs プロジェクト: Unowndeveloper/tModLoader
        //change Terraria.Item.Clone
        //  Item newItem = (Item)base.MemberwiseClone();
        //  if (newItem.type >= ItemID.Count)
        //  {
        //      ItemLoader.GetItem(newItem.type).SetupModItem(newItem);
        //  }
        //  return newItem;
        internal void SetupModItem(Item item)
        {
            ModItem newItem = (ModItem)Activator.CreateInstance(GetType());

            newItem.item = item;
            item.modItem = newItem;
            newItem.mod  = mod;
        }
コード例 #5
0
ファイル: Mod.cs プロジェクト: MESSpace/tModLoader
 public void AddItem(string name, ModItem item, string texture)
 {
     int id = ItemLoader.ReserveItemID();
     item.item.name = name;
     item.item.ResetStats(id);
     items[name] = item;
     ItemLoader.items[id] = item;
     item.texture = texture;
     item.mod = this;
 }
コード例 #6
0
        public int ItemType(string name)
        {
            ModItem item = GetItem(name);

            if (item == null)
            {
                return(0);
            }
            return(item.item.type);
        }
コード例 #7
0
        public void AddItem(string name, ModItem item, string texture)
        {
            int id = ItemLoader.ReserveItemID();

            item.item.name = name;
            item.item.ResetStats(id);
            items[name]          = item;
            ItemLoader.items[id] = item;
            item.texture         = texture;
            item.mod             = this;
        }
コード例 #8
0
        internal void SetupClone(Item clone)
        {
            ModItem newItem = Clone();

            newItem.item         = clone;
            newItem.mod          = mod;
            newItem.texture      = texture;
            newItem.flameTexture = flameTexture;
            newItem.projOnSwing  = projOnSwing;
            newItem.bossBagNPC   = bossBagNPC;
            clone.modItem        = newItem;
        }
コード例 #9
0
ファイル: ModItem.cs プロジェクト: akemimadoka/tModLoader
        internal void SetupClone(Item clone)
        {
            ModItem newItem = CloneNewInstances ? Clone(clone) : (ModItem)Activator.CreateInstance(GetType());

            newItem.item         = clone;
            newItem.mod          = mod;
            newItem.texture      = texture;
            newItem.flameTexture = flameTexture;
            newItem.projOnSwing  = projOnSwing;
            newItem.bossBagNPC   = bossBagNPC;
            clone.modItem        = newItem;
        }
コード例 #10
0
ファイル: ItemLoader.cs プロジェクト: saeym/tModLoader
        internal static void AnglerChat(bool turningInFish, bool anglerQuestFinished, int type, ref string chat, ref string catchLocation)
        {
            ModItem modItem = GetItem(type);

            if (modItem != null && !Main.anglerQuestFinished && !turningInFish)
            {
                modItem.AnglerQuestChat(ref chat, ref catchLocation);
            }
            foreach (GlobalItem globalItem in globalItems)
            {
                globalItem.AnglerChat(turningInFish, anglerQuestFinished, type, ref chat, ref catchLocation);
            }
        }
コード例 #11
0
ファイル: ItemLoader.cs プロジェクト: saeym/tModLoader
        internal static void SetMatch(int type, ref int equipSlot, ref bool robes)
        {
            ModItem modItem = GetItem(type);

            if (modItem != null)
            {
                modItem.SetMatch(ref equipSlot, ref robes);
            }
            foreach (GlobalItem globalItem in globalItems)
            {
                globalItem.SetMatch(type, ref equipSlot, ref robes);
            }
        }
コード例 #12
0
ファイル: ItemLoader.cs プロジェクト: saeym/tModLoader
        internal static void IsAnglerQuestAvailable(int itemID, ref bool notAvailable)
        {
            ModItem modItem = GetItem(itemID);

            if (modItem != null)
            {
                notAvailable = !modItem.IsAnglerQuestAvailable();
            }
            foreach (GlobalItem globalItem in globalItems)
            {
                notAvailable = !globalItem.IsAnglerQuestAvailable(itemID);
            }
        }
コード例 #13
0
ファイル: ItemLoader.cs プロジェクト: saeym/tModLoader
        internal static void ExtractinatorUse(ref int resultType, ref int resultStack, int extractType)
        {
            ModItem modItem = GetItem(extractType);

            if (modItem != null)
            {
                modItem.ExtractinatorUse(ref resultType, ref resultStack);
            }
            foreach (GlobalItem globalItem in globalItems)
            {
                globalItem.ExtractinatorUse(extractType, ref resultType, ref resultStack);
            }
        }
コード例 #14
0
        public void AddItem(string name, ModItem item, string texture)
        {
            int id = ItemLoader.ReserveItemID();

            item.item.name = name;
            item.item.ResetStats(id);
            items[name]          = item;
            ItemLoader.items[id] = item;
            item.texture         = texture;
            item.mod             = this;
            if (item.IsQuestFish())
            {
                ItemLoader.questFish.Add(id);
            }
        }
コード例 #15
0
        /// <summary>
        /// Adds an equipment texture of the specified type, internal name, and associated item to your mod.
        /// This method is different from the other AddEquipTexture in that you can specify the class of the equipment texture, thus allowing you to override EquipmentTexture's hooks.
        /// All other parameters are the same as the other AddEquipTexture.
        /// </summary>
        /// <param name="equipTexture">The equip texture.</param>
        /// <param name="item">The item.</param>
        /// <param name="type">The type.</param>
        /// <param name="name">The name.</param>
        /// <param name="texture">The texture.</param>
        /// <param name="armTexture">The arm texture (for body slots).</param>
        /// <param name="femaleTexture">The female texture (for body slots), if missing the regular body texture is used.</param>
        /// <returns></returns>
        public int AddEquipTexture(EquipTexture equipTexture, ModItem item, EquipType type, string texture)
        {
            if (!loading)
            {
                throw new Exception("AddEquipTexture can only be called from Mod.Load or Mod.Autoload");
            }

            ModContent.GetTexture(texture);             //ensure texture exists

            equipTexture.Texture = texture;
            equipTexture.Mod     = this;
            equipTexture.Name    = item.Name;
            equipTexture.Type    = type;
            equipTexture.Item    = item;
            int slot = equipTexture.Slot = EquipLoader.ReserveEquipID(type);

            EquipLoader.equipTextures[type][slot]        = equipTexture;
            equipTextures[Tuple.Create(item.Name, type)] = equipTexture;

            if (type == EquipType.Body)
            {
                if (!ModContent.TextureExists(item.FemaleTexture))
                {
                    EquipLoader.femaleTextures[slot] = texture;
                }
                else
                {
                    EquipLoader.femaleTextures[slot] = item.FemaleTexture;
                }
                ModContent.GetTexture(item.ArmTexture);                 //ensure texture exists
                EquipLoader.armTextures[slot] = item.ArmTexture;
            }

            if (!EquipLoader.idToSlot.TryGetValue(item.Type, out IDictionary <EquipType, int> slots))
            {
                EquipLoader.idToSlot[item.Type] = slots = new Dictionary <EquipType, int>();
            }

            slots[type] = slot;
            if (type == EquipType.Head || type == EquipType.Body || type == EquipType.Legs)
            {
                EquipLoader.slotToId[type][slot] = item.Type;
            }

            return(slot);
        }
コード例 #16
0
ファイル: ModItem.cs プロジェクト: Unowndeveloper/tModLoader
        internal void SetupClone(Item clone)
        {
            ModItem newItem = Clone();

            newItem.item         = clone;
            newItem.mod          = mod;
            newItem.texture      = texture;
            newItem.flameTexture = flameTexture;
            newItem.projOnSwing  = projOnSwing;
            newItem.bossBagNPC   = bossBagNPC;
            clone.modItem        = newItem;
            clone.itemInfo.Clear();
            foreach (ItemInfo info in item.itemInfo)
            {
                clone.itemInfo.Add(info.Clone());
            }
        }
コード例 #17
0
        public int AddEquipTexture(ModItem item, EquipType type, string texture, string armTexture = "", string femaleTexture = "")
        {
            int slot = EquipLoader.ReserveEquipID(type);

            EquipLoader.equips[type][texture] = slot;
            ModLoader.GetTexture(texture);
            if (type == EquipType.Body)
            {
                EquipLoader.armTextures[slot]    = armTexture;
                EquipLoader.femaleTextures[slot] = femaleTexture.Length > 0 ? femaleTexture : texture;
                ModLoader.GetTexture(armTexture);
                ModLoader.GetTexture(femaleTexture);
            }
            if (type == EquipType.Head || type == EquipType.Body || type == EquipType.Legs)
            {
                EquipLoader.slotToId[type][slot] = item.item.type;
            }
            return(slot);
        }
コード例 #18
0
ファイル: Mod.cs プロジェクト: Unowndeveloper/tModLoader
        public void AddItem(string name, ModItem item, string texture)
        {
            Type type = item.GetType();

            if (type.GetMethod("UpdateAccessory", new Type[] { typeof(Player) }) != null)
            {
                throw new Exception("Item " + name + " uses an old UpdateAccessory hook");
            }
            int id = ItemLoader.ReserveItemID();

            item.item.name = name;
            item.item.ResetStats(id);
            items[name]          = item;
            ItemLoader.items[id] = item;
            item.texture         = texture;
            item.mod             = this;
            if (item.IsQuestFish())
            {
                ItemLoader.questFish.Add(id);
            }
        }
コード例 #19
0
ファイル: ModInternals.cs プロジェクト: re4prr/tModLoader
        private void AutoloadItem(Type type)
        {
            ModItem item = (ModItem)Activator.CreateInstance(type);

            item.mod = this;
            string name = type.Name;

            if (item.Autoload(ref name))
            {
                AddItem(name, item);
                var autoloadEquip = type.GetAttribute <AutoloadEquip>();
                if (autoloadEquip != null)
                {
                    foreach (var equip in autoloadEquip.equipTypes)
                    {
                        AddEquipTexture(item, equip, item.Name, item.Texture + '_' + equip,
                                        item.Texture + "_Arms", item.Texture + "_FemaleBody");
                    }
                }
            }
        }
コード例 #20
0
ファイル: ItemLoader.cs プロジェクト: saeym/tModLoader
        internal static void HoldoutOffset(float gravDir, int type, ref Vector2 offset)
        {
            ModItem modItem = GetItem(type);

            if (modItem != null)
            {
                Vector2?modOffset = modItem.HoldoutOffset();
                if (modOffset.HasValue)
                {
                    offset.X  = modOffset.Value.X;
                    offset.Y += gravDir * modOffset.Value.Y;
                }
            }
            foreach (GlobalItem globalItem in globalItems)
            {
                Vector2?modOffset = globalItem.HoldoutOffset(type);
                if (modOffset.HasValue)
                {
                    offset.X = modOffset.Value.X;
                    offset.Y = Main.itemTexture[type].Height / 2f + gravDir * modOffset.Value.Y;
                }
            }
        }
コード例 #21
0
ファイル: Mod.cs プロジェクト: DrakoGlyph/tModLoader
		public void AddItem(string name, ModItem item, string texture)
		{
			Type type = item.GetType();
			if (type.GetMethod("UpdateAccessory", new Type[] { typeof(Player) }) != null)
			{
				throw new Exception("Item " + name + " uses an old UpdateAccessory hook");
			}
			int id = ItemLoader.ReserveItemID();
			item.item.name = name;
			item.item.ResetStats(id);
			items[name] = item;
			ItemLoader.items[id] = item;
			item.texture = texture;
			item.mod = this;
			if (item.IsQuestFish())
			{
				ItemLoader.questFish.Add(id);
			}
		}
コード例 #22
0
ファイル: Mod.cs プロジェクト: Unowndeveloper/tModLoader
 public int AddEquipTexture(ModItem item, EquipType type, string name, string texture,
                            string armTexture = "", string femaleTexture = "")
 {
     return(AddEquipTexture(new EquipTexture(), item, type, name, texture, armTexture, femaleTexture));
 }
コード例 #23
0
 /// <summary>
 /// Adds an ingredient to this recipe of the given type of item and stack size.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="stack">The stack.</param>
 public ModRecipe AddIngredient(ModItem item, int stack = 1) => AddIngredient(item.item.type, stack);
コード例 #24
0
 /// <summary>
 /// Adds an equipment texture of the specified type, internal name, and associated item to your mod.
 /// (The item parameter may be null if you don't want to associate an item with the texture.)
 /// You can then get the ID for your texture by calling EquipLoader.GetEquipTexture, and using the EquipTexture's Slot property.
 /// If the EquipType is EquipType.Body, make sure that you also provide an armTexture and a femaleTexture.
 /// Returns the ID / slot that is assigned to the equipment texture.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="type">The type.</param>
 /// <param name="name">The name.</param>
 /// <param name="texture">The texture.</param>
 /// <param name="armTexture">The arm texture (for body slots).</param>
 /// <param name="femaleTexture">The female texture (for body slots), if missing the regular body texture is used.</param>
 /// <returns></returns>
 public int AddEquipTexture(ModItem item, EquipType type, string texture)
 {
     return(AddEquipTexture(new EquipTexture(), item, type, texture));
 }
コード例 #25
0
ファイル: ModRecipe.cs プロジェクト: DrakoGlyph/tModLoader
		public void AddIngredient(ModItem item, int stack = 1)
		{
			this.AddIngredient(item.item.type, stack);
		}
コード例 #26
0
ファイル: Mod.cs プロジェクト: DrakoGlyph/tModLoader
		public int AddEquipTexture(EquipTexture equipTexture, ModItem item, EquipType type, string name, string texture,
			string armTexture = "", string femaleTexture = "")
		{
			int slot = EquipLoader.ReserveEquipID(type);
			equipTexture.Texture = texture;
			equipTexture.mod = this;
			equipTexture.Name = name;
			equipTexture.Type = type;
			equipTexture.Slot = slot;
			equipTexture.item = item;
			EquipLoader.equipTextures[type][slot] = equipTexture;
			ModLoader.GetTexture(texture);
			if (type == EquipType.Body)
			{
				EquipLoader.armTextures[slot] = armTexture;
				EquipLoader.femaleTextures[slot] = femaleTexture.Length > 0 ? femaleTexture : texture;
				ModLoader.GetTexture(armTexture);
				ModLoader.GetTexture(femaleTexture);
			}
			if (item != null && (type == EquipType.Head || type == EquipType.Body || type == EquipType.Legs))
			{
				EquipLoader.slotToId[type][slot] = item.item.type;
			}
			return slot;
		}
コード例 #27
0
 /// <summary>
 /// Sets the result of this recipe to the given type of item and stack size. Useful in ModItem.AddRecipes.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="stack">The stack.</param>
 public ModRecipe SetResult(ModItem item, int stack = 1)
 {
     this.SetResult(item.item.type, stack);
     return(this);
 }
コード例 #28
0
 /// <summary>
 /// Sets the result of this recipe to the given type of item and stack size. Useful in ModItem.AddRecipes.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="stack">The stack.</param>
 public ModRecipe SetResult(ModItem item, int stack = 1) => SetResult(item.item.type, stack);
コード例 #29
0
ファイル: Mod.cs プロジェクト: JavidPack/TerraCustom
		public void AddItem(string name, ModItem item, string texture)
		{
			Type colorClass = typeof(Microsoft.Xna.Framework.Color);
			Type floatClass = typeof(float);
			Type floatRefClass = floatClass.MakeByRefType();
			if (item.GetType().GetMethod("PreDrawInWorld", new Type[] {
				typeof(SpriteBatch), colorClass, colorClass, floatRefClass, floatRefClass,
				}) != null)
			{
				throw new OldHookException("ModItem.PreDrawInWorld");
			}
			if (item.GetType().GetMethod("PostDrawInWorld", new Type[] {
				typeof(SpriteBatch), colorClass, colorClass, floatClass, floatClass
				}) != null)
			{
				throw new OldHookException("ModItem.PostDrawInWorld");
			}
			int id = ItemLoader.ReserveItemID();
			item.item.name = name;
			item.item.ResetStats(id);
			item.item.modItem = item;
			items[name] = item;
			ItemLoader.items.Add(item);
			item.texture = texture;
			item.mod = this;
			if (item.IsQuestFish())
			{
				ItemLoader.questFish.Add(id);
			}
		}
コード例 #30
0
ファイル: ModRecipe.cs プロジェクト: raydeejay/tModLoader
 /// <summary>
 /// Adds an ingredient to this recipe of the given type of item and stack size.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="stack">The stack.</param>
 public void AddIngredient(ModItem item, int stack = 1)
 {
     this.AddIngredient(item.item.type, stack);
 }
コード例 #31
0
ファイル: Mod.cs プロジェクト: trekko727/tModLoader
 public void AddFlameTexture(ModItem item, string texture)
 {
     ModLoader.GetTexture(texture);
     item.flameTexture = texture;
 }
コード例 #32
0
ファイル: Mod.cs プロジェクト: Unowndeveloper/tModLoader
 public void AddFlameTexture(ModItem item, string texture)
 {
     ModLoader.GetTexture(texture);
     item.flameTexture = texture;
 }
コード例 #33
0
 /// <summary>
 /// Adds an ingredient to this recipe of the given type of item and stack size.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="stack">The stack.</param>
 public ModRecipe AddIngredient(ModItem item, int stack = 1)
 {
     this.AddIngredient(item.item.type, stack);
     return(this);
 }
コード例 #34
0
ファイル: ModRecipe.cs プロジェクト: DrakoGlyph/tModLoader
		public void SetResult(ModItem item, int stack = 1)
		{
			this.SetResult(item.item.type, stack);
		}
コード例 #35
0
ファイル: Mod.cs プロジェクト: popovn/tModLoader
 public int AddEquipTexture(ModItem item, EquipType type, string texture, string armTexture = "", string femaleTexture = "")
 {
     int slot = EquipLoader.ReserveEquipID(type);
     EquipLoader.equips[type][texture] = slot;
     ModLoader.GetTexture(texture);
     if (type == EquipType.Body)
     {
         EquipLoader.armTextures[slot] = armTexture;
         EquipLoader.femaleTextures[slot] = femaleTexture.Length > 0 ? femaleTexture : texture;
         ModLoader.GetTexture(armTexture);
         ModLoader.GetTexture(femaleTexture);
     }
     if (type == EquipType.Head || type == EquipType.Body || type == EquipType.Legs)
     {
         EquipLoader.slotToId[type][slot] = item.item.type;
     }
     return slot;
 }
コード例 #36
0
ファイル: Mod.cs プロジェクト: DrakoGlyph/tModLoader
		public int AddEquipTexture(ModItem item, EquipType type, string name, string texture,
			string armTexture = "", string femaleTexture = "")
		{
			return AddEquipTexture(new EquipTexture(), item, type, name, texture, armTexture, femaleTexture);
		}
コード例 #37
0
ファイル: ModRecipe.cs プロジェクト: raydeejay/tModLoader
 /// <summary>
 /// Sets the result of this recipe to the given type of item and stack size. Useful in ModItem.AddRecipes.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="stack">The stack.</param>
 public void SetResult(ModItem item, int stack = 1)
 {
     this.SetResult(item.item.type, stack);
 }
コード例 #38
0
 /// <summary>
 ///     Adds an ingredient to this recipe of the given type of item and stack size.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="stack">The stack.</param>
 public NewRecipeFinder AddIngredient(ModItem item, int stack = 0) => AddIngredient(item.Type, stack);