1212namespace Celeste . Mod . Ghost {
1313 public class Ghost : Actor {
1414
15+ public GhostManager Manager ;
16+
1517 public Player Player ;
1618
1719 public PlayerSprite Sprite ;
@@ -27,7 +29,7 @@ public class Ghost : Actor {
2729
2830 public GhostName Name ;
2931
30- protected Color color ;
32+ public Color Color = Color . White ;
3133
3234 protected float alpha ;
3335 protected float alphaHair ;
@@ -73,7 +75,12 @@ public void UpdateHair() {
7375 if ( ! Frame . HasData )
7476 return ;
7577
76- Hair . Color = Frame . HairColor ;
78+ Hair . Color = new Color (
79+ ( Frame . HairColor . R * Color . R ) / 255 ,
80+ ( Frame . HairColor . G * Color . G ) / 255 ,
81+ ( Frame . HairColor . B * Color . B ) / 255 ,
82+ ( Frame . HairColor . A * Color . A ) / 255
83+ ) ;
7784 Hair . Alpha = alphaHair ;
7885 Hair . Facing = Frame . Facing ;
7986 Hair . SimulateMotion = Frame . HairSimulateMotion ;
@@ -87,7 +94,12 @@ public void UpdateSprite() {
8794 Sprite . Rotation = Frame . Rotation ;
8895 Sprite . Scale = Frame . Scale ;
8996 Sprite . Scale . X = Sprite . Scale . X * ( float ) Frame . Facing ;
90- Sprite . Color = Frame . Color * alpha ;
97+ Sprite . Color = new Color (
98+ ( Frame . Color . R * Color . R ) / 255 ,
99+ ( Frame . Color . G * Color . G ) / 255 ,
100+ ( Frame . Color . B * Color . B ) / 255 ,
101+ ( Frame . Color . A * Color . A ) / 255
102+ ) * alpha ;
91103
92104 Sprite . Rate = Frame . SpriteRate ;
93105 Sprite . Justify = Frame . SpriteJustify ;
@@ -137,15 +149,6 @@ public override void Update() {
137149 alphaHair = Calc . LerpClamp ( GhostModule . Settings . InnerHairOpacityFactor , GhostModule . Settings . OuterHairOpacityFactor , dist ) ;
138150 }
139151
140- if ( Data != null ) {
141- /* Proposed colors:
142- * blue - full run PB
143- * silver - chapter PB
144- * gold - room PB
145- */
146- // TODO: Ghost colors based on time.
147- }
148-
149152 UpdateSprite ( ) ;
150153 UpdateHair ( ) ;
151154
0 commit comments