From 7febeef8172306c2b6746f8fc1b514785bdc6703 Mon Sep 17 00:00:00 2001 From: CGFighter Date: Wed, 15 Jun 2022 21:31:35 +0300 Subject: [PATCH] 1.0.4 --- 1.3/Assemblies/ResearchWhatever.dll | Bin 13824 -> 16384 bytes Languages/English/Keyed/strings.xml | 4 ++ .../Patches/ResearchManagerPatch.cs | 37 ++++++++++++++++++ .../StaticConstructorOnStartupUtilityPatch.cs | 4 +- .../Patches/WorkGiver_ResearcherPatch.cs | 12 +++--- .../ResearchWhatever.csproj | 1 + .../ResearchWhateverComp.cs | 31 ++++++++++++++- .../ResearchWhateverGameComp.cs | 24 ++++++++++++ change.log | 7 +++- 9 files changed, 108 insertions(+), 12 deletions(-) create mode 100644 Source/ResearchWhatever13/Patches/ResearchManagerPatch.cs create mode 100644 Source/ResearchWhatever13/ResearchWhateverGameComp.cs diff --git a/1.3/Assemblies/ResearchWhatever.dll b/1.3/Assemblies/ResearchWhatever.dll index 322c1e9cdf0bc835d6ca5179424f52fb8e25e70f..be9e3bf1be978ce7c249bdc90148024a91a77a82 100644 GIT binary patch literal 16384 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 KU;ocp;Qs(=fTxQ9 delta 5940 zcmaJ_33OCdn*Q&7Rj*#XTBxd|DyyMF7GA277!o=OiwLsFs$htU=!7MJkw8I;*g%<7 z)zAuP3+B9bl+)urPK%>w)Qn(Gi_3ww8=08~b=pCvX=tX~K-3h)nN2JI1_tr1X!JzfRJas7EvrHA0~0gpmb9PhRJnPjof&%ZOgk zhAIoZ86q!uFBI)|rL4D?2+Q37Nfe((`%V!TP4+%9R*bh#h^k_k@iiMCNlvOCOLVfD zNZ6GV+U$jLZ90H}HFCg31F*QpP#p`8JOqc8=K48MNo?5}T1{sNIi8x$% z;?t7lu=g7J0LpY2Az{@+KHy;{#iA6iNT6cVIImv<+a#K1S`PSZa7273%CH2TG#mDv z@Q1|th{HbQw9<$kOjd9v);K6r&479l)3ttt6$3u_)KiQN5GulQ!lTDkZ@3aztV3?K zV3B@aAI(9>gSN0$@nkC~uVJBs@%p8%NP=6`w~A;(&QGEZ`n1)~_7ecUkY-I}W)dK8 zGWi?wGLVtv6gIdVFgO)ZWK9Fcj6pXNtZ68!9W+3k*GoB(E1;^$u*QNkt{WEU_<$b* z1Ib2}O&Uh}Z7j3UzIg56EC>p%D}kyXdWv-e+?Bp(k-CL}F|9ewz6(|+=7LPjV<8uk zGf!c-a=f(w)c;pl8e8_=%C5qid}UOCftikhLGOZn1%fsd7Fw8l)6@&Cg}B#O_SxSf z4fp*8(&QpoZ0%bkk@qzq^_UvK?eK@G2wELPX>$;Rp6lHx5a;zO?#p6W*JM~@VZh?a zPVlCl8&wh0^CMZGAHtdjtu{V7buBMqvhXO}OY1uD$?E~u62OJ&JCdJ1JPe6Kvey{l zxvQmh11zLAfOUAtmVz0;2svVUj2mzQ31jGjGR1mRrZ7?tk6!QAizXd_E)tVrwbW%N zWF*~)rzUwLe0Yt)o7mOg0F1u(xD8z()qo8wW8vU()~{gFbzX;CJ-L!4-FXQHM^9p8 z&4JYb7dJq!FEaWXv~T%Z17$pH^bN2${Y?y(OJe}JJ8*(<@jf7U-l?V5a!Dx+ zg`*`Tzd3ibL@%%As?xb2s)|jhf-h?ww5jy~EtLQ!HUR3EYKe`wH*{!;KIZ3Xi6q~r zYbh)=>uYm&sg4~Lxy8ycTB;ug7OK$e!xyU2YKvkiNqD4iAS0E*Tp3b5!m7GPeGF$4 z17yJoaB#dR|N23eQL5IQ-NATR#NbfJ|6iXl(}8N4{&6*a9&k7R9dUm}}qX zsZ7sChpGmN{ss4EaD-HKZ0hS-zXs(Ib>nz?3r(-;?4b4vB5WU3UD-Kj2JW-L-;aH+ zx}rC+f{k%WG}s}psB-+$)M>ZEuM}?8?llYOJp|Y3QSE+1r#=T`hr-he|5@R$6uu3c zv`)LUC*Y`8VXIR7S-V=-N%J-tCOzS@g-!wG?o0Y7;irAhR;`2h?WfZsjgzPlO@^OV zx?43r-6$Dfbuqdj(do~!2}z77%U>%G|6{N`%knh&%tIbOJ&R>JeE_vi{qm4UCy(P^ z(@$M6_0xmyHfhp_(nk1~d@R|jw@E*}tF&`;mb{F#{M4i9#U8ew?dQ~|`0qz@Z+lpK zkHM>MQ}iO0Zu$t^>GXxl>lS~j7NT3_pxaOLR2{nz*iXMDUc4PzKmEkZ_^@(OBbat7 zM<1zFK2!1)PF}S~CG@GuHcu+;bxMAZk{@(0gw4^ki%sJyuXk0*e}~$npLjU;KN!4! z#|&=ot*Wwh2%yv5s--)yL4Haqr%x!S)0GFQLQa)!GD02Vq}1tG#9MGX{OI%xVvJ42t;X8%32!ZK1OX-EwP;DSwkDXqMIj%wp38{YkWFnEyLHleAWvB`((@ zbT3VZX^VRS@Hfs6&^jTm0X?K&3w*;F6KuH@mJ#aG7Df@7?kL`2b|Kih9A`wGQS{=T zJQsI{!9Aw9*XTz=;340i=QfI))0#%V%$dRsD}ST7EX|-OxD$EqX#~*d%(pB*Q```F z{C)6p?rUzdh8|WDt|6M`$!Jb`G0%DYcWW+MR>eA-mdX3Iv`Nn>c8Eg$2QYYxt69l4 zInnO*iaRCB&@K;c$a80WQE)fZu;nRt#P^8ip%pn!)Oy*nC$GEK*9>k`URPrN43_)z z+){HkdD8TAd9NgHt6ca5j1sw~e~!jP%l_ z7wLS|p4TOD2>IxRJQozt;lWJ*r($#AN6~*@v~U!Cm^U3wuV{RJ3)+QKSx~8yF^v=X z0uJeXfEVK(BIqPu;gUXurA9iQD;_$=V!U1c3e!qtqSYpb&%}{x((U-{#KXir2m+l{ zqUcJXN#lS4nxJr+!Z`{TDO{p(xxyY`m^LbUi^8nJA)ufUh3UiU_A#)O+@cZt92C62 zUh4NXfS!r{42pj2Vw3wGDFiFd?lREfTZcHjRjX@IOh1@oVtsc(S*e$EaE*krjV& zo}zjzI7`RG2Je@UbBf2so$hLJN<8n1iSZQCFB6mVHlN9>#SGA!#K+=yu0ipI==T1t z5OT7%Q*04$`fOmgcaP{1=@*QLaTD%;6eV(p`IM-X-QNA8PCn*)MNE+E;Mwf*Vz^a+UjD`lII#`93`)cgshRTq$*v zln=?B&64k#EdCL8qJS^k>=j1U2+YkDE1U@c5_q_yqs_~NSRh~;ktMhgF zF}$6n5|K92Z$SN;XqR6=Bxs9F82=?VibuWg$sX|rPQa|V+<8VG7sKvPrO@{Hzk;^S z5Sm*n_3PS3;geC?C`>P7xuTo&4`37b__V$Bp(m`pk6KHBH!9rbtkfFuXukz4pyO%W z%INpNDiV%HijxU!p(t>Y!s!a**@74a{_=Wd1wJP(hp$KO0Uy9sBpZPC3-QW_zENMlLw_E z!$;1=*HQkNeUTtNR(nuc@SFUb>q?weyi}u^qpR_olCO3w{r2Lq+Bq)iJJ%~p=0+JN zLV3u*Sz_Sptby0Of$za?nn$~-gZ5D;9jd{J?Gv4JsaQ*^MF&3H@m}7E`(5~~h0&Yz zducydvce9R-evDC9b3AvZ`JCa%~Mu%bv4th{`D)DHPf8+o3358vc+Cr8ZPVZ>Kadz zr%a&93liP^y{o3s;#HeB_4lo6o-uq!Sy0#?m3P@|E*T}RvTwhne^^#DOM7Z`vVBMN z=l0^tv-WLcdTpcXCi|AET?JPqHg)uG*pTSkw5ogN=9Q~9Z0fO_s~hBk<@WaKBg41U zjFa}`W2@}xb))Ui#>VXitJuE5Dz$f8AKKgN!uFGOW%iM}iFPEm&3-D@YX2eDJ^WDp zI(*5bs}J=*6&(Cz=1=usm(Pt29I(rqtn`owWwMSara+5QxhotRV1YYI;ZSBsU^b!@ z%IwsmQiS^b?x@DMVCHdWREW?zyp%$j!#dNM!wx-^`8Q>LOv#UV0>U8z738lVshL6= zB!Zc}!OU@=%Moe{2bYLYXGdtfgq@HGcS=;?7d(Up1Qqc7yc1mJRXrS9#8TvhH3g*S zmZ}_~$UJX^L(3)Z(up+7i|upciYGrGK#=xOK&{P;1TzOzQXg}cBOE1wRhdt)d;~8~ zwkn{!pAmb0^CjsK^n$&QxKSRrMRmxJuV=x`IX`9%F42i|s2CK)U=A>ob#fE3ZWGM{ z1BxpTWrM-257DzF9&!jjc#!f!NN*@0CBiI1;ap9H{jbf27_tAOxprb5f?<6fJaP2w zI8K7^D$WF{`@N*)vq3@*mk2F@B$S*>L&00( z#K98EX4&+1222v<*`4odYGUGP5R*A~RfO7k zHK#aUWk8}98Ng`a4T+dftBN{Jd{GZ&p5?J{U`!XFG{FtaWX=3=$3P<;FZMW>?FgEH zCTSK)r^S|_${l=24IdxhC>*y5>a~a3E^{|E{h+aVT-$_JdtPg;{ZXsmvHSZ~>)N7@ z^!KU8+UME|@ZT5u{P?tY_%!1a4F8>>8T0XJv}@bP1b(dj?p)=*#;FfYeEfm4r>$Z8 o`u1KQ)E6%20{d8dnV3KPr}jdpdus0Ydhun$!6|3NP?PKb03br=;Q#;t diff --git a/Languages/English/Keyed/strings.xml b/Languages/English/Keyed/strings.xml index cf5c1a0..96c6169 100644 --- a/Languages/English/Keyed/strings.xml +++ b/Languages/English/Keyed/strings.xml @@ -5,4 +5,8 @@ Inactive - colonists will not choose something to research on their own. {0} has nothing left to research {0} has started a new research: {1} + Mute + Default + Letter + Notice diff --git a/Source/ResearchWhatever13/Patches/ResearchManagerPatch.cs b/Source/ResearchWhatever13/Patches/ResearchManagerPatch.cs new file mode 100644 index 0000000..af2b45b --- /dev/null +++ b/Source/ResearchWhatever13/Patches/ResearchManagerPatch.cs @@ -0,0 +1,37 @@ +using System.Linq; +using System.Collections.Generic; +using HarmonyLib; +using RimWorld; +using Verse; +using Verse.Sound; + +namespace ResearchWhatever.Patches +{ + [HarmonyPatch(typeof(ResearchManager), "FinishProject")] + public static class ResearchManager_FinishProject_ResearchWhateverPatch + { + public static void Prefix(ResearchManager __instance, ref bool doCompletionDialog) + { + if (doCompletionDialog) + { + var comp = Current.Game.GetComponent(); + if (comp.NotifyMode == ResearchWhateverNotifyMode.rwnDefault) + return; + + doCompletionDialog = false; + + switch (comp.NotifyMode) + { + case ResearchWhateverNotifyMode.rwnLetter: + Find.LetterStack.ReceiveLetter("ResearchFinished".Translate(__instance.currentProj.LabelCap), __instance.currentProj.description, LetterDefOf.PositiveEvent, null, null, null, null, null); + break; + case ResearchWhateverNotifyMode.rwnNotice: + Messages.Message("ResearchFinished".Translate(__instance.currentProj.LabelCap).CapitalizeFirst(), MessageTypeDefOf.SilentInput); + break; + default: + break; + } + } + } + } +} diff --git a/Source/ResearchWhatever13/Patches/StaticConstructorOnStartupUtilityPatch.cs b/Source/ResearchWhatever13/Patches/StaticConstructorOnStartupUtilityPatch.cs index 3888c1d..f9d3e31 100644 --- a/Source/ResearchWhatever13/Patches/StaticConstructorOnStartupUtilityPatch.cs +++ b/Source/ResearchWhatever13/Patches/StaticConstructorOnStartupUtilityPatch.cs @@ -13,7 +13,7 @@ namespace ResearchWhatever { //[HarmonyPatch(typeof(StaticConstructorOnStartupUtility), "CallAll")] [HarmonyPatch] - static class StaticConstructorOnStartupUtility_CallAll_ResearchWhateverPatch + public static class StaticConstructorOnStartupUtility_CallAll_ResearchWhateverPatch { internal static MethodBase TargetMethod() { @@ -29,7 +29,7 @@ namespace ResearchWhatever return LCallAll; } // - static void Postfix() + public static void Postfix() { List list = new List( from x in DefDatabase.AllDefsListForReading diff --git a/Source/ResearchWhatever13/Patches/WorkGiver_ResearcherPatch.cs b/Source/ResearchWhatever13/Patches/WorkGiver_ResearcherPatch.cs index 8fb8821..8781939 100644 --- a/Source/ResearchWhatever13/Patches/WorkGiver_ResearcherPatch.cs +++ b/Source/ResearchWhatever13/Patches/WorkGiver_ResearcherPatch.cs @@ -8,9 +8,9 @@ using Verse.Sound; namespace ResearchWhatever.Patches { [HarmonyPatch(typeof(WorkGiver_Researcher), "ShouldSkip")] - static class WorkGiver_Researcher_ShouldSkip_ResearchWhateverPatch + public static class WorkGiver_Researcher_ShouldSkip_ResearchWhateverPatch { - static bool Prefix(ref bool __result) + public static bool Prefix(ref bool __result) { __result = false; return false; @@ -18,9 +18,9 @@ namespace ResearchWhatever.Patches } [HarmonyPatch(typeof(WorkGiver_Researcher), "PotentialWorkThingRequest", MethodType.Getter)] - static class WorkGiver_PotentialWorkThingRequest_ResearchWhateverPatch + public static class WorkGiver_PotentialWorkThingRequest_ResearchWhateverPatch { - static bool Prefix(ref ThingRequest __result) + public static bool Prefix(ref ThingRequest __result) { __result = ThingRequest.ForGroup(ThingRequestGroup.ResearchBench); return false; @@ -28,7 +28,7 @@ namespace ResearchWhatever.Patches } [HarmonyPatch(typeof(WorkGiver_Researcher), "HasJobOnThing")] - static class WorkGiver_Researcher_HasJobOnThing_ResearchWhateverPatch + public static class WorkGiver_Researcher_HasJobOnThing_ResearchWhateverPatch { private static bool hasFacilities(this Building_ResearchBench bench, List requiredFacilities) { @@ -43,7 +43,7 @@ namespace ResearchWhatever.Patches return true; } - static void Prefix(Pawn pawn, Thing t, bool forced) + public static void Prefix(Pawn pawn, Thing t, bool forced) { ResearchProjectDef currentProj = Find.ResearchManager.currentProj; if (currentProj != null) return; diff --git a/Source/ResearchWhatever13/ResearchWhatever.csproj b/Source/ResearchWhatever13/ResearchWhatever.csproj index 48e2371..e897bdd 100644 --- a/Source/ResearchWhatever13/ResearchWhatever.csproj +++ b/Source/ResearchWhatever13/ResearchWhatever.csproj @@ -68,6 +68,7 @@ + diff --git a/Source/ResearchWhatever13/ResearchWhateverComp.cs b/Source/ResearchWhatever13/ResearchWhateverComp.cs index e068186..4402217 100644 --- a/Source/ResearchWhatever13/ResearchWhateverComp.cs +++ b/Source/ResearchWhatever13/ResearchWhateverComp.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using Verse; using RimWorld; +using UnityEngine; namespace ResearchWhatever { @@ -29,7 +30,33 @@ namespace ResearchWhatever command_Toggle.isActive = (() => active); command_Toggle.toggleAction = delegate () { - Active = !active; + if (Event.current.button == 0) + Active = !Active; + else if (Event.current.button == 1) + { + var comp = Current.Game.GetComponent(); + //var lable = Mute ? "CommandResearchWhateverToggleMute".Translate().CapitalizeFirst() : "CommandResearchWhateverToggleUnmute".Translate().CapitalizeFirst(); + List list = new List(); + list.Add(new FloatMenuOption("CommandResearchWhateverToggleDefault".Translate().CapitalizeFirst(), delegate () + { + comp.NotifyMode = ResearchWhateverNotifyMode.rwnDefault; + })); + list.Add(new FloatMenuOption("CommandResearchWhateverToggleLetter".Translate().CapitalizeFirst(), delegate () + { + comp.NotifyMode = ResearchWhateverNotifyMode.rwnLetter; + })); + list.Add(new FloatMenuOption("CommandResearchWhateverToggleNotice".Translate().CapitalizeFirst(), delegate () + { + comp.NotifyMode = ResearchWhateverNotifyMode.rwnNotice; + })); + list.Add(new FloatMenuOption("CommandResearchWhateverToggleMute".Translate().CapitalizeFirst(), delegate () + { + comp.NotifyMode = ResearchWhateverNotifyMode.rwnMute; + })); + FloatMenu floatMenu = new FloatMenu(list); + floatMenu.vanishIfMouseDistant = true; + Find.WindowStack.Add(floatMenu); + } }; if (Active) { @@ -45,5 +72,5 @@ namespace ResearchWhatever private bool active = true; } - + } diff --git a/Source/ResearchWhatever13/ResearchWhateverGameComp.cs b/Source/ResearchWhatever13/ResearchWhateverGameComp.cs new file mode 100644 index 0000000..de246e8 --- /dev/null +++ b/Source/ResearchWhatever13/ResearchWhateverGameComp.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using System.Linq; +using Verse; +using RimWorld; + +namespace ResearchWhatever +{ + public enum ResearchWhateverNotifyMode { rwnDefault, rwnLetter, rwnNotice, rwnMute } + public class ResearchWhateverGameComp : GameComponent + { + public ResearchWhateverGameComp() + { + } + public ResearchWhateverGameComp(Game game) + { + } + public override void ExposeData() + { + Scribe_Values.Look(ref notifyMode, "NotifyMode"); + } + private ResearchWhateverNotifyMode notifyMode = ResearchWhateverNotifyMode.rwnDefault; + public ResearchWhateverNotifyMode NotifyMode { get { return notifyMode; } set { notifyMode = value; } } + } +} diff --git a/change.log b/change.log index ae31b68..c4c400c 100644 --- a/change.log +++ b/change.log @@ -1,6 +1,9 @@ -1.0.3 +1.0.4 +- now you can r-click on the toggle to mute completion notifications; + +1.0.3 - added an extension to make it possible to ignore some research or prioritize last; -- made so repeatable research from firefoxpdm.ResearchableStatUpgrades us always bottom priority; +- made so repeatable research from firefoxpdm.ResearchableStatUpgrades is always bottom priority; 1.0.2 - option gets disabled if building is not of player faction;