mirror of
https://gitgud.io/c0ffeeeeeeee/rimworld-animations.git
synced 2024-08-15 00:43:45 +00:00
Bugfixing involving animation reordering
This commit is contained in:
parent
a458f3b83f
commit
3ab5a96ce5
4 changed files with 55 additions and 7 deletions
Binary file not shown.
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Patch>
|
||||
<!--
|
||||
<Operation Class="PatchOperationSequence">
|
||||
<success>Always</success>
|
||||
<operations>
|
||||
<li Class="PatchOperationAdd">
|
||||
<success>Always</success>
|
||||
<xpath>Defs/OffsetDef[defName="OffsetDefNameHere"]/Offsets</xpath>
|
||||
<value>
|
||||
<li Class="Rimworld_Animations.AnimationOffset_BodyType">
|
||||
<races>
|
||||
<li>YourAlienRace</li>
|
||||
</races>
|
||||
<offsets>
|
||||
<li>
|
||||
<bodyType>Thin</bodyType>
|
||||
<offset>(0, 0, 0)</offset>
|
||||
</li>
|
||||
</offsets>
|
||||
</li>
|
||||
</value>
|
||||
</li>
|
||||
</operations>
|
||||
</Operation>
|
||||
-->
|
||||
</Patch>
|
|
@ -36,10 +36,9 @@ namespace Rimworld_Animations
|
|||
return false;
|
||||
}
|
||||
|
||||
public int Priority(List<Pawn> actors, out int reorder)
|
||||
public int Priority(List<Pawn> actors)
|
||||
{
|
||||
int priority = -999999999;
|
||||
reorder = 0;
|
||||
|
||||
foreach (BaseGroupAnimationContext context in contexts)
|
||||
{
|
||||
|
@ -47,7 +46,30 @@ namespace Rimworld_Animations
|
|||
{
|
||||
if (context.AnimationPriority() > priority)
|
||||
{
|
||||
//get highest priority context for fitting animation, and its reorder
|
||||
//get highest priority context for fitting animation
|
||||
priority = context.AnimationPriority();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return priority;
|
||||
|
||||
}
|
||||
|
||||
public int Reorder(List<Pawn> actors)
|
||||
{
|
||||
int priority = -999999999;
|
||||
int reorder = 0;
|
||||
|
||||
foreach (BaseGroupAnimationContext context in contexts)
|
||||
{
|
||||
if (context.CanAnimationBeUsed(actors, numActors))
|
||||
{
|
||||
if (context.AnimationPriority() > priority)
|
||||
{
|
||||
//get the reorder for highest priority context for fitting animation
|
||||
priority = context.AnimationPriority();
|
||||
reorder = context.AnimationReorder();
|
||||
|
||||
|
@ -56,7 +78,7 @@ namespace Rimworld_Animations
|
|||
}
|
||||
}
|
||||
|
||||
return priority;
|
||||
return reorder;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -88,16 +88,15 @@ namespace Rimworld_Animations {
|
|||
// if you find one where it returns canAnimationBeUsed (and reorders),
|
||||
// return that animation
|
||||
|
||||
int reorder2 = 0;
|
||||
|
||||
//find all, reorder randomly, then find max priority context
|
||||
DefDatabase<GroupAnimationDef>.AllDefsListForReading
|
||||
.FindAll((GroupAnimationDef x) => x.canAnimationBeUsed(participants))
|
||||
.OrderBy(_ => Rand.Int)
|
||||
.TryMaxBy((GroupAnimationDef x) => x.Priority(participants, out reorder2), out GroupAnimationDef result);
|
||||
.TryMaxBy((GroupAnimationDef x) => x.Priority(participants), out GroupAnimationDef result);
|
||||
|
||||
|
||||
reorder = reorder2;
|
||||
reorder = result.Reorder(participants);
|
||||
return result;
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue