-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathModuleBooleanIndicator.cs
More file actions
92 lines (82 loc) · 2.5 KB
/
Copy pathModuleBooleanIndicator.cs
File metadata and controls
92 lines (82 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
using UnityEngine;
namespace IndicatorLights
{
/// <summary>
/// A bi-state indicator whose output is controlled by other toggle controllers.
/// </summary>
class ModuleBooleanIndicator : ModuleEmissiveController, IToggle
{
/// <summary>
/// Required. Specifies the input toggle that controls this module. Could be a simple
/// identifier (such as a module or controller name), or it could be parseable toggle
/// syntax such as "and(toggle1, !toggle2)".
/// </summary>
[KSPField]
[ToggleIDField]
public string input = string.Empty;
/// <summary>
/// Color used when in the "on" state.
/// </summary>
[KSPField]
[ColorSourceIDField]
public string activeColor = Colors.ToString(DefaultColor.ToggleLED);
/// <summary>
/// Color used when in the "off" state.
/// </summary>
[KSPField]
[ColorSourceIDField]
public string inactiveColor = Colors.ToString(DefaultColor.Off);
bool isValid = false;
private IToggle inputToggle = null;
private IColorSource activeSource = null;
private IColorSource inactiveSource = null;
public override void ParseIDs()
{
base.ParseIDs();
try
{
inputToggle = RequireToggle(input);
isValid = true;
}
catch (ArgumentException e)
{
Logging.Warn("Invalid input for " + Identifier + " on " + part.GetTitle() + ": " + e.Message);
}
activeSource = FindColorSource(activeColor);
inactiveSource = FindColorSource(inactiveColor);
}
public override bool HasColor
{
get
{
return CurrentSource.HasColor;
}
}
public override Color OutputColor
{
get
{
return CurrentSource.OutputColor;
}
}
/// <summary>
/// IToggle implementation.
/// </summary>
public bool ToggleStatus
{
get
{
return isValid ? inputToggle.ToggleStatus : false;
}
}
private IColorSource CurrentSource
{
get
{
if (!isValid) return ColorSources.ERROR;
return ToggleStatus ? activeSource : inactiveSource;
}
}
}
}