public void Draw(Rect rect, ThingWithComps ownerPawn)
{
Text.Font = GameFont.Small;
string value = "-";
switch (oType)
{
case objectType.Stat:
Text.Anchor = TextAnchor.MiddleCenter;
StatDef stat = (StatDef)displayObject;
string statValue = (stat.ValueToString(ownerPawn.GetStatValue((StatDef)displayObject, true)));
Widgets.Label(rect, statValue);
if (Mouse.IsOver(rect))
{
GUI.DrawTexture(rect, TexUI.HighlightTex);
}
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine(stat.LabelCap);
stringBuilder.AppendLine();
stringBuilder.AppendLine(stat.description);
TooltipHandler.TipRegion(rect, new TipSignal(stringBuilder.ToString(), rect.GetHashCode()));
break;
case objectType.Skill:
if ((ownerPawn is Pawn) && (ownerPawn as Pawn).RaceProps.Humanlike) DrawSkill(rect, ownerPawn as Pawn);
break;
case objectType.Need:
if (ownerPawn is Pawn) DrawNeed(rect, ownerPawn as Pawn);
break;
case objectType.MentalState:
Text.Font = GameFont.Tiny;
Text.Anchor = TextAnchor.MiddleCenter;
if (ownerPawn is Pawn && (ownerPawn as Pawn).MentalState != null) {
string ms = ((ownerPawn as Pawn).MentalState.InspectLine);
Widgets.Label(rect, ms);
if (Mouse.IsOver(rect))
{
GUI.DrawTexture(rect, TexUI.HighlightTex);
}
}
Text.Font = GameFont.Medium;
break;
case objectType.Age:
Text.Anchor = TextAnchor.MiddleCenter;
string ageValue = ((ownerPawn as Pawn).ageTracker.AgeBiologicalYears.ToString());
Widgets.Label(rect, ageValue);
if (Mouse.IsOver(rect))
{
GUI.DrawTexture(rect, TexUI.HighlightTex);
}
break;
case objectType.Gear:
DrawGear(rect, ownerPawn);
break;
case objectType.ControlPrisonerGetsFood:
if (ownerPawn is Pawn)
{
if (Mouse.IsOver(rect))
{
GUI.DrawTexture(rect, TexUI.HighlightTex);
}
bool getsFood = (ownerPawn as Pawn).guest.GetsFood;
Widgets.CheckboxLabeled(new Rect(rect.x + 8f, rect.y + 3f, 27f, 27f), "", ref getsFood, false);
(ownerPawn as Pawn).guest.GetsFood = getsFood;
}
break;
case objectType.ControlPrisonerInteraction:
if (ownerPawn is Pawn)
{
if (Mouse.IsOver(rect))
{
GUI.DrawTexture(rect, TexUI.HighlightTex);
}
float x = 8f;
GUI.BeginGroup(rect);
IEnumerator enumerator = Enum.GetValues(typeof(PrisonerInteractionMode)).GetEnumerator();
try
{
while (enumerator.MoveNext())
{
PrisonerInteractionMode prisonerInteractionMode = (PrisonerInteractionMode)((byte)enumerator.Current);
if (Widgets.RadioButton(new Vector2(x, 3f), (ownerPawn as Pawn).guest.interactionMode == prisonerInteractionMode))
{
(ownerPawn as Pawn).guest.interactionMode = prisonerInteractionMode;
}
TooltipHandler.TipRegion(new Rect(x, 0f, 30f, 30f), new TipSignal(prisonerInteractionMode.GetLabel()));
x += 30f;
}
}
finally
{
IDisposable disposable = enumerator as IDisposable;
if (disposable != null)
{
disposable.Dispose();
}
}
GUI.EndGroup();
}
break;
case objectType.ControlMedicalCare:
if (ownerPawn is Pawn) MedicalCareSetter(rect, ref (ownerPawn as Pawn).playerSettings.medCare);
break;
case objectType.AnimalMilkFullness:
Text.Anchor = TextAnchor.MiddleCenter;
if (ownerPawn is Pawn && ((Pawn)ownerPawn).ageTracker.CurLifeStage.milkable)
{
var comp = ((Pawn)ownerPawn).AllComps.Where<ThingComp>(x => x is CompMilkable).FirstOrDefault();
if(comp != null)
value = ((CompMilkable)comp).Fullness.ToStringPercent();
}
Widgets.Label(rect, value);
break;
case objectType.AnimalWoolGrowth:
Text.Anchor = TextAnchor.MiddleCenter;
if (ownerPawn is Pawn && ((Pawn)ownerPawn).ageTracker.CurLifeStage.shearable)
{
var comp = ((Pawn)ownerPawn).AllComps.Where<ThingComp>(x => x is CompShearable).FirstOrDefault();
if (comp != null)
value = ((CompShearable)comp).Fullness.ToStringPercent();
}
Widgets.Label(rect, value);
break;
case objectType.CurrentJob:
if(ownerPawn is Pawn)
{
string text = ((Pawn)ownerPawn).jobs.curDriver.GetReport();
Text.Anchor = TextAnchor.MiddleLeft;
Rect tRect = new Rect(rect.xMin + 2, rect.yMin + 3, rect.width - 2, rect.height);
GenText.SetTextSizeToFit(text, tRect);
if (Text.Font == GameFont.Tiny)
Widgets.Label(tRect, text);
else
{
Rect sRect = new Rect(rect.xMin + 2, rect.yMin, rect.width - 2, rect.height);
Widgets.Label(sRect, text);
}
if (Mouse.IsOver(rect))
{
GUI.DrawTexture(rect, TexUI.HighlightTex);
}
}
break;
}
}