mirror of
				https://gitgud.io/lutepickle/rjw_menstruation.git
				synced 2024-08-14 22:46:52 +00:00 
			
		
		
		
	Some mods break SkinColor to the point that even trying to access it throws a null ref, so go work around that
This commit is contained in:
		
							parent
							
								
									aba80efe58
								
							
						
					
					
						commit
						2b0d5dd0e6
					
				
					 4 changed files with 19 additions and 6 deletions
				
			
		
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -356,7 +356,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            baseAreola = Mathf.Clamp01(baseAreola + amount);
 | 
					            baseAreola = Mathf.Clamp01(baseAreola + amount);
 | 
				
			||||||
            UpdateNipples();
 | 
					            UpdateNipples();
 | 
				
			||||||
        }
 | 
					        }     
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void UpdateNipples()
 | 
					        public void UpdateNipples()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -365,7 +365,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
            cachedNipple = baseNipple + nippleProgress * nippleChange;
 | 
					            cachedNipple = baseNipple + nippleProgress * nippleChange;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // For some reason, Props can go null when RJW relocates the chest (e.g. some animals), so catch that
 | 
					            // For some reason, Props can go null when RJW relocates the chest (e.g. some animals), so catch that
 | 
				
			||||||
            cachedColor = Colors.CMYKLerp(Pawn.story?.SkinColor ?? Color.white, (Props?.BlackNippleColor ?? CompProperties_Breast.DefaultBlacknippleColor.ToColor), Alpha);
 | 
					            cachedColor = Colors.CMYKLerp(Utility.SafeSkinColor(Pawn), (Props?.BlackNippleColor ?? CompProperties_Breast.DefaultBlacknippleColor.ToColor), Alpha);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void CopyBreastProperties(HediffComp_Breast original)
 | 
					        public void CopyBreastProperties(HediffComp_Breast original)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -394,7 +394,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
            anal = pawn.GetAnalIcon(showOrigin);
 | 
					            anal = pawn.GetAnalIcon(showOrigin);
 | 
				
			||||||
            GUI.color = new Color(1.00f, 0.47f, 0.47f, 1);
 | 
					            GUI.color = new Color(1.00f, 0.47f, 0.47f, 1);
 | 
				
			||||||
            GUI.Box(rect, "", boxstyle);
 | 
					            GUI.Box(rect, "", boxstyle);
 | 
				
			||||||
            GUI.color = pawn.story.SkinColor;
 | 
					            GUI.color = Utility.SafeSkinColor(pawn);
 | 
				
			||||||
            //Widgets.DrawTextureFitted(genitalIconRect, anal, 1.0f);
 | 
					            //Widgets.DrawTextureFitted(genitalIconRect, anal, 1.0f);
 | 
				
			||||||
            //Widgets.DrawTextureFitted(genitalIconRect, vagina, 1.0f);
 | 
					            //Widgets.DrawTextureFitted(genitalIconRect, vagina, 1.0f);
 | 
				
			||||||
            GUI.DrawTexture(genitalIconRect, anal, ScaleMode.ScaleToFit);
 | 
					            GUI.DrawTexture(genitalIconRect, anal, ScaleMode.ScaleToFit);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -209,7 +209,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
                    nipple = ContentFinder<Texture2D>.Get("Breasts/Breast_Breast00_Nipple00", false);
 | 
					                    nipple = ContentFinder<Texture2D>.Get("Breasts/Breast_Breast00_Nipple00", false);
 | 
				
			||||||
                    areola = ContentFinder<Texture2D>.Get("Breasts/Breast_Breast00_Areola00", false);
 | 
					                    areola = ContentFinder<Texture2D>.Get("Breasts/Breast_Breast00_Areola00", false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    GUI.color = pawn.story?.SkinColor ?? Color.white;
 | 
					                    GUI.color = SafeSkinColor(pawn);
 | 
				
			||||||
                    GUI.DrawTexture(rect, breast, ScaleMode.ScaleToFit);
 | 
					                    GUI.DrawTexture(rect, breast, ScaleMode.ScaleToFit);
 | 
				
			||||||
                    GUI.color = Color.white;
 | 
					                    GUI.color = Color.white;
 | 
				
			||||||
                    GUI.DrawTexture(rect, areola, ScaleMode.ScaleToFit);
 | 
					                    GUI.DrawTexture(rect, areola, ScaleMode.ScaleToFit);
 | 
				
			||||||
| 
						 | 
					@ -236,7 +236,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
                breast = ContentFinder<Texture2D>.Get(icon, false);
 | 
					                breast = ContentFinder<Texture2D>.Get(icon, false);
 | 
				
			||||||
                areola = ContentFinder<Texture2D>.Get(areolaicon, false);
 | 
					                areola = ContentFinder<Texture2D>.Get(areolaicon, false);
 | 
				
			||||||
                nipple = ContentFinder<Texture2D>.Get(nippleicon, false);
 | 
					                nipple = ContentFinder<Texture2D>.Get(nippleicon, false);
 | 
				
			||||||
                GUI.color = pawn.story.SkinColor;
 | 
					                GUI.color = SafeSkinColor(pawn);
 | 
				
			||||||
                GUI.DrawTexture(rect, breast, ScaleMode.ScaleToFit);
 | 
					                GUI.DrawTexture(rect, breast, ScaleMode.ScaleToFit);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                GUI.color = comp.NippleColor;
 | 
					                GUI.color = comp.NippleColor;
 | 
				
			||||||
| 
						 | 
					@ -255,7 +255,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
                nipple = ContentFinder<Texture2D>.Get("Breasts/Breast_Breast00_Nipple00", false);
 | 
					                nipple = ContentFinder<Texture2D>.Get("Breasts/Breast_Breast00_Nipple00", false);
 | 
				
			||||||
                areola = ContentFinder<Texture2D>.Get("Breasts/Breast_Breast00_Areola00", false);
 | 
					                areola = ContentFinder<Texture2D>.Get("Breasts/Breast_Breast00_Areola00", false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                GUI.color = pawn.story.SkinColor;
 | 
					                GUI.color = SafeSkinColor(pawn);
 | 
				
			||||||
                GUI.DrawTexture(rect, breast, ScaleMode.ScaleToFit);
 | 
					                GUI.DrawTexture(rect, breast, ScaleMode.ScaleToFit);
 | 
				
			||||||
                GUI.color = Color.white;
 | 
					                GUI.color = Color.white;
 | 
				
			||||||
                GUI.DrawTexture(rect, areola, ScaleMode.ScaleToFit);
 | 
					                GUI.DrawTexture(rect, areola, ScaleMode.ScaleToFit);
 | 
				
			||||||
| 
						 | 
					@ -454,5 +454,18 @@ namespace RJW_Menstruation
 | 
				
			||||||
            if (pawn.IsAnimal() && !Configurations.EnableAnimalCycle) return false;
 | 
					            if (pawn.IsAnimal() && !Configurations.EnableAnimalCycle) return false;
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Apparently with some mods, even doing pawn.story?.SkinColor can throw a null reference, so we're stuck doing this
 | 
				
			||||||
 | 
					        public static Color SafeSkinColor(Pawn pawn)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return pawn.story?.SkinColor ?? Color.white;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (NullReferenceException)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return Color.white;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue