Class Mod
A mod for Daggerfall Unity.
Namespace: DaggerfallWorkshop.Game.Utility.ModSupport
Assembly: Assembly-CSharp.dll
Syntax
[Serializable]
[fsObject(MemberSerialization = fsMemberSerialization.OptIn)]
public class Mod
Constructors
| Improve this Doc View SourceMod()
Declaration
public Mod()
Mod(String, String, AssetBundle)
Makes a mod from an assetbundle.
Declaration
public Mod(string name, string dirPath, AssetBundle ab)
Parameters
| Type | Name | Description |
|---|---|---|
| String | name | Mod filename without the extension. |
| String | dirPath | Path to mod file directory. |
| AssetBundle | ab | The assetbundle to associate to new mod instance. |
Properties
| Improve this Doc View SourceAssetBundle
If not null, this is the assetbundle where all the assets for this mod are stored. Assets should be retrieved with GetAsset<T>(String, Boolean) which benefits of a cache system.
Declaration
public AssetBundle AssetBundle { get; }
Property Value
| Type | Description |
|---|---|
| AssetBundle |
AssetNames
Cached list of all asset names (not the relative paths).
Declaration
public string[] AssetNames { get; }
Property Value
| Type | Description |
|---|---|
| String[] |
DirPath
The directory where the mod file is stored. This is equal or a sub-directory of ModDirectory.
Declaration
public string DirPath { get; }
Property Value
| Type | Description |
|---|---|
| String |
Enabled
If this mod is enabled from the mods window, it will be loaded by the Mod Manager and methods marked with the Invoke attribute will be called at the specified state.
Declaration
[SerializeField]
public bool Enabled { get; set; }
Property Value
| Type | Description |
|---|---|
| Boolean |
FileName
The name of the mod file on disk without extension.
Declaration
[SerializeField]
public string FileName { get; }
Property Value
| Type | Description |
|---|---|
| String |
Remarks
While GUID can be used behind the scenes, a short, unique and readable name for the mod is needed when it surface to users or other mod developers (for example for presets and dependencies). Filename is the best candidate because it can't contain invalid path chars. A good name should be lowercase and without spaces (i.e "example-mod"). A new "Name" property may be created to allow filename to be changed.
GUID
An unique identifier for this mod or "invalid" if not defined.
Declaration
public string GUID { get; }
Property Value
| Type | Description |
|---|---|
| String |
HasSettings
If this mod has settings, they can be retrieved with GetSettings().
Declaration
public bool HasSettings { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
IsReady
A value indicating whether this mod is ready; It should be set by the mod itself after initialization.
Declaration
public bool IsReady { get; set; }
Property Value
| Type | Description |
|---|---|
| Boolean |
LoadPriority
The position in the load order, which affects the invocation order and the automatic asset loading by the Asset-Injection framework.
Declaration
[SerializeField]
public int LoadPriority { get; }
Property Value
| Type | Description |
|---|---|
| Int32 |
LoadSettingsCallback
If not null, this callback is invoked when settings are changed or when raised with LoadSettings().
Declaration
public Action<ModSettings, ModSettingsChange> LoadSettingsCallback { set; }
Property Value
| Type | Description |
|---|---|
| Action<ModSettings, ModSettingsChange> |
MessageReceiver
An optional callback that allows to efficiently send messages to this mod without using reflections.
Declaration
public DFModMessageReceiver MessageReceiver { get; set; }
Property Value
| Type | Description |
|---|---|
| DFModMessageReceiver |
ModInfo
Mod informations defined from the mod builder.
Declaration
public ModInfo ModInfo { get; }
Property Value
| Type | Description |
|---|---|
| ModInfo |
PersistentDataDirectory
A directory for persistent mod data. It is ensured that the directory is writable but not that exists. Use CreateDirectory(String) before accessing it.
Declaration
public string PersistentDataDirectory { get; }
Property Value
| Type | Description |
|---|---|
| String |
SaveDataInterface
An optional implementation of the interface that allows mods to take part of load/save process and store custom data associated to a specific save on disk.
Declaration
public IHasModSaveData SaveDataInterface { set; }
Property Value
| Type | Description |
|---|---|
| IHasModSaveData |
TemporaryCacheDirectory
A directory for temporary mod cache. It is ensured that the directory is writable but not that exists. Use CreateDirectory(String) before accessing it.
Declaration
public string TemporaryCacheDirectory { get; }
Property Value
| Type | Description |
|---|---|
| String |
Title
The readable title of the mod, which may contain invalid path characters.
Declaration
[SerializeField]
public string Title { get; }
Property Value
| Type | Description |
|---|---|
| String |
Methods
| Improve this Doc View SourceCompileSourceToAssemblies()
Compiles all source files to assembly
Declaration
public List<Assembly> CompileSourceToAssemblies()
Returns
| Type | Description |
|---|---|
| List<Assembly> |
FindAssetNames(ref List<String>, String, String)
Seeks assets inside a directory provided by this mod. An asset is accepted if its directory ends with the given subdirectory. For example "Assets/Textures" matches "Water.png" from "Assets/Game/Mods/Example/Assets/Textures/Water.png".
Declaration
public int FindAssetNames(ref List<string> names, string relativeDirectory, string extension = null)
Parameters
| Type | Name | Description |
|---|---|---|
| List<String> | names | Null or a buffer of names. Will be filled with matches with the extension but without the directory. |
| String | relativeDirectory | A relative directory with forward slashes (i.e. "Assets/Textures"). |
| String | extension | An extension including the dots (i.e ".json") or null. |
Returns
| Type | Description |
|---|---|
| Int32 | The number of assets found. |
FindModLoaders(StateManager.StateTypes)
Returns a list of any valid mod setup functions.
Declaration
public List<SetupOptions> FindModLoaders(StateManager.StateTypes state)
Parameters
| Type | Name | Description |
|---|---|---|
| StateManager.StateTypes | state |
Returns
| Type | Description |
|---|---|
| List<SetupOptions> |
GetAsset<T>(String, Boolean)
Loads an asset from the assetbundle of this mod and cache it. If required, the assetbundle will be automatically loaded.
Declaration
public T GetAsset<T>(string assetName, bool clone = false)
where T : Object
Parameters
| Type | Name | Description |
|---|---|---|
| String | assetName | The name of the asset with or without extension. |
| Boolean | clone | Instantiate a cloned instance if true. |
Returns
| Type | Description |
|---|---|
| T | A reference to the loaded asset or a cloned instance. |
Type Parameters
| Name | Description |
|---|---|
| T | The asset type. |
GetAsset<T>(String, out Boolean, Boolean)
Loads an asset from the assetbundle of this mod and cache it. If required, the assetbundle will be automatically loaded.
Declaration
public T GetAsset<T>(string assetName, out bool loadedBundle, bool clone = false)
where T : Object
Parameters
| Type | Name | Description |
|---|---|---|
| String | assetName | |
| Boolean | loadedBundle | True if assetbundle had to be loaded. |
| Boolean | clone | Instantiate a cloned instance if true. |
Returns
| Type | Description |
|---|---|
| T | A reference to the loaded asset or a cloned instance. |
Type Parameters
| Name | Description |
|---|---|
| T | The asset type. |
GetCompiledType(String)
Return Type from Assemblies using name of type
Declaration
public Type GetCompiledType(string type)
Parameters
| Type | Name | Description |
|---|---|---|
| String | type | name of Type |
Returns
| Type | Description |
|---|---|
| Type | System.Type |
GetSettings()
Imports settings for this mod and provides a sanitized read-only access. Use LoadSettings() if you want to support live changes.
Declaration
public ModSettings GetSettings()
Returns
| Type | Description |
|---|---|
| ModSettings |
HasAsset(String)
Checks if this mod contains an asset with the given name.
Declaration
public bool HasAsset(string assetName)
Parameters
| Type | Name | Description |
|---|---|---|
| String | assetName | The name of the asset. |
Returns
| Type | Description |
|---|---|
| Boolean | True if asset is provided by this mod. |
IsAssetLoaded(String)
Checks if an asset has already been loaded and can be retrieved without loading it again.
Declaration
public bool IsAssetLoaded(string assetName)
Parameters
| Type | Name | Description |
|---|---|---|
| String | assetName | The name of the asset. |
Returns
| Type | Description |
|---|---|
| Boolean | True if the asset is already loaded. |
LoadAllAssetsFromBundle(Boolean)
Loads all assets from asset bundle immediately. Invidual assets can then be retrieved with GetAsset<T>(String, Boolean). Assets are permanently cached until requested once; then they benefit of memory management.
Declaration
public bool LoadAllAssetsFromBundle(bool unloadBundle = true)
Parameters
| Type | Name | Description |
|---|---|---|
| Boolean | unloadBundle | Unload asset bundle if true |
Returns
| Type | Description |
|---|---|
| Boolean | True if assetbundle has been loaded succesfully. |
LoadAllAssetsFromBundleAsync(Boolean)
Load all assets from asset bundle asynchronously. Invidual assets can then be retrieved with GetAsset<T>(String, Boolean). Assets are permanently cached until requested once; then they benefit of memory management.
Declaration
public IEnumerator LoadAllAssetsFromBundleAsync(bool unloadBundle = true)
Parameters
| Type | Name | Description |
|---|---|---|
| Boolean | unloadBundle | Unload asset bundle if true. |
Returns
| Type | Description |
|---|---|
| IEnumerator |
LoadAssetBundle()
Loads the asset bundle associated to this mod.
Declaration
public AssetBundle LoadAssetBundle()
Returns
| Type | Description |
|---|---|
| AssetBundle | The loaded asset bundle or null. |
LoadAssetBundleAsync()
Loads the asset bundle associated to this mod asynchronously.
Declaration
public IEnumerator LoadAssetBundleAsync()
Returns
| Type | Description |
|---|---|
| IEnumerator |
LoadSettings()
Loads mod settings using LoadSettingsCallback with an event where all settings are considered changed. Use GetSettings() if you don't want to support live changes.
Declaration
public void LoadSettings()
Localize(String)
Gets a localized string from the text table associated with this mod.
Declaration
public string Localize(string key)
Parameters
| Type | Name | Description |
|---|---|---|
| String | key | Key used in the text table. |
Returns
| Type | Description |
|---|---|
| String | Localized string. |
Localize(String[])
Gets a localized string from the text table associated with this mod.
Declaration
public string Localize(params string[] keyParts)
Parameters
| Type | Name | Description |
|---|---|---|
| String[] | keyParts | Key used in the text table as a concatenation of names. |
Returns
| Type | Description |
|---|---|
| String | Localized string. |
UnloadAssetBundle(Boolean)
Unloads the asset bundle associated to this mod. Loaded assets can still be retrieved from cache, unless they are also unloaded.
Declaration
public void UnloadAssetBundle(bool unloadAllObjects)
Parameters
| Type | Name | Description |
|---|---|---|
| Boolean | unloadAllObjects | Remove all loaded assets from memory. |