diff --git a/NewHorizons/Builder/Props/ProjectionBuilder.cs b/NewHorizons/Builder/Props/ProjectionBuilder.cs index 2827203d..7795f81c 100644 --- a/NewHorizons/Builder/Props/ProjectionBuilder.cs +++ b/NewHorizons/Builder/Props/ProjectionBuilder.cs @@ -110,6 +110,7 @@ namespace NewHorizons.Builder.Props // Now we replace the slides int slidesCount = info.slides.Length; var slideCollection = new SlideCollection(slidesCount); + slideCollection.streamingAssetIdentifier = string.Empty; // NREs if null // The base game ones only have 15 slides max var textures = new Texture2D[slidesCount >= 15 ? 15 : slidesCount]; @@ -177,7 +178,8 @@ namespace NewHorizons.Builder.Props // Now we replace the slides int slidesCount = info.slides.Length; var slideCollection = new SlideCollection(slidesCount); - + slideCollection.streamingAssetIdentifier = string.Empty; // NREs if null + var imageLoader = AddAsyncLoader(projectorObj, mod, info.slides, ref slideCollection); imageLoader.imageLoadedEvent.AddListener((Texture2D tex, int index) => { slideCollection.slides[index]._image = ImageUtilities.Invert(tex); }); @@ -215,6 +217,7 @@ namespace NewHorizons.Builder.Props var slides = info.slides; var slidesCount = slides.Length; var slideCollection = new SlideCollection(slidesCount); // TODO: uh I think that info.slides[i].playTimeDuration is not being read here... note to self for when I implement support for that: 0.7 is what to default to if playTimeDuration turns out to be 0 + slideCollection.streamingAssetIdentifier = string.Empty; // NREs if null var imageLoader = AddAsyncLoader(g, mod, info.slides, ref slideCollection); imageLoader.imageLoadedEvent.AddListener((Texture2D tex, int index) => { slideCollection.slides[index]._image = tex; }); @@ -262,6 +265,7 @@ namespace NewHorizons.Builder.Props var slides = info.slides; var slidesCount = slides.Length; var slideCollection = new SlideCollection(slidesCount); + slideCollection.streamingAssetIdentifier = string.Empty; // NREs if null var imageLoader = AddAsyncLoader(standingTorch, mod, slides, ref slideCollection); @@ -331,7 +335,7 @@ namespace NewHorizons.Builder.Props private static void AddModules(SlideInfo slideInfo, ref Slide slide, IModBehaviour mod) { var modules = new List(); - if (!String.IsNullOrEmpty(slideInfo.beatAudio)) + if (!string.IsNullOrEmpty(slideInfo.beatAudio)) { var audioBeat = new SlideBeatAudioModule { @@ -340,7 +344,7 @@ namespace NewHorizons.Builder.Props }; modules.Add(audioBeat); } - if (!String.IsNullOrEmpty(slideInfo.backdropAudio)) + if (!string.IsNullOrEmpty(slideInfo.backdropAudio)) { var audioBackdrop = new SlideBackdropAudioModule { @@ -349,13 +353,13 @@ namespace NewHorizons.Builder.Props }; modules.Add(audioBackdrop); } - if (slideInfo.ambientLightIntensity > 0) + if (slideInfo.ambientLightIntensity != 0) { var ambientLight = new SlideAmbientLightModule { _intensity = slideInfo.ambientLightIntensity, _range = slideInfo.ambientLightRange, - _color = slideInfo.ambientLightColor.ToColor(), + _color = slideInfo.ambientLightColor?.ToColor() ?? Color.white, _spotIntensityMod = slideInfo.spotIntensityMod }; modules.Add(ambientLight); @@ -376,7 +380,7 @@ namespace NewHorizons.Builder.Props }; modules.Add(blackFrame); } - if (!String.IsNullOrEmpty(slideInfo.reveal)) + if (!string.IsNullOrEmpty(slideInfo.reveal)) { var shipLogEntry = new SlideShipLogEntryModule { diff --git a/NewHorizons/External/Modules/Props/EchoesOfTheEye/SlideInfo.cs b/NewHorizons/External/Modules/Props/EchoesOfTheEye/SlideInfo.cs index 3b656dfd..26b6053d 100644 --- a/NewHorizons/External/Modules/Props/EchoesOfTheEye/SlideInfo.cs +++ b/NewHorizons/External/Modules/Props/EchoesOfTheEye/SlideInfo.cs @@ -1,5 +1,6 @@ using NewHorizons.External.SerializableData; using Newtonsoft.Json; +using System.ComponentModel; namespace NewHorizons.External.Modules.Props.EchoesOfTheEye { @@ -7,80 +8,81 @@ namespace NewHorizons.External.Modules.Props.EchoesOfTheEye public class SlideInfo { /// - /// Ambient light colour when viewing this slide. + /// The path to the image file for this slide. /// - public MColor ambientLightColor; - + public string imagePath; // SlideAmbientLightModule /// /// Ambient light intensity when viewing this slide. + /// Set this to add ambient light module. Base game default is 1. /// public float ambientLightIntensity; /// /// Ambient light range when viewing this slide. /// - public float ambientLightRange; + [DefaultValue(20f)] public float ambientLightRange = 20f; + + /// + /// Ambient light colour when viewing this slide. Defaults to white. + /// + public MColor ambientLightColor; + + /// + /// Spotlight intensity modifier when viewing this slide. + /// + [DefaultValue(0f)] public float spotIntensityMod = 0f; // SlideBackdropAudioModule /// - /// The name of the AudioClip that will continuously play while watching these slides + /// The name of the AudioClip that will continuously loop while watching these slides. + /// Set this to include backdrop audio module. Base game default is Reel_1_Backdrop_A. /// public string backdropAudio; /// - /// The time to fade into the backdrop audio + /// The time to fade into the backdrop audio. /// - public float backdropFadeTime; + [DefaultValue(2f)] public float backdropFadeTime = 2f; // SlideBeatAudioModule /// /// The name of the AudioClip for a one-shot sound when opening the slide. + /// Set this to include beat audio module. Base game default is Reel_1_Beat_A. /// public string beatAudio; /// - /// The time delay until the one-shot audio + /// The time delay until the one-shot audio. /// - public float beatDelay; - + [DefaultValue(0f)] public float beatDelay = 0f; // SlideBlackFrameModule /// /// Before viewing this slide, there will be a black frame for this many seconds. + /// Set this to include black frame module. Base game default is 0. /// public float blackFrameDuration; - /// - /// The path to the image file for this slide. - /// - public string imagePath; - - // SlidePlayTimeModule /// /// Play-time duration for auto-projector slides. + /// Set this to include play time module. Base game default is 0. /// public float playTimeDuration; - // SlideShipLogEntryModule /// - /// Ship log fact revealed when viewing this slide + /// Ship log fact revealed when viewing this slide. + /// Set this to include ship log entry module. Base game default is "". /// public string reveal; - - /// - /// Spotlight intensity modifier when viewing this slide. - /// - public float spotIntensityMod; } - -} +} \ No newline at end of file diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index c7cd13e6..35fc04b2 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -2086,60 +2086,64 @@ "type": "object", "additionalProperties": false, "properties": { - "ambientLightColor": { - "description": "Ambient light colour when viewing this slide.", - "$ref": "#/definitions/MColor" + "imagePath": { + "type": "string", + "description": "The path to the image file for this slide." }, "ambientLightIntensity": { "type": "number", - "description": "Ambient light intensity when viewing this slide.", + "description": "Ambient light intensity when viewing this slide.\nSet this to add ambient light module. Base game default is 1.", "format": "float" }, "ambientLightRange": { "type": "number", "description": "Ambient light range when viewing this slide.", - "format": "float" + "format": "float", + "default": 20.0 }, - "backdropAudio": { - "type": "string", - "description": "The name of the AudioClip that will continuously play while watching these slides" - }, - "backdropFadeTime": { - "type": "number", - "description": "The time to fade into the backdrop audio", - "format": "float" - }, - "beatAudio": { - "type": "string", - "description": "The name of the AudioClip for a one-shot sound when opening the slide." - }, - "beatDelay": { - "type": "number", - "description": "The time delay until the one-shot audio", - "format": "float" - }, - "blackFrameDuration": { - "type": "number", - "description": "Before viewing this slide, there will be a black frame for this many seconds.", - "format": "float" - }, - "imagePath": { - "type": "string", - "description": "The path to the image file for this slide." - }, - "playTimeDuration": { - "type": "number", - "description": "Play-time duration for auto-projector slides.", - "format": "float" - }, - "reveal": { - "type": "string", - "description": "Ship log fact revealed when viewing this slide" + "ambientLightColor": { + "description": "Ambient light colour when viewing this slide. Defaults to white.", + "$ref": "#/definitions/MColor" }, "spotIntensityMod": { "type": "number", "description": "Spotlight intensity modifier when viewing this slide.", + "format": "float", + "default": 0.0 + }, + "backdropAudio": { + "type": "string", + "description": "The name of the AudioClip that will continuously loop while watching these slides.\nSet this to include backdrop audio module. Base game default is Reel_1_Backdrop_A." + }, + "backdropFadeTime": { + "type": "number", + "description": "The time to fade into the backdrop audio.", + "format": "float", + "default": 2.0 + }, + "beatAudio": { + "type": "string", + "description": "The name of the AudioClip for a one-shot sound when opening the slide.\nSet this to include beat audio module. Base game default is Reel_1_Beat_A." + }, + "beatDelay": { + "type": "number", + "description": "The time delay until the one-shot audio.", + "format": "float", + "default": 0.0 + }, + "blackFrameDuration": { + "type": "number", + "description": "Before viewing this slide, there will be a black frame for this many seconds.\nSet this to include black frame module. Base game default is 0.", "format": "float" + }, + "playTimeDuration": { + "type": "number", + "description": "Play-time duration for auto-projector slides.\nSet this to include play time module. Base game default is 0.", + "format": "float" + }, + "reveal": { + "type": "string", + "description": "Ship log fact revealed when viewing this slide.\nSet this to include ship log entry module. Base game default is \"\"." } } },