private object LoadTexture(ContentManager contentManager, string assetName, ModXnb item)
        {
            var modItem = TextureRegistry.GetItem(item.Texture, item.OwningMod);
            var obj     = modItem?.Texture;

            if (obj == null)
            {
                return(null);
            }

            if (item.Destination != null)
            {
                //TODO, Error checking on this.
                //TODO, Multiple mods should be able to edit this
                var originalTexture = contentManager.LoadDirect <Texture2D>(assetName);

                string assetKey = $"{assetName}-\u2764-modified";
                if (_cachedAlteredTextures.ContainsKey(assetKey))
                {
                    obj = _cachedAlteredTextures[assetKey];
                }
                else
                {
                    var texture = TextureUtility.PatchTexture(originalTexture, obj, item.Source ?? new Rectangle(0, 0, obj.Width, obj.Height), item.Destination);
                    _cachedAlteredTextures[assetKey] = texture;
                    obj = texture;
                }
            }

            Log.Verbose($"Using own asset replacement: {assetName} = {item.OwningMod.Name}.{item.Texture}");
            return(obj);
        }
示例#2
0
        /// <summary>
        /// Register ModXnb with key
        /// </summary>
        /// <param name="itemId">Id of ModXnb to return</param>
        /// <param name="item">ModXnb to register</param>
        /// <param name="mod">Mod this ModXnb belongs to</param>
        public static void RegisterItem(string itemId, ModXnb item, ModManifest mod = null)
        {
            var xnb = RegistryInstance.GetItem(mod == null ? itemId : GetModSpecificId(mod, itemId));

            if (xnb != null)
            {
                xnb.Add(item);
            }
            else
            {
                RegistryInstance.RegisterItem(mod == null ? itemId : GetModSpecificId(mod, itemId), new List <ModXnb> {
                    item
                });
            }
        }
示例#3
0
 /// <summary>
 /// Register ModXnb with key
 /// </summary>
 /// <param name="itemId">Id of ModXnb to return</param>
 /// <param name="item">ModXnb to register</param>
 public static void RegisterItem(string itemId, ModXnb item)
 {
     RegistryInstance.RegisterItem(itemId, item);
 }
示例#4
0
 private StardewValley.LocalizedContentManager GetContentManagerForMod(ContentManager contentManager, ModXnb mod)
 {
     LoadModManagers(contentManager);
     return(_modManagers.FirstOrDefault(n => mod.OwningMod.ModDirectory.Contains(n.RootDirectory)));
 }
 private Microsoft.Xna.Framework.Content.ContentManager GetContentManagerForMod(ContentManager contentManager, ModXnb mod)
 {
     LoadModManagers(contentManager);
     return(_modManagers.FirstOrDefault(n => mod.OwningMod.ModDirectory.Contains(n.RootDirectory)));
 }