]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix slime hair translucent (#14478)
authorcsqrb <56765288+CaptainSqrBeard@users.noreply.github.com>
Sat, 11 Mar 2023 21:04:58 +0000 (03:04 +0600)
committerGitHub <noreply@github.com>
Sat, 11 Mar 2023 21:04:58 +0000 (13:04 -0800)
* fix

* move

Content.Client/Humanoid/HumanoidAppearanceSystem.cs
Content.Client/Humanoid/MarkingPicker.xaml.cs
Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs
Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs
Content.Shared/Humanoid/Markings/MarkingManager.cs
Content.Shared/Humanoid/Markings/MarkingsSet.cs

index 47ef6a06074e851f37bf5c6f34334b14e780170a..cf37d730e5b1e7d47deb977854a8b422f1c20efd 100644 (file)
@@ -160,13 +160,13 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
         //markings.RemoveCategory(MarkingCategories.FacialHair);
 
         // We need to ensure hair before applying it or coloring can try depend on markings that can be invalid
-        var hairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.Hair, _prototypeManager)
-            ? profile.Appearance.SkinColor : profile.Appearance.HairColor;
+        var hairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.Hair, out var hairAlpha, _prototypeManager)
+            ? profile.Appearance.SkinColor.WithAlpha(hairAlpha) : profile.Appearance.HairColor;
         var hair = new Marking(profile.Appearance.HairStyleId,
             new[] { hairColor });
     
-        var facialHairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.FacialHair, _prototypeManager)
-            ? profile.Appearance.SkinColor : profile.Appearance.FacialHairColor;
+        var facialHairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.FacialHair, out var facialHairAlpha, _prototypeManager)
+            ? profile.Appearance.SkinColor.WithAlpha(facialHairAlpha) : profile.Appearance.FacialHairColor;
         var facialHair = new Marking(profile.Appearance.FacialHairStyleId,
             new[] { facialHairColor });
 
index f284b84cd2e8c739413828f902cd79babb00683c..0f314783e29e187df2c4481075099463ada77e00 100644 (file)
@@ -431,7 +431,7 @@ public sealed partial class MarkingPicker : Control
             markingSet.AddBack(MarkingCategories.FacialHair, FacialHairMarking);
         }
 
-        if (!_markingManager.MustMatchSkin(_currentSpecies, marking.BodyPart, _prototypeManager))
+        if (!_markingManager.MustMatchSkin(_currentSpecies, marking.BodyPart, out var _, _prototypeManager))
         {
             // Do default coloring
             var colors = MarkingColoring.GetMarkingLayerColors(
index 4330a8794562d816216e0295c727408e729ba94c..d95d72b9375d8f956a7cbccf78f0d40f4a84a3cb 100644 (file)
@@ -1034,7 +1034,7 @@ namespace Content.Client.Preferences.UI
             {
                 if (_markingManager.CanBeApplied(Profile.Species, hairProto, _prototypeManager))
                 {
-                    if (_markingManager.MustMatchSkin(Profile.Species, HumanoidVisualLayers.Hair, _prototypeManager))
+                    if (_markingManager.MustMatchSkin(Profile.Species, HumanoidVisualLayers.Hair, out var _, _prototypeManager))
                     {
                         hairColor = Profile.Appearance.SkinColor;
                     }
@@ -1069,7 +1069,7 @@ namespace Content.Client.Preferences.UI
             {
                 if (_markingManager.CanBeApplied(Profile.Species, facialHairProto, _prototypeManager))
                 {
-                    if (_markingManager.MustMatchSkin(Profile.Species, HumanoidVisualLayers.Hair, _prototypeManager))
+                    if (_markingManager.MustMatchSkin(Profile.Species, HumanoidVisualLayers.Hair, out var _, _prototypeManager))
                     {
                         facialHairColor = Profile.Appearance.SkinColor;
                     }
index 669c1cb1b436a1e8d99759faac5ec8d46ab368fa..5cf3999d8e9e65acc66d029782534c3fb0b9d57f 100644 (file)
@@ -99,10 +99,10 @@ public sealed partial class HumanoidAppearanceSystem : SharedHumanoidAppearanceS
 
         // Hair/facial hair - this may eventually be deprecated.
         // We need to ensure hair before applying it or coloring can try depend on markings that can be invalid
-        var hairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.Hair, _prototypeManager)
-            ? profile.Appearance.SkinColor : profile.Appearance.HairColor;
-        var facialHairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.FacialHair, _prototypeManager)
-            ? profile.Appearance.SkinColor : profile.Appearance.FacialHairColor;
+        var hairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.Hair, out var hairAlpha, _prototypeManager)
+            ? profile.Appearance.SkinColor.WithAlpha(hairAlpha) : profile.Appearance.HairColor;
+        var facialHairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.FacialHair, out var facialHairAlpha, _prototypeManager)
+            ? profile.Appearance.SkinColor.WithAlpha(facialHairAlpha) : profile.Appearance.FacialHairColor;
         
         if (_markingManager.Markings.TryGetValue(profile.Appearance.HairStyleId, out var hairPrototype) &&
             _markingManager.CanBeApplied(profile.Species, hairPrototype, _prototypeManager))
index 08a721d3450b86358673529cfebd0a30647f1fc5..9a72f5eebcf38955e1c9ede4a166c11b2b17ae38 100644 (file)
@@ -166,10 +166,9 @@ namespace Content.Shared.Humanoid.Markings
             return true;
         }
 
-        public bool MustMatchSkin(string species, HumanoidVisualLayers layer, IPrototypeManager? prototypeManager = null)
+        public bool MustMatchSkin(string species, HumanoidVisualLayers layer, out float alpha, IPrototypeManager? prototypeManager = null)
         {
             IoCManager.Resolve(ref prototypeManager);
-
             var speciesProto = prototypeManager.Index<SpeciesPrototype>(species);
             if (
                 !prototypeManager.TryIndex(speciesProto.SpriteSet, out HumanoidSpeciesBaseSpritesPrototype? baseSprites) ||
@@ -179,9 +178,11 @@ namespace Content.Shared.Humanoid.Markings
                 !sprite.MarkingsMatchSkin
             )
             {
+                alpha = 1f;
                 return false;
             }
             
+            alpha = sprite.LayerAlpha;
             return true;
         }
     }
index 9535e28e1adaa4692083a24864d8f32526051488..393ca6e135b3296803d7886d9958fd61b60017b6 100644 (file)
@@ -190,9 +190,9 @@ public sealed class MarkingSet
                 foreach (var marking in list)
                 {
                     if (markingManager.TryGetMarking(marking, out var prototype) &&
-                        markingManager.MustMatchSkin(species, prototype.BodyPart, prototypeManager))
+                        markingManager.MustMatchSkin(species, prototype.BodyPart, out var alpha, prototypeManager))
                     {
-                        marking.SetColor(skinColor.Value);
+                        marking.SetColor(skinColor.Value.WithAlpha(alpha));
                     }
                 }
             }