From 50092595c562a72941c5044ac7183a62c1010278 Mon Sep 17 00:00:00 2001 From: Thorsten Stanitzok Date: Mon, 3 Sep 2018 10:14:28 +0200 Subject: [PATCH 1/6] =?UTF-8?q?Diverse=20Einstellungen=20f=C3=BCr=20Build?= =?UTF-8?q?=20ge=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/ColoredMoodBar/ColoredMoodBar.csproj | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Source/ColoredMoodBar/ColoredMoodBar.csproj b/Source/ColoredMoodBar/ColoredMoodBar.csproj index 1561e53..042a836 100644 --- a/Source/ColoredMoodBar/ColoredMoodBar.csproj +++ b/Source/ColoredMoodBar/ColoredMoodBar.csproj @@ -5,7 +5,7 @@ {2EABFAFA-B6E5-43EB-948F-62FCECCBCCC0} Library false - ClassLibrary + ColoredMoodBar v3.5 512 @@ -35,7 +35,7 @@ D:\dev\RimWorld Libs\Release\0Harmony.dll - ..\..\..\..\RimWorldWin_Data\Managed\Assembly-CSharp.dll + E:\Steam Bibliothek\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False @@ -45,12 +45,13 @@ - ..\..\..\..\RimWorldWin_Data\Managed\UnityEngine.dll + E:\Steam Bibliothek\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.dll False + @@ -65,6 +66,8 @@ - ..\..\..\RimWorldWin -quicktest + copy /Y "$(TargetDir)$(TargetName).dll" "E:\Steam Bibliothek\steamapps\common\RimWorld\Mods\ColorCodedMoodBar\Assemblies\$(TargetName).dll" + + \ No newline at end of file From e4a0478f9535bc0194063bfa797c2becc7ea843a Mon Sep 17 00:00:00 2001 From: Thorsten Stanitzok Date: Mon, 3 Sep 2018 10:14:56 +0200 Subject: [PATCH 2/6] Anpassung an Version 0.19 und ein wenig Cleanup --- Assemblies/ClassLibrary.dll | Bin 8704 -> 0 bytes Assemblies/ColoredMoodBar.dll | Bin 0 -> 9216 bytes README.md | 1 + Source/ColoredMoodBar/HarmonyPatch.cs | 37 ++++++++++++------ .../ColoredMoodBar/Properties/AssemblyInfo.cs | 33 ++++++++++++++++ 5 files changed, 60 insertions(+), 11 deletions(-) delete mode 100644 Assemblies/ClassLibrary.dll create mode 100644 Assemblies/ColoredMoodBar.dll create mode 100644 Source/ColoredMoodBar/Properties/AssemblyInfo.cs diff --git a/Assemblies/ClassLibrary.dll b/Assemblies/ClassLibrary.dll deleted file mode 100644 index 4e5aed79fafcfa754ba0f8aafcb90e48b6e32a57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8704 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 K58AI?1^x?!=f5cc diff --git a/Assemblies/ColoredMoodBar.dll b/Assemblies/ColoredMoodBar.dll new file mode 100644 index 0000000000000000000000000000000000000000..8c2cb920386c2acd150705c6a6a499690f4aa6e5 GIT binary patch literal 9216 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 CZNvfq literal 0 HcmV?d00001 diff --git a/README.md b/README.md index b1bd05a..16fdd16 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ A red mood bar indicates the pawn is at or under their extreme mental break thre - Sep 16 2017: Initial release on GitHub and closed release on Steam - Sep 17 2017: Open release on Steam - Nov 18 2017: Updated for RimWord version 0.18.1722, and added content and happy colors. +- Sep 03 2018: Update for Rimworld version 0.19.* and doing some bufgixes. ## Author/Mod Team - PorqueNoLosDos diff --git a/Source/ColoredMoodBar/HarmonyPatch.cs b/Source/ColoredMoodBar/HarmonyPatch.cs index d662eb6..b058132 100644 --- a/Source/ColoredMoodBar/HarmonyPatch.cs +++ b/Source/ColoredMoodBar/HarmonyPatch.cs @@ -26,7 +26,7 @@ public class Main { public static Texture2D happyTex; static Main() { - var harmony = HarmonyInstance.Create("com.github.bc.rimworld.mod.moodbar"); + var harmony = HarmonyInstance.Create("com.github.restive2k12.rimworld.mod.moodbar"); harmony.PatchAll(Assembly.GetExecutingAssembly()); drawSelectionOverlayOnGUIMethod = typeof(ColonistBarColonistDrawer).GetMethod("DrawSelectionOverlayOnGUI", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(Pawn), typeof(Rect) }, null); @@ -34,6 +34,7 @@ static Main() { BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(Caravan), typeof(Rect) }, null); getPawnTextureRectMethod = typeof(ColonistBarColonistDrawer).GetMethod("GetPawnTextureRect", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(float), typeof(float) }, null); + drawIconsMethod = typeof(ColonistBarColonistDrawer).GetMethod("DrawIcons", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(Rect), typeof(Pawn) }, null); pawnTextureCameraOffsetField = typeof(ColonistBarColonistDrawer).GetField("PawnTextureCameraOffset", @@ -42,7 +43,7 @@ static Main() { BindingFlags.Static | BindingFlags.NonPublic); pawnLabelsCacheField = typeof(ColonistBarColonistDrawer).GetField("pawnLabelsCache", BindingFlags.Instance | BindingFlags.NonPublic); - float colorAlpha = 0.44f; + float colorAlpha = 0.6f; Color red = Color.red; Color orange = new Color(1f, 0.5f, 0.31f, colorAlpha); Color yellow = Color.yellow; @@ -57,7 +58,7 @@ static Main() { neutralTex = SolidColorMaterials.NewSolidColorTexture(neutralColor); contentTex = SolidColorMaterials.NewSolidColorTexture(cyan); happyTex = SolidColorMaterials.NewSolidColorTexture(happyColor); - LogMessage("ColorCodedMoodBar initialized"); + LogMessage("initialized"); } public static void LogMessage(string text) { @@ -68,22 +69,25 @@ public static void LogMessage(string text) { [HarmonyPatch(typeof(ColonistBarColonistDrawer), "DrawColonist")] public class MoodPatch { private static float ApplyEntryInAnotherMapAlphaFactor(Map map, float alpha) { - if (map == null) { + //Unnecessary code? + /*if (map == null) { if (!WorldRendererUtility.WorldRenderedNow) { alpha = Mathf.Min(alpha, 0.4f); } } + else if (map != Find.VisibleMap || WorldRendererUtility.WorldRenderedNow) { alpha = Mathf.Min(alpha, 0.4f); - } + }*/ - return alpha; + return alpha;// Mathf.Min(alpha, 0.4f); } public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, ref Pawn colonist, ref Map pawnMap) { ColonistBar colonistBar = Find.ColonistBar; float entryRectAlpha = colonistBar.GetEntryRectAlpha(rect); entryRectAlpha = ApplyEntryInAnotherMapAlphaFactor(pawnMap, entryRectAlpha); + bool flag = (!colonist.Dead) ? Find.Selector.SelectedObjects.Contains(colonist) : Find.Selector.SelectedObjects.Contains(colonist.Corpse); Color color = new Color(1f, 1f, 1f, entryRectAlpha); GUI.color = color; @@ -95,9 +99,12 @@ public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, r position.yMin = position.yMax - num; position.height = num; + float statValue = colonist.GetStatValue(StatDefOf.MentalBreakThreshold, true); + float currentMoodLevel = colonist.needs.mood.CurLevel; + // Extreme break threshold if (currentMoodLevel <= statValue) { GUI.DrawTexture(position, Main.extremeBreakTex); @@ -123,28 +130,36 @@ public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, r else { GUI.DrawTexture(position, Main.happyTex); } + } Rect rect2 = rect.ContractedBy(-2f * colonistBar.Scale); if (flag && !WorldRendererUtility.WorldRenderedNow) { Main.drawSelectionOverlayOnGUIMethod.Invoke(__instance, new object[] { colonist, rect2 }); - } - else if (WorldRendererUtility.WorldRenderedNow && colonist.IsCaravanMember() && Find.WorldSelector.IsSelected(colonist.GetCaravan())) { + + } else if (WorldRendererUtility.WorldRenderedNow && colonist.IsCaravanMember() && Find.WorldSelector.IsSelected(colonist.GetCaravan())) { Main.drawCaravanSelectionOverlayOnGUIMethod.Invoke(__instance, new object[] { colonist.GetCaravan(), rect2 }); + } - Rect pawnTexturePosition = (Rect) Main.getPawnTextureRectMethod.Invoke(__instance, new object[] { rect.x, rect.y }); + + + Rect pawnTexturePosition = __instance.GetPawnTextureRect(new Vector2(rect.x, rect.y));//(Rect) Main.getPawnTextureRectMethod.Invoke(__instance, new object[] { rect.x, rect.y }); + GUI.DrawTexture(pawnTexturePosition, PortraitsCache.Get(colonist, ColonistBarColonistDrawer.PawnTextureSize, - (Vector3) Main.pawnTextureCameraOffsetField.GetValue(null), + ColonistBarColonistDrawer.PawnTextureCameraOffset, 1.28205f)); + + GUI.color = new Color(1f, 1f, 1f, entryRectAlpha * 0.8f); Main.drawIconsMethod.Invoke(__instance, new object[] { rect, colonist }); + GUI.color = color; if (colonist.Dead) { - GUI.DrawTexture(rect, (Texture) Main.deadColonistTexField.GetValue(null)); + GUI.DrawTexture(rect, (Texture)Main.deadColonistTexField.GetValue(null)); } float num2 = 4f * colonistBar.Scale; diff --git a/Source/ColoredMoodBar/Properties/AssemblyInfo.cs b/Source/ColoredMoodBar/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e311b4c --- /dev/null +++ b/Source/ColoredMoodBar/Properties/AssemblyInfo.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("ColoredMoodBar")] +[assembly: AssemblyDescription("Color code each pawn's mood bar within the colonist bar based on their current mood.")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ColoredMoodBar.Properties")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar +// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("d7feaa9a-a2c4-46d7-81de-fccf6944661e")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] From 417172943f5a222ad318842b551b8a4307270a94 Mon Sep 17 00:00:00 2001 From: Thorsten Stanitzok Date: Wed, 5 Sep 2018 23:50:23 +0200 Subject: [PATCH 3/6] Resized colonist bar images slightly to improve mood visibility. --- Assemblies/ColoredMoodBar.dll | Bin 9216 -> 9728 bytes Source/ColoredMoodBar/ColoredMoodBar.csproj | 3 +- Source/ColoredMoodBar/HarmonyPatch.cs | 32 +++++++++++++++----- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/Assemblies/ColoredMoodBar.dll b/Assemblies/ColoredMoodBar.dll index 8c2cb920386c2acd150705c6a6a499690f4aa6e5..f3f8d3b4d2642a70329470797e17dff79adf8cc1 100644 GIT binary patch delta 1936 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 diff --git a/Source/ColoredMoodBar/ColoredMoodBar.csproj b/Source/ColoredMoodBar/ColoredMoodBar.csproj index 042a836..b646331 100644 --- a/Source/ColoredMoodBar/ColoredMoodBar.csproj +++ b/Source/ColoredMoodBar/ColoredMoodBar.csproj @@ -67,7 +67,6 @@ copy /Y "$(TargetDir)$(TargetName).dll" "E:\Steam Bibliothek\steamapps\common\RimWorld\Mods\ColorCodedMoodBar\Assemblies\$(TargetName).dll" - - +"E:\Steam Bibliothek\steamapps\common\RimWorld\RimworldWin64.exe" -quicktest \ No newline at end of file diff --git a/Source/ColoredMoodBar/HarmonyPatch.cs b/Source/ColoredMoodBar/HarmonyPatch.cs index b058132..37d96fa 100644 --- a/Source/ColoredMoodBar/HarmonyPatch.cs +++ b/Source/ColoredMoodBar/HarmonyPatch.cs @@ -90,16 +90,24 @@ public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, r bool flag = (!colonist.Dead) ? Find.Selector.SelectedObjects.Contains(colonist) : Find.Selector.SelectedObjects.Contains(colonist.Corpse); Color color = new Color(1f, 1f, 1f, entryRectAlpha); + + //pawn image background size + Rect pawnBackgroundSize = rect.ExpandedBy(2.5f); + //pawnBackgroundSize.width += 5f; + //pawn image size + const float newSizeVal = 0f; + + GUI.color = color; - GUI.DrawTexture(rect, ColonistBar.BGTex); + GUI.DrawTexture(pawnBackgroundSize, ColonistBar.BGTex); if (colonist.needs != null && colonist.needs.mood != null) { - Rect position = rect.ContractedBy(2f); + Rect position = pawnBackgroundSize.ContractedBy(2f); float num = position.height * colonist.needs.mood.CurLevelPercentage; position.yMin = position.yMax - num; position.height = num; - + float statValue = colonist.GetStatValue(StatDefOf.MentalBreakThreshold, true); float currentMoodLevel = colonist.needs.mood.CurLevel; @@ -133,7 +141,8 @@ public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, r } - Rect rect2 = rect.ContractedBy(-2f * colonistBar.Scale); + //Selection rectangle size + Rect rect2 = rect.ContractedBy(-6f * colonistBar.Scale); if (flag && !WorldRendererUtility.WorldRenderedNow) { Main.drawSelectionOverlayOnGUIMethod.Invoke(__instance, new object[] { colonist, rect2 }); @@ -143,10 +152,19 @@ public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, r } + + Rect pawnTexturePosition = __instance.GetPawnTextureRect(new Vector2(rect.x, rect.y)).ContractedBy(newSizeVal);//(Rect) Main.getPawnTextureRectMethod.Invoke(__instance, new object[] { rect.x, rect.y }); + pawnTexturePosition.y += newSizeVal-1f; + + if (pawnBackgroundSize.width % 2 == 0) { + pawnTexturePosition.x -= 1f; + //Log.Message("[ColorCodedMoodBar] EVEN " + pawnBackgroundSize.width); + } else { + //Log.Message("[ColorCodedMoodBar] UNEVEN " + pawnBackgroundSize.width); + pawnTexturePosition.x -= 0.25f; + } - - Rect pawnTexturePosition = __instance.GetPawnTextureRect(new Vector2(rect.x, rect.y));//(Rect) Main.getPawnTextureRectMethod.Invoke(__instance, new object[] { rect.x, rect.y }); - + GUI.DrawTexture(pawnTexturePosition, PortraitsCache.Get(colonist, ColonistBarColonistDrawer.PawnTextureSize, ColonistBarColonistDrawer.PawnTextureCameraOffset, From 1d651981a63f041c70c7cf25027cc231687c0e8a Mon Sep 17 00:00:00 2001 From: Thorsten Stanitzok Date: Sat, 8 Sep 2018 23:00:18 +0200 Subject: [PATCH 4/6] Fixed Caravan bug. --- Assemblies/0Harmony.dll | Bin 65536 -> 113152 bytes Assemblies/ColoredMoodBar.dll | Bin 9728 -> 10240 bytes Source/ColoredMoodBar/HarmonyPatch.cs | 105 +++++++++++++++++++++++--- 3 files changed, 96 insertions(+), 9 deletions(-) diff --git a/Assemblies/0Harmony.dll b/Assemblies/0Harmony.dll index a95b6df8aa6f4472d514a983bf1b9178a7283bd6..6c0dd94e519f23fa6dca753b5093267f01a0adc8 100644 GIT binary patch literal 113152 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℞0J@>+v^xqT}4StcR(LZk9YvUN^kF z?DU8q-JUjnBbmQxXmsa`zw>87=u8r@i@dyfTGx5(+SI^o$> z!r?2fU*jg&dKT8BoQ0=8_ZtM=hUK4T@Hpq!47*eQnO3y|gM8=tVhS0nM|*M4--zjNxg248s(z9NK@0O&&QtH>aGA%0 zMLfz!H&KZndJ@TK7Sa*XIXnc(ar5Mj?YB~EE3NLaK3ktWaKmkUH_+H7`B8_TM2^i9 P_l%hF|3ClFQQ&_8uw>eA literal 65536 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 #{m2@Ill<|% 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 U0GYv2w*MD0*FXLHYe#|q3mf->X8-^I diff --git a/Assemblies/ColoredMoodBar.dll b/Assemblies/ColoredMoodBar.dll index f3f8d3b4d2642a70329470797e17dff79adf8cc1..f2e92fde3ae5ba8108d6de0b46ff9b6631d50608 100644 GIT binary patch delta 3583 zcmb7{eQ*@z9mjvqv%Al3HkTv2o4e#f2$u^93pvs#Vu%U}AR}|$j)L@Ms-0RzrdC?4rBkL=i}w3GcR)h> zPxq3~{@$P8J};X~{+fK}UAqz;fBJei6|c7_5ieyeM71zj1*5%S^anSDpS*(TI%()2 z+Nh7#c|jdpZ}#leHFi#^@Zq=fj7Xo5 zy!V3S`g8FUlXLru*?e;LkqfeCOw2y76qB{d$)_(!KHn;aKK~Fh`4%*;PtGo3cxpd` zX|VIgWLMh+mzeD8lCBwrEEBH8efP%NOZ}?gIjwRA8nAr~YtyW5tkg_SAuaLB%P%kV6EKxyPc+qYA8T*VHC0p-s|;EH6{VFmQORt|5qT{Z zoxpnH#~~jpZQDkt(6-4n%rrptv0S3GV89sh4!;rBP}o@JS&o&o$%K{K*Oij1LCUwE zM`5ZjIs3KfQZS#p*%=$$)*jm9*QMAKxA?J{PwTv%V`d5)KyN18tmL8$ekMJ-xY z6N`Bj{-rW^LNTYpZLbC6qD3c{S_JBoAW z3D?y8<%rn%X+ZNo1v;Y3UxB;c>6q}!wGo+XXd&4*$@%W+8kUE!SQt+^HCkEeuS678 z`q#?agvE<`RZZkn%_a)ov>FzE1BbqT7)8+9E}X3THG|o7|E2+0Xjho%8SIbxwQJ}~ z%o={Ee%adPm>Ier%1uVFxTG$E@!`i0^n zyjx76F@y^`!avakEzl%u6@RGs1;s$|9ToF5A4G+F6&dU{^%}QvK{L%4kvqqb73#q- zHB*wi^f2qrSz$V3BoQ>9zlen6Mj3PI2E7~hX=ak!RErWetxz0=H%t*E3tDB#atv95 zo)=PnObu`lwCR_6t0|~K)jT3(6PM_+{^h!?mbF?<)Yp?7rYH-(V@Gd1gxWUU%_Q$4 z$x>Z1qIgQNUS*RhYpfP!4CB)ltlv&9N7#Z%z$2r!O)G_D!fXvbu!2(7h#!}Lj!c!8tk z2e6eHU59PS>1Jg)hz-Q48Fr0E`nx=682 zagpM3#Z`)3ialV2(n{W@xC0dQ99XSbt{A6>XcxbXPSH}U1M&fVDLqaeUjgo6tHEa} zMf>UQ9QET?CI-N#Oez0Pm+YaPG>fg^!*mg|%&$-zd!Fr~5jEH%_OSUaTF&0pzfG%H zhp`XbYmCz|T0w`Yi_NiqO+8E#zlY@&^KHnt@OS7a^^5mu8+(BL12OXvGfwNx+y^wm zUSc0WdBK!CuAc!vW1gYi>|ey$z3h*g$wt@%y7cyf`{_=O7FmPkvSaj5?xXJ z-U@!C^?}RGZR`}AYkrQ6(%-c&Bjz>4oS-IaC!N3??8d--Xr+XY>fdBBo--d~%~VS7 zf*zd$r&2j@rh1BjO*99bOSglUD=wkEkXO(Fo@=Hx%G9mcOE19jS^6tqLId;>@5M5Z z)=OWa&x3pD4s9ll(j#;+yOZg8x%DPq!)hCzw;W`>Ma84Ozb#GW(G7*RI|__H-z}yJiOIamFkyPRxMdI8qHuaH+dp0t`-9_2q=AbIwC}hjW8?C=|k% z4!5t)jJexFPRd#9q(WDvWz1;=HD2 zS`CKcZd!%EXA*Psd)+i1iM#nzdYqgg$Y^Ou6V8w>oc!rB(%t+SH|-2Tk$u#lIA@_y zgBfv07!QXdWHIRvg^C7eq=ch4Jkm%>u(f)6q%Y)>;O@=kPO98Zm%DxCyqu3cSY5@~ z_TVQ|hww+*VHA?9vm~=6)1Mv~BpP{%;cbOKnQQyggFBY?Z%X&4npdZK2b1v$mSp^f zRCXYp>0i*&tUf_WO=IagX-qYD_H6GD-kjQLcNO%NJzJ$ZyL-)!fx%Q?^WscqORA?o z8SfkD&1AQvH=M6_@wsY=%Qm#O_RQ;@cj-lKb1zA?%y0Yu(i<;KmwW!L;{RMy{!q&C e(Yh!<9#;TV*UqW=W?$A delta 3251 zcmZuz4Qv$06@G7aclNwK4)30Q{=t~zjLl+ST~J8?2VxsT!H^2a6oerZ45q0C=CHAa z0o8Y;4Iw2YxGPYgsagd3D zkH~SP?_x@M0J>NRw-1if-Ac4++=Tq1Ju#RnVi(8U_8hJ#yog1!w8Qy+KG+#1GVclA z^SR*iJN$ctm)wpPBcm^TE_%Yf(RY>MrHzrn9|akapH@du8@;>hVYWGvox?b#pDIvi zutvIO+~blXU9HMBAsc1Gl{k2yxGvX6rJS&5B#467jK~Dk((#J`QPZ;$EkFNSUE-Nn zd+QQivli6ZzV;RepBP1HC3?a$JkyhQMKttHl-F@X|4-7ckdI?I8FYu4lNECyx@J~( zlx$_?TqVn_99FWOl}ADD-ilNBD1BN|RSR_wKovgP&WZVBfmD?cewh}clbLW%bP>5^ zIMpPpC^|Vrxu_<}?~*?bJVzQ`sxeY=D7jX%?ZYi|&F0j27?MRk3ge{E3Jy&8j83Wo zQ0>kc;ZU}05i@lN7=~=UviV_+*ZXK@6gJ17h?!h7_?A^|e*tX>dGLf)#pyfbS6-2+ z`@mZ6Csm9UN;>}ikYcxRVPes!8%cvkcHH#xexi$*m*Ezb zFYf8?*!bvXUGxaiFVG9+OBT~RqlwTDR6cJ>6Usv$Lf>Qr8*?htsJ`la!bKt+Pu~u# zMqp?=wnNB5C>_QTQ^|_C-1xeb^lObj7BzA-?L@ew3*v94q*;c-GL1jgxJ_fA@mY_M4Ay@{SIp^V!?2b|HCl_{OT=h4KhH55qp@4#8jZiA zqp-iN@db@PwEqeI&osWQ@pX-V(D+swQ*&G`I#3jnFEZ19)snQI&hl|+$F#PyXvmUy zG*4)4fZnxEvY_7#GyiIzVRHl%t%z-}MprW>(3^r*YRd_9kD!}q6oXn+&r`a@%Ap~P z@${-Cih&MI0_M>ajWaYhXl&B>u*O!6ZNLKR&~lf?tw2fVfF*Q@c8O{94~m6mLH?dO zn~qad%m?n~MZhz(CQV0aAFT%tS(|{{Y$cyJ6}C|yP2z=OJ5Ax=$;W60zskF4hhCt8 zS6e6ODlMeb^e1|P&Qb%9mcOJXJ}b||vPE2`FrAcdQXAi}uTcm8-ntI{LDaj0SBsCq zX+SrnxAG6z;x_&iq)Sv~JNzWS#tvVi0mzr=vKay1XGeH||3y(g#Mg`>aGo|DzDgg1 zd7RhT<$Rhy!2e6h(^j;Ocy@lkq4 ztj9ggrPsNJqVxuE41EYJr%!=+vqTMjiPi%j(AY>_kf$u9y_gnj(+Z7i=>=HU(`C^} zo9RulmbTM7Vgfx)-=#m&mf%n%I`LuMRH{+4<2hbCEJf)@B_;c_N@Z{*G6oM@4%#p~ zst1kHm8SUWH-eebt3g$MVsJ(NaSrlhox$!{6Hc~yUC*k%;6iLoVs782wvFxU+GlU2 z#?;21?zXi(T6q+Vt(q4sDx5pGuka<#`|RL?mX4<;&wIA#Sjl^}Z;uUD7nj&Maf7|q zNbv3A&a`23c)VTYb%lky#O+XjVYgQR!(nk};EnaVtT>0=4kJziXY?}9hvHP=WsY*G z6^HtwysfZ^;;}{wB(aFuU1CV@Dc6gc7rt~sr6r4k|Kb zyDwy1l$MSyMF!z@>J_iq#9n5P*D2$$W!|^qg2Q1bSgO~MZm%ib%=J-ZdYO;BPPZ3| zN?%%P#>wrqvA>%l5-Fe%D{nXqL%p)NJ6Pah#ZGr{=+w4HmKIMPdJ=n{i(eDAf;WUY zf@db|tqbFs6W+=^wap3~j7r7^W3wXtJ!&u19w+it-B oF1N={CC3NG$3$Q4;9F%$4&vi_1|#u*TjJT;LAUbnJTTe*FBl^xzyJUM diff --git a/Source/ColoredMoodBar/HarmonyPatch.cs b/Source/ColoredMoodBar/HarmonyPatch.cs index 37d96fa..e2a6154 100644 --- a/Source/ColoredMoodBar/HarmonyPatch.cs +++ b/Source/ColoredMoodBar/HarmonyPatch.cs @@ -28,6 +28,7 @@ public class Main { static Main() { var harmony = HarmonyInstance.Create("com.github.restive2k12.rimworld.mod.moodbar"); harmony.PatchAll(Assembly.GetExecutingAssembly()); + drawSelectionOverlayOnGUIMethod = typeof(ColonistBarColonistDrawer).GetMethod("DrawSelectionOverlayOnGUI", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(Pawn), typeof(Rect) }, null); drawCaravanSelectionOverlayOnGUIMethod = typeof(ColonistBarColonistDrawer).GetMethod("DrawCaravanSelectionOverlayOnGUI", @@ -47,7 +48,7 @@ static Main() { Color red = Color.red; Color orange = new Color(1f, 0.5f, 0.31f, colorAlpha); Color yellow = Color.yellow; - Color neutralColor = new Color(0.87f, 0.96f, 0.79f, colorAlpha); + Color neutralColor = new Color(0.77f, 0.96f, 0.69f, colorAlpha); Color cyan = Color.cyan; Color happyColor = new Color(0.1f, 0.75f, 0.2f, colorAlpha); red.a = orange.a = yellow.a = cyan.a = colorAlpha; @@ -66,25 +67,111 @@ public static void LogMessage(string text) { } } - [HarmonyPatch(typeof(ColonistBarColonistDrawer), "DrawColonist")] + [HarmonyPatch(typeof(ColonistBarColonistDrawer))] + [HarmonyPatch("DrawColonist")] + [HarmonyPatch(new Type[ ] { typeof(Rect) , typeof(Pawn) , typeof(Map) , typeof(bool) , typeof(bool) } )] public class MoodPatch { private static float ApplyEntryInAnotherMapAlphaFactor(Map map, float alpha) { - //Unnecessary code? - /*if (map == null) { + + if (map == null) { if (!WorldRendererUtility.WorldRenderedNow) { alpha = Mathf.Min(alpha, 0.4f); } } - else if (map != Find.VisibleMap || WorldRendererUtility.WorldRenderedNow) { + else if (map != Find.CurrentMap || WorldRendererUtility.WorldRenderedNow) { alpha = Mathf.Min(alpha, 0.4f); - }*/ + } - return alpha;// Mathf.Min(alpha, 0.4f); + return alpha; } - public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, ref Pawn colonist, ref Map pawnMap) { + public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, ref Pawn colonist, ref Map pawnMap, ref bool highlight, ref bool reordering) { ColonistBar colonistBar = Find.ColonistBar; + float alpha = ApplyEntryInAnotherMapAlphaFactor(pawnMap, colonistBar.GetEntryRectAlpha(rect)); + + Rect pawnBackgroundSize = rect.ExpandedBy(2.5f); + + if (reordering) { + alpha *= 0.5f; + } + Color color = new Color(1f, 1f, 1f, alpha); + GUI.color = color; + GUI.DrawTexture(rect, ColonistBar.BGTex); + if (colonist.needs != null && colonist.needs.mood != null) { + Rect position = pawnBackgroundSize.ContractedBy(2f); + float value = position.height * colonist.needs.mood.CurLevelPercentage; + position.yMin = position.yMax - value; + position.height = value; + + + float statValue = colonist.GetStatValue(StatDefOf.MentalBreakThreshold, true); + + float currentMoodLevel = colonist.needs.mood.CurLevel; + + + // Extreme break threshold + if (currentMoodLevel <= statValue) { + GUI.DrawTexture(position, Main.extremeBreakTex); + } + // Major break threshold + else if (currentMoodLevel <= statValue + 0.15f) { + GUI.DrawTexture(position, Main.majorBreakTex); + } + // Minor break threshold + else if (currentMoodLevel <= statValue + 0.3f) { + GUI.DrawTexture(position, Main.minorBreakTex); + } + // Neutral + else if (currentMoodLevel <= 0.65f) { + GUI.DrawTexture(position, Main.neutralTex); + } + // Content + else if (currentMoodLevel <= 0.9f) { + GUI.DrawTexture(position, Main.contentTex); + + } + // Happy + else { + GUI.DrawTexture(position, Main.happyTex); + } + + } + if (highlight) { + int thickness = (rect.width > 22f) ? 3 : 2; + GUI.color = Color.white; + Widgets.DrawBox(rect, thickness); + GUI.color = color; + } + Rect rect2 = rect.ContractedBy(-2f * colonistBar.Scale); + bool flag = (!colonist.Dead) ? Find.Selector.SelectedObjects.Contains(colonist) : Find.Selector.SelectedObjects.Contains(colonist.Corpse); + if (flag && !WorldRendererUtility.WorldRenderedNow) { + Main.drawSelectionOverlayOnGUIMethod.Invoke(__instance, new object[] { colonist, rect2 }); + } else if (WorldRendererUtility.WorldRenderedNow && colonist.IsCaravanMember() && Find.WorldSelector.IsSelected(colonist.GetCaravan())) { + //this.DrawCaravanSelectionOverlayOnGUI(colonist.GetCaravan(), rect2); + Main.drawCaravanSelectionOverlayOnGUIMethod.Invoke(__instance, new object[] { colonist.GetCaravan(), rect2 }); + } + //GUI.DrawTexture(this.GetPawnTextureRect(rect.position), PortraitsCache.Get(colonist, ColonistBarColonistDrawer.PawnTextureSize, ColonistBarColonistDrawer.PawnTextureCameraOffset, 1.28205f)); + + GUI.DrawTexture(__instance.GetPawnTextureRect(rect.position), PortraitsCache.Get(colonist, ColonistBarColonistDrawer.PawnTextureSize, ColonistBarColonistDrawer.PawnTextureCameraOffset, 1.28205f)); + + + + + GUI.color = new Color(1f, 1f, 1f, alpha * 0.8f); + //__instance.DrawIcons(rect, colonist); + Main.drawIconsMethod.Invoke(__instance, new object[] { rect, colonist }); + GUI.color = color; + if (colonist.Dead) { + GUI.DrawTexture(rect, (Texture)Main.deadColonistTexField.GetValue(__instance)); + } + float num3 = 4f * colonistBar.Scale; + Vector2 pos = new Vector2(rect.center.x, rect.yMax - num3); + GenMapUI.DrawPawnLabel(colonist, pos, alpha, rect.width + colonistBar.SpaceBetweenColonistsHorizontal - 2f, (Dictionary)Main.pawnLabelsCacheField.GetValue(__instance), GameFont.Tiny, true, true); + Text.Font = GameFont.Small; + GUI.color = Color.white; + + /*ColonistBar colonistBar = Find.ColonistBar; float entryRectAlpha = colonistBar.GetEntryRectAlpha(rect); entryRectAlpha = ApplyEntryInAnotherMapAlphaFactor(pawnMap, entryRectAlpha); @@ -187,7 +274,7 @@ public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, r (Dictionary)Main.pawnLabelsCacheField.GetValue(__instance), GameFont.Tiny, true, true); Text.Font = GameFont.Small; - GUI.color = Color.white; + GUI.color = Color.white;*/ return false; } From 9d73599aa1b74a1fe519a6cec412b98220c8df3a Mon Sep 17 00:00:00 2001 From: Peter Kersbergen Date: Sat, 8 Sep 2018 22:42:34 +0100 Subject: [PATCH 5/6] Cleaned up the code. --- Source/ColoredMoodBar/ColoredMoodBar.csproj | 4 +- Source/ColoredMoodBar/HarmonyPatch.cs | 116 +------------------- 2 files changed, 4 insertions(+), 116 deletions(-) diff --git a/Source/ColoredMoodBar/ColoredMoodBar.csproj b/Source/ColoredMoodBar/ColoredMoodBar.csproj index b646331..0881e7b 100644 --- a/Source/ColoredMoodBar/ColoredMoodBar.csproj +++ b/Source/ColoredMoodBar/ColoredMoodBar.csproj @@ -35,7 +35,7 @@ D:\dev\RimWorld Libs\Release\0Harmony.dll - E:\Steam Bibliothek\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll + G:\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False @@ -45,7 +45,7 @@ - E:\Steam Bibliothek\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.dll + G:\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.dll False diff --git a/Source/ColoredMoodBar/HarmonyPatch.cs b/Source/ColoredMoodBar/HarmonyPatch.cs index e2a6154..948c1fd 100644 --- a/Source/ColoredMoodBar/HarmonyPatch.cs +++ b/Source/ColoredMoodBar/HarmonyPatch.cs @@ -144,22 +144,15 @@ public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, r GUI.color = color; } Rect rect2 = rect.ContractedBy(-2f * colonistBar.Scale); - bool flag = (!colonist.Dead) ? Find.Selector.SelectedObjects.Contains(colonist) : Find.Selector.SelectedObjects.Contains(colonist.Corpse); - if (flag && !WorldRendererUtility.WorldRenderedNow) { + bool notdeadandselected = (!colonist.Dead) ? Find.Selector.SelectedObjects.Contains(colonist) : Find.Selector.SelectedObjects.Contains(colonist.Corpse); + if (notdeadandselected && !WorldRendererUtility.WorldRenderedNow) { Main.drawSelectionOverlayOnGUIMethod.Invoke(__instance, new object[] { colonist, rect2 }); } else if (WorldRendererUtility.WorldRenderedNow && colonist.IsCaravanMember() && Find.WorldSelector.IsSelected(colonist.GetCaravan())) { - //this.DrawCaravanSelectionOverlayOnGUI(colonist.GetCaravan(), rect2); Main.drawCaravanSelectionOverlayOnGUIMethod.Invoke(__instance, new object[] { colonist.GetCaravan(), rect2 }); } - //GUI.DrawTexture(this.GetPawnTextureRect(rect.position), PortraitsCache.Get(colonist, ColonistBarColonistDrawer.PawnTextureSize, ColonistBarColonistDrawer.PawnTextureCameraOffset, 1.28205f)); - GUI.DrawTexture(__instance.GetPawnTextureRect(rect.position), PortraitsCache.Get(colonist, ColonistBarColonistDrawer.PawnTextureSize, ColonistBarColonistDrawer.PawnTextureCameraOffset, 1.28205f)); - - - GUI.color = new Color(1f, 1f, 1f, alpha * 0.8f); - //__instance.DrawIcons(rect, colonist); Main.drawIconsMethod.Invoke(__instance, new object[] { rect, colonist }); GUI.color = color; if (colonist.Dead) { @@ -171,111 +164,6 @@ public static bool Prefix(ColonistBarColonistDrawer __instance, ref Rect rect, r Text.Font = GameFont.Small; GUI.color = Color.white; - /*ColonistBar colonistBar = Find.ColonistBar; - float entryRectAlpha = colonistBar.GetEntryRectAlpha(rect); - entryRectAlpha = ApplyEntryInAnotherMapAlphaFactor(pawnMap, entryRectAlpha); - - bool flag = (!colonist.Dead) ? Find.Selector.SelectedObjects.Contains(colonist) : Find.Selector.SelectedObjects.Contains(colonist.Corpse); - Color color = new Color(1f, 1f, 1f, entryRectAlpha); - - //pawn image background size - Rect pawnBackgroundSize = rect.ExpandedBy(2.5f); - //pawnBackgroundSize.width += 5f; - //pawn image size - const float newSizeVal = 0f; - - - GUI.color = color; - GUI.DrawTexture(pawnBackgroundSize, ColonistBar.BGTex); - - if (colonist.needs != null && colonist.needs.mood != null) { - Rect position = pawnBackgroundSize.ContractedBy(2f); - float num = position.height * colonist.needs.mood.CurLevelPercentage; - position.yMin = position.yMax - num; - position.height = num; - - - float statValue = colonist.GetStatValue(StatDefOf.MentalBreakThreshold, true); - - float currentMoodLevel = colonist.needs.mood.CurLevel; - - - // Extreme break threshold - if (currentMoodLevel <= statValue) { - GUI.DrawTexture(position, Main.extremeBreakTex); - } - // Major break threshold - else if (currentMoodLevel <= statValue + 0.15f) { - GUI.DrawTexture(position, Main.majorBreakTex); - } - // Minor break threshold - else if (currentMoodLevel <= statValue + 0.3f) { - GUI.DrawTexture(position, Main.minorBreakTex); - } - // Neutral - else if (currentMoodLevel <= 0.65f) { - GUI.DrawTexture(position, Main.neutralTex); - } - // Content - else if (currentMoodLevel <= 0.9f) { - GUI.DrawTexture(position, Main.contentTex); - - } - // Happy - else { - GUI.DrawTexture(position, Main.happyTex); - } - - } - - //Selection rectangle size - Rect rect2 = rect.ContractedBy(-6f * colonistBar.Scale); - - if (flag && !WorldRendererUtility.WorldRenderedNow) { - Main.drawSelectionOverlayOnGUIMethod.Invoke(__instance, new object[] { colonist, rect2 }); - - } else if (WorldRendererUtility.WorldRenderedNow && colonist.IsCaravanMember() && Find.WorldSelector.IsSelected(colonist.GetCaravan())) { - Main.drawCaravanSelectionOverlayOnGUIMethod.Invoke(__instance, new object[] { colonist.GetCaravan(), rect2 }); - - } - - - Rect pawnTexturePosition = __instance.GetPawnTextureRect(new Vector2(rect.x, rect.y)).ContractedBy(newSizeVal);//(Rect) Main.getPawnTextureRectMethod.Invoke(__instance, new object[] { rect.x, rect.y }); - pawnTexturePosition.y += newSizeVal-1f; - - if (pawnBackgroundSize.width % 2 == 0) { - pawnTexturePosition.x -= 1f; - //Log.Message("[ColorCodedMoodBar] EVEN " + pawnBackgroundSize.width); - } else { - //Log.Message("[ColorCodedMoodBar] UNEVEN " + pawnBackgroundSize.width); - pawnTexturePosition.x -= 0.25f; - } - - - - GUI.DrawTexture(pawnTexturePosition, PortraitsCache.Get(colonist, ColonistBarColonistDrawer.PawnTextureSize, - ColonistBarColonistDrawer.PawnTextureCameraOffset, - 1.28205f)); - - - GUI.color = new Color(1f, 1f, 1f, entryRectAlpha * 0.8f); - Main.drawIconsMethod.Invoke(__instance, new object[] { rect, colonist }); - - GUI.color = color; - - if (colonist.Dead) { - GUI.DrawTexture(rect, (Texture)Main.deadColonistTexField.GetValue(null)); - } - - float num2 = 4f * colonistBar.Scale; - Vector2 pos = new Vector2(rect.center.x, rect.yMax - num2); - GenMapUI.DrawPawnLabel(colonist, pos, entryRectAlpha, - rect.width + colonistBar.SpaceBetweenColonistsHorizontal - 2f, - (Dictionary)Main.pawnLabelsCacheField.GetValue(__instance), - GameFont.Tiny, true, true); - Text.Font = GameFont.Small; - GUI.color = Color.white;*/ - return false; } } From 2e7afd29aafefa67a17c78a45ab7e5ea944b4e07 Mon Sep 17 00:00:00 2001 From: EvilTactician <39692252+EvilTactician@users.noreply.github.com> Date: Thu, 13 Sep 2018 22:38:51 +0100 Subject: [PATCH 6/6] Update README Updated README extensively. --- README.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 16fdd16..1e09d48 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,27 @@ # ColorCodedMoodBar A RimWorld mod to color code each pawn's mood bar within the colonist bar based on their current mood. A red mood bar indicates the pawn is at or under their extreme mental break threshold, orange indicates the major mental break threshold, yellow indicates the minor mental break threshold, and blue indicates the pawn is not under any mental break threshold. +The bar will turn green if the pawn is particularly happy. ## Known Bugs/Limitations/Requirements: -- None +- Mod incompatibilities: +- "Advanced biomes" and "Rimstory" should be loaded after this mod. Otherwise there might be some conflicts (Thx 2 Xerberus86) ## Updates - Sep 16 2017: Initial release on GitHub and closed release on Steam - Sep 17 2017: Open release on Steam - Nov 18 2017: Updated for RimWord version 0.18.1722, and added content and happy colors. -- Sep 03 2018: Update for Rimworld version 0.19.* and doing some bufgixes. +- Sep 03 2018: Update for Rimworld version 0.19.* and doing some bugfixes. ## Author/Mod Team -- PorqueNoLosDos -- fyarn +- semTex (Update B19) +- PorqueNoLosDos (Update B18) +- fyarn (Original Author) ## Download -- Github (with Source): https://github.com/bcooper94/ColorCodedMoodBar -- Direct: https://github.com/bcooper94/ColorCodedMoodBar/archive/master.zip -- Steam: https://steamcommunity.com/sharedfiles/filedetails/?id=1136819681 +- Github (with Source): https://github.com/resTive2k12/ColorCodedMoodBar +- Direct: https://github.com/resTive2k12/ColorCodedMoodBar/archive/master.zip +- Steam: https://steamcommunity.com/sharedfiles/filedetails/?id=1501832876 ## How to install (non-Steam users): - Unzip the contents and place them in your RimWorld/Mods folder.