Entitas  0.35.0
Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity
CodeGeneratorConfig.cs
1 using System;
2 using System.Linq;
3 
4 namespace Entitas.Serialization.Configuration {
5 
6  public class CodeGeneratorConfig {
7 
8  public const string GENERATED_FOLDER_PATH_KEY = "Entitas.CodeGenerator.GeneratedFolderPath";
9  const string DEFAULT_GENERATED_FOLDER_PATH = "Assets/Generated/";
10  public string generatedFolderPath {
11  get { return _config.GetValueOrDefault(GENERATED_FOLDER_PATH_KEY, DEFAULT_GENERATED_FOLDER_PATH); }
12  set { _config[GENERATED_FOLDER_PATH_KEY] = value; }
13  }
14 
15  public const string POOLS_KEY = "Entitas.CodeGenerator.Pools";
16  public string[] pools {
17  get { return separateValues(_config.GetValueOrDefault(POOLS_KEY, string.Empty)); }
18  set { _config[POOLS_KEY] = joinValues(value); }
19  }
20 
21  public const string ENABLED_CODE_GENERATORS_KEY = "Entitas.CodeGenerator.EnabledCodeGenerators";
22  public string[] enabledCodeGenerators {
23  get { return separateValues(_config.GetValueOrDefault(ENABLED_CODE_GENERATORS_KEY, _defaultEnabledCodeGenerators)); }
24  set { _config[ENABLED_CODE_GENERATORS_KEY] = joinValues(value); }
25  }
26 
27  readonly string _defaultEnabledCodeGenerators;
28 
29  readonly EntitasPreferencesConfig _config;
30 
31  public CodeGeneratorConfig(EntitasPreferencesConfig config, string[] codeGenerators) {
32  _config = config;
33  _defaultEnabledCodeGenerators = joinValues(codeGenerators);
34 
35  // Assigning will apply default values to missing keys
36  generatedFolderPath = generatedFolderPath;
37  pools = pools;
38  enabledCodeGenerators = enabledCodeGenerators;
39  }
40 
41  static string joinValues(string[] values) {
42  return string.Join(",",
43  values
44  .Where(value => !string.IsNullOrEmpty(value))
45  .ToArray()
46  ).Replace(" ", string.Empty);
47  }
48 
49  static string[] separateValues(string values) {
50  return values
51  .Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries)
52  .Select(value => value.Trim())
53  .ToArray();
54  }
55 
56  public override string ToString() {
57  return _config.ToString();
58  }
59  }
60 }