Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Languages/English/Keyed/Manager_Keyed.xml
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,10 @@
<FML.TrainYoung>Train young animals</FML.TrainYoung>
<FML.SendToSlaughterArea>Restrict animals marked for slaughter</FML.SendToSlaughterArea>
<FML.SendToSlaughterArea.Tip>Restrict animals designated for slaughtering to a specific area</FML.SendToSlaughterArea.Tip>
<FML.SendToMilkingArea>Restrict animals ready to be milked</FML.SendToMilkingArea>
<FML.SendToMilkingArea.Tip>Restrict animals with milk fullness above 94% to a specific area.</FML.SendToMilkingArea.Tip>
<FML.SendToShearingArea>Restrict animals ready to be sheared</FML.SendToShearingArea>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"shearing fullness" --> "wool growth"?

<FML.SendToShearingArea.Tip>Restrict animals with shearing fullness above 94% to a specific area</FML.SendToShearingArea.Tip>
<FM.Livestock.TargetCountsHeader>Target counts</FM.Livestock.TargetCountsHeader>
<FM.Livestock.AreaRestrictionsHeader>Area restrictions</FM.Livestock.AreaRestrictionsHeader>
<FM.Livestock.TrainingHeader>Training</FM.Livestock.TrainingHeader>
Expand Down
40 changes: 40 additions & 0 deletions Source/ManagerJobs/ManagerJob_Livestock.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,13 @@ public class ManagerJob_Livestock : ManagerJob
public List<Area> RestrictArea;
public bool RestrictToArea;
public bool SendToSlaughterArea;
public bool SendToMilkingArea;
public bool SendToShearingArea;
public bool SendToTrainingArea;
public bool SetFollow;
public Area SlaughterArea;
public Area MilkArea;
public Area ShearArea;
public Area TameArea;
public Pawn Trainer;
public MasterMode Trainers;
Expand Down Expand Up @@ -76,6 +80,14 @@ public ManagerJob_Livestock( Manager manager ) : base( manager )
SendToSlaughterArea = false;
SlaughterArea = null;

// set up milking area
SendToMilkingArea = false;
MilkArea = null;

// set up shearing area
SendToShearingArea = false;
ShearArea = null;

// set up training area
SendToTrainingArea = false;
TrainingArea = null;
Expand Down Expand Up @@ -137,6 +149,8 @@ public override void ExposeData()
// settings, references first!
Scribe_References.Look( ref TameArea, "TameArea" );
Scribe_References.Look( ref SlaughterArea, "SlaughterArea" );
Scribe_References.Look( ref MilkArea, "MilkArea" );
Scribe_References.Look( ref ShearArea, "ShearArea" );
Scribe_References.Look( ref TrainingArea, "TrainingArea" );
Scribe_References.Look( ref Master, "Master" );
Scribe_References.Look( ref Trainer, "Trainer" );
Expand All @@ -150,6 +164,8 @@ public override void ExposeData()
Scribe_Values.Look( ref ButcherBonded, "ButcherBonded" );
Scribe_Values.Look( ref RestrictToArea, "RestrictToArea" );
Scribe_Values.Look( ref SendToSlaughterArea, "SendToSlaughterArea" );
Scribe_Values.Look( ref SendToMilkingArea, "SendToMilkingArea" );
Scribe_Values.Look( ref SendToShearingArea, "SendToShearingArea" );
Scribe_Values.Look( ref SendToTrainingArea, "SendToTrainingArea" );
Scribe_Values.Look( ref TryTameMore, "TryTameMore" );
Scribe_Values.Look( ref SetFollow, "SetFollow", true );
Expand Down Expand Up @@ -221,6 +237,30 @@ private void DoAreaRestrictions( ref bool actionTaken )
p.playerSettings.AreaRestriction = SlaughterArea;
}

// milking
else if ( SendToMilkingArea &&
p.GetComp<CompMilkable>() != null &&
p.GetComp<CompMilkable>().Fullness > 0.94 )
{
if (p.playerSettings.AreaRestriction != MilkArea)
{
actionTaken = true;
p.playerSettings.AreaRestriction = MilkArea;
}
}

// shearing
else if ( SendToShearingArea &&
p.GetComp<CompShearable>() != null &&
p.GetComp<CompShearable>().Fullness > 0.94 )
{
if (p.playerSettings.AreaRestriction != ShearArea)
{
actionTaken = true;
p.playerSettings.AreaRestriction = ShearArea;
}
}

// training
else if ( SendToTrainingArea && p.training.NextTrainableToTrain() != null )
{
Expand Down
36 changes: 36 additions & 0 deletions Source/ManagerTabs/ManagerTab_Livestock.cs
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,42 @@ private float DrawAreaRestrictionsSection( Vector2 pos, float width )
color: Color.grey );
}

if (_selectedCurrent.Trigger.pawnKind.Milkable())
{
var sendToMilkingAreaRect = new Rect(pos.x, pos.y, width, ListEntryHeight);
pos.y += ListEntryHeight;
DrawToggle(sendToMilkingAreaRect,
"FML.SendToMilkingArea".Translate(),
"FML.SendToMilkingArea.Tip".Translate(),
ref _selectedCurrent.SendToMilkingArea);

if (_selectedCurrent.SendToMilkingArea)
{
var milkingAreaRect = new Rect(pos.x, pos.y, width, ListEntryHeight);
AreaAllowedGUI.DoAllowedAreaSelectors(milkingAreaRect, ref _selectedCurrent.MilkArea,
manager);
pos.y += ListEntryHeight;
}
}

if (_selectedCurrent.Trigger.pawnKind.Shearable())
{
var sendToShearingAreaRect = new Rect(pos.x, pos.y, width, ListEntryHeight);
pos.y += ListEntryHeight;
DrawToggle(sendToShearingAreaRect,
"FML.SendToShearingArea".Translate(),
"FML.SendToShearingArea.Tip".Translate(),
ref _selectedCurrent.SendToShearingArea);

if (_selectedCurrent.SendToShearingArea)
{
var shearingAreaRect = new Rect(pos.x, pos.y, width, ListEntryHeight);
AreaAllowedGUI.DoAllowedAreaSelectors(shearingAreaRect, ref _selectedCurrent.ShearArea,
manager);
pos.y += ListEntryHeight;
}
}

var sendToTrainingAreaRect = new Rect( pos.x, pos.y, width, ListEntryHeight );
pos.y += ListEntryHeight;
if ( _selectedCurrent.Training.Any )
Expand Down