mirror of
				https://github.com/amevarashi/RJW-Sexperience.git
				synced 2024-08-14 23:54:08 +00:00 
			
		
		
		
	Move PartnerFilter to a separate class
This commit is contained in:
		
							parent
							
								
									ae0f62061e
								
							
						
					
					
						commit
						724bcbe86b
					
				
					 2 changed files with 68 additions and 60 deletions
				
			
		
							
								
								
									
										68
									
								
								RJWSexperience/IdeologyAddon/Ideology/PartnerFilter.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								RJWSexperience/IdeologyAddon/Ideology/PartnerFilter.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,68 @@
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Diagnostics.CodeAnalysis;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace RJWSexperience.Ideology
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public class PartnerFilter
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
				
			||||||
 | 
							public bool? isAnimal;
 | 
				
			||||||
 | 
							[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
				
			||||||
 | 
							public bool? isVeneratedAnimal;
 | 
				
			||||||
 | 
							[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
				
			||||||
 | 
							public bool? isSlave;
 | 
				
			||||||
 | 
							[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
				
			||||||
 | 
							public bool? isAlien;
 | 
				
			||||||
 | 
							[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
				
			||||||
 | 
							public List<PawnRelationDef> hasOneOfRelations;
 | 
				
			||||||
 | 
							[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
				
			||||||
 | 
							public List<PawnRelationDef> hasNoneOfRelations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public bool Applies(Pawn pawn, Pawn partner)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if (isAnimal != null && isAnimal != partner.IsAnimal())
 | 
				
			||||||
 | 
									return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (isVeneratedAnimal != null && isVeneratedAnimal != pawn.Ideo.IsVeneratedAnimal(partner))
 | 
				
			||||||
 | 
									return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (isSlave != null && isSlave != partner.IsSlave)
 | 
				
			||||||
 | 
									return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//if (isAlien != null && isAlien != partner)
 | 
				
			||||||
 | 
								//	return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (!hasOneOfRelations.NullOrEmpty())
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									if (pawn.relations == null)
 | 
				
			||||||
 | 
										return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									bool found = false;
 | 
				
			||||||
 | 
									foreach (PawnRelationDef relationDef in hasOneOfRelations)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										if (pawn.relations?.DirectRelationExists(relationDef, partner) == true)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											found = true;
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if (!found)
 | 
				
			||||||
 | 
										return false;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (!hasNoneOfRelations.NullOrEmpty() && pawn.relations != null)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									foreach (PawnRelationDef relationDef in hasNoneOfRelations)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										if (pawn.relations.DirectRelationExists(relationDef, partner))
 | 
				
			||||||
 | 
											return false;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -35,65 +35,5 @@ namespace RJWSexperience.Ideology.Precepts
 | 
				
			||||||
				return filter.Applies(pawn, partner);
 | 
									return filter.Applies(pawn, partner);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		public class PartnerFilter
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
					 | 
				
			||||||
			public bool? isAnimal;
 | 
					 | 
				
			||||||
			[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
					 | 
				
			||||||
			public bool? isVeneratedAnimal;
 | 
					 | 
				
			||||||
			[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
					 | 
				
			||||||
			public bool? isSlave;
 | 
					 | 
				
			||||||
			[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
					 | 
				
			||||||
			public bool? isAlien;
 | 
					 | 
				
			||||||
			[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
					 | 
				
			||||||
			public List<PawnRelationDef> hasOneOfRelations;
 | 
					 | 
				
			||||||
			[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
					 | 
				
			||||||
			public List<PawnRelationDef> hasNoneOfRelations;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			public bool Applies(Pawn pawn, Pawn partner)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				if (isAnimal != null && isAnimal != partner.IsAnimal())
 | 
					 | 
				
			||||||
					return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				if (isVeneratedAnimal != null && isVeneratedAnimal != pawn.Ideo.IsVeneratedAnimal(partner))
 | 
					 | 
				
			||||||
					return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				if (isSlave != null && isSlave != partner.IsSlave)
 | 
					 | 
				
			||||||
					return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				//if (isAlien != null && isAlien != partner)
 | 
					 | 
				
			||||||
				//	return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				if (!hasOneOfRelations.NullOrEmpty())
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					if (pawn.relations == null)
 | 
					 | 
				
			||||||
						return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					bool found = false;
 | 
					 | 
				
			||||||
					foreach (PawnRelationDef relationDef in hasOneOfRelations)
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						if (pawn.relations?.DirectRelationExists(relationDef, partner) == true)
 | 
					 | 
				
			||||||
						{
 | 
					 | 
				
			||||||
							found = true;
 | 
					 | 
				
			||||||
							break;
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					if (!found)
 | 
					 | 
				
			||||||
						return false;
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				if (!hasNoneOfRelations.NullOrEmpty() && pawn.relations != null)
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					foreach (PawnRelationDef relationDef in hasNoneOfRelations)
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						if (pawn.relations.DirectRelationExists(relationDef, partner))
 | 
					 | 
				
			||||||
							return false;
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				return true;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue