public BaseVisionProvider( Color darkColour, Color lightColour, IFOVHandler algorithm, int minimumLightLevel = 0, int minimumComfortLevel = 0, int maximumLightLevel = GlobalConstants.MAX_LIGHT, int maximumComfortLevel = GlobalConstants.MAX_LIGHT, string name = null) { if (name.IsNullOrEmpty() == false) { this.Name = name; } this.DarkColour = darkColour; this.LightColour = lightColour; this.Algorithm = algorithm; this.m_Vision = new HashSet <Vector2Int>(); this.MinimumLightLevel = minimumLightLevel; this.MaximumLightLevel = maximumLightLevel; this.MinimumComfortLevel = minimumComfortLevel; this.MaximumComfortLevel = maximumComfortLevel; this.m_Vision = new HashSet <Vector2Int>(); }
private void SetFOVHandler() { m_FOVHandler = new FOVShadowCasting(); //m_FOVHandler = new FOVPermissive(); //m_FOVHandler = new FOVRecursiveShadowcasting(); //m_FOVHandler = new FOVDirty(); }
public bool AddVision( string name, Color darkColour, Color lightColour, IFOVHandler algorithm, int minimumLightLevel = 0, int minimumComfortLevel = 0, int maximumLightLevel = GlobalConstants.MAX_LIGHT, int maximumComfortLevel = GlobalConstants.MAX_LIGHT) { if (this.VisionTypes.ContainsKey(name)) { return(false); } this.VisionTypes.Add( name, new BaseVisionProvider( darkColour, lightColour, algorithm, minimumLightLevel, minimumComfortLevel, maximumLightLevel, maximumComfortLevel, name)); return(true); }
public IEnumerable <IVision> Load() { List <IVision> visionTypes = new List <IVision>(); string[] files = Directory.GetFiles( Directory.GetCurrentDirectory() + GlobalConstants.ASSETS_FOLDER + GlobalConstants.DATA_FOLDER + "Vision Types", "*.json", SearchOption.AllDirectories); foreach (string file in files) { JSONParseResult result = JSON.Parse(File.ReadAllText(file)); if (result.Error != Error.Ok) { this.ValueExtractor.PrintFileParsingError(result, file); continue; } if (!(result.Result is Dictionary visionDict)) { GlobalConstants.ActionLog.Log("Could not parse JSON to Dictionary from " + file, LogLevel.Warning); continue; } ICollection <Dictionary> visions = this.ValueExtractor.GetCollectionFromArray <Dictionary>( this.ValueExtractor.GetValueFromDictionary <Array>( visionDict, "VisionTypes")); foreach (Dictionary innerDict in visions) { string name = this.ValueExtractor.GetValueFromDictionary <string>(innerDict, "Name"); Color lightColour = new Color(this.ValueExtractor.GetValueFromDictionary <string>(innerDict, "LightColour")); Color darkColour = new Color(this.ValueExtractor.GetValueFromDictionary <string>(innerDict, "DarkColour")); int minimumLight = innerDict.Contains("MinimumLight") ? this.ValueExtractor.GetValueFromDictionary <int>(innerDict, "MinimumLight") : 0; int minimumComfort = innerDict.Contains("MinimumComfort") ? this.ValueExtractor.GetValueFromDictionary <int>(innerDict, "MinimumComfort") : minimumLight; int maximumLight = innerDict.Contains("MaximumLight") ? this.ValueExtractor.GetValueFromDictionary <int>(innerDict, "MaximumLight") : GlobalConstants.MAX_LIGHT; int maximumComfort = innerDict.Contains("MaximumComfort") ? this.ValueExtractor.GetValueFromDictionary <int>(innerDict, "MaximumComfort") : maximumLight; string visionProvider = innerDict.Contains("Algorithm") ? this.ValueExtractor.GetValueFromDictionary <string>(innerDict, "Algorithm") : nameof(FOVShadowCasting); IFOVHandler handler = (IFOVHandler)GlobalConstants.ScriptingEngine.FetchAndInitialise(visionProvider); visionTypes.Add( new BaseVisionProvider( darkColour, lightColour, handler, minimumLight, minimumComfort, maximumLight, maximumComfort, name)); } } return(visionTypes); }