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); }
/// <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 }); } }
/// <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); }
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))); }