diff --git a/About/Manifest.xml b/About/Manifest.xml index 40ce23d..4ca776b 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@ RJW Sexperience - 1.0.2.0 + 1.0.1.11 diff --git a/Assemblies/RJWSexperience.dll b/Assemblies/RJWSexperience.dll index 0b2e387..acb5320 100644 Binary files a/Assemblies/RJWSexperience.dll and b/Assemblies/RJWSexperience.dll differ diff --git a/RJWSexperience/RJWSexperience/SexHistory.cs b/RJWSexperience/RJWSexperience/SexHistory.cs index a9f7d8b..0e40701 100644 --- a/RJWSexperience/RJWSexperience/SexHistory.cs +++ b/RJWSexperience/RJWSexperience/SexHistory.cs @@ -12,6 +12,9 @@ namespace RJWSexperience { public class SexPartnerHistory : ThingComp { + public SexPartnerHistory() { } + + //protected List histories = new List(); protected Dictionary histories = new Dictionary(); protected string first = ""; @@ -20,22 +23,49 @@ namespace RJWSexperience protected float bestaffinitysat = 0; protected xxx.rjwSextype recentsex = xxx.rjwSextype.None; protected string recentpartner = ""; + protected int[] sextypecount = new int[20]; + protected float[] sextypesat = new float[20]; protected string mostpartnercache = ""; protected xxx.rjwSextype mostsextypecache = xxx.rjwSextype.None; + protected xxx.rjwSextype mostsatsextypecache = xxx.rjwSextype.None; + public string FirstSexInfo { get { + Update(); return - "Partner: " + histories[first]?.Label ?? "Unknown" + - "" + - "" + + "Partner: " + histories.TryGetValue(first)?.Label ?? "Unknown" + ""; - } } + public string MostSexPartner + { + get + { + Update(); + return histories.TryGetValue(mostpartnercache)?.Label ?? "Unknown"; + } + } + public xxx.rjwSextype MostSextype + { + get + { + Update(); + return mostsextypecache; + } + } + public xxx.rjwSextype MostSatisfiedSex + { + get + { + Update(); + return mostsatsextypecache; + } + } + public override void PostExposeData() @@ -46,23 +76,30 @@ namespace RJWSexperience Scribe_Values.Look(ref bestaffinitysat, "bestaffinitysat", bestaffinitysat, true); Scribe_Values.Look(ref recentsex, "recentsex", recentsex, true); Scribe_Values.Look(ref recentpartner, "recentpartner", recentpartner, true); + Scribe_Values.Look(ref sextypecount, "sextypecount", sextypecount, true); + Scribe_Values.Look(ref sextypesat, "sextypesat", sextypesat, true); base.PostExposeData(); } public void RecordHistory(Pawn partner, SexProps props) { TryAddHistory(partner); + recentpartner = partner.ThingID; SexHistory history = histories[partner.ThingID]; history?.RecordSex(props); + recentsex = props.sexType; + sextypecount[(int)props.sexType]++; + dirty = true; } public void RecordSatisfactionHistory(Pawn partner, SexProps props, float satisfaction) { TryAddHistory(partner); + RecordFirst(partner, props); SexHistory history = histories[partner.ThingID]; history?.RecordSatisfaction(props, satisfaction); - + sextypesat[(int)props.sexType] += satisfaction; dirty = true; } @@ -91,7 +128,46 @@ namespace RJWSexperience protected void Update() { - dirty = false; + if (dirty) + { + UpdateStatistics(); + dirty = false; + } + } + + protected void UpdateStatistics() + { + int max = 0; + float maxf = 0; + int maxindex = 0; + string mostID = "Unknown"; + + foreach (KeyValuePair element in histories) + { + SexHistory h = element.Value; + + //find most sex partner + if (max < h.TotalSexCount) + { + max = h.TotalSexCount; + mostID = element.Key; + } + } + + max = 0; + for (int i=0; i < sextypecount.Length; i++) + { + float avgsat = sextypesat[i] / sextypecount[i]; + if (maxf < avgsat) + { + maxf = avgsat; + maxindex = i; + } + } + + mostsatsextypecache = (xxx.rjwSextype)maxindex; + mostsextypecache = (xxx.rjwSextype)sextypecount.FirstIndexOf(x => x == sextypecount.Max()); + mostpartnercache = mostID; } protected bool VirginCheck() @@ -146,6 +222,14 @@ namespace RJWSexperience return bestsatisfaction; } } + public int TotalSexCount + { + get + { + return totalsexhad; + } + } + public SexHistory() { } diff --git a/RJWSexperience_Ideology/Assemblies/RJWSexperience.Ideology.dll b/RJWSexperience_Ideology/Assemblies/RJWSexperience.Ideology.dll index 1f96d10..6339930 100644 Binary files a/RJWSexperience_Ideology/Assemblies/RJWSexperience.Ideology.dll and b/RJWSexperience_Ideology/Assemblies/RJWSexperience.Ideology.dll differ diff --git a/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Rape.xml b/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Rape.xml index 0a9e155..87a167d 100644 --- a/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Rape.xml +++ b/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Rape.xml @@ -3,8 +3,8 @@ - Birth - + Rape + UI/Issues/Rape diff --git a/changelogs.txt b/changelogs.txt index eaf0bad..0fc1be1 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -1,10 +1,12 @@ Version Beta 1.0.2.0 - - requires RimWorld 1.3.3117 or later - - requires RJW 4.8.1 or later - added records - added sex history - +Version Beta 1.0.1.11 + - requires RimWorld 1.3.3117 or later + - requires RJW 4.8.1 or later + Version Beta 1.0.1.10 - requires RJW 4.8.0