public void SendAssigningRequest(Building_ReligionBuilding toBuilding, AssigningRequestType requestType) { switch (requestType) { case AssigningRequestType.Add: { if (toBuilding.AssigningRequestAccepted(this, requestType)) { AssignBuilding(toBuilding); Notify_BuildingAssigningChanged(); } return; } case AssigningRequestType.Delete: { if (toBuilding.AssigningRequestAccepted(this, requestType)) { UnassignBuilding(toBuilding); Notify_BuildingAssigningChanged(); } return; } } }
private bool AssigningRequestAccepted(Building_ReligionBuilding fromBuilding, AssigningRequestType requestType) { switch (requestType) { case AssigningRequestType.Add: { if (MayAssignBuilding(fromBuilding) && fromBuilding.MayAssignBuilding(this)) { AssignBuilding(fromBuilding); Notify_BuildingAssigningChanged(); return(true); } return(false); } case AssigningRequestType.Delete: { UnassignBuilding(fromBuilding); Notify_BuildingAssigningChanged(); return(true); } default: return(false); } }
public static void TryToUnassignAllBuildings(Building_ReligionBuilding parent) { if (parent.AssignedBuildings.Count() != 0) { parent.UnassignAllBuildingsAndNotify(); Messages.Message("ReligiousBuilgingAssigner_BuildingWasUnassigned".Translate(), MessageTypeDefOf.NeutralEvent); } }
public static void SelectChild(Building_ReligionBuilding parent) { DebugTools.curTool = new DebugTool("ReligiousBuilgingAssigner_SelectABuilding".Translate(), (Action)(() => { foreach (Thing thing in Find.CurrentMap.thingGrid.ThingsAt(UI.MouseCell()).ToList <Thing>()) { if (thing is Building_ReligionBuilding child) { if (parent == child) { TryToUnassignAllBuildings(parent); SelectParent(); return; } if (child.AvaliableToAssign) { TryToAssignBuilding(parent, child); SelectParent(); return; } else { Messages.Message("ReligiousBuilgingAssigner_BuildingIsNotCompleteToAssign".Translate(), MessageTypeDefOf.NeutralEvent); } DebugTools.curTool = null; } } }), (Action)(() => { foreach (Building_ReligionBuilding building in Find.CurrentMap.listerBuildings.AllBuildingsColonistOfClass <Building_ReligionBuilding>()) { if (building != parent) { if (parent.MayAssignBuilding(building) && building.MayAssignBuilding(parent)) { Widgets.DrawTextureFitted(new Rect(building.Position.ToUIPosition() - new Vector2(10, 10), new Vector2(20, 20)), GraphicsCache.CheckboxOnTex, 1); } else { Widgets.DrawTextureFitted(new Rect(building.Position.ToUIPosition() - new Vector2(10, 10), new Vector2(20, 20)), GraphicsCache.CheckboxOffTex, 1); } } } foreach (Building_ReligionBuilding assigned in parent.AssignedBuildings) { Widgets.DrawLine(parent.Position.ToUIPosition(), assigned.Position.ToUIPosition(), Color.green, 2f); } if (UI.MouseCell().InBounds(Find.CurrentMap)) { Widgets.DrawLine(parent.Position.ToUIPosition(), UI.MouseCell().ToUIPosition(), Color.white, 2f); } })); }
public override bool MayAssignBuilding(Building_ReligionBuilding religionBuilding) { if (religionBuilding is Building_ReligiousBuildingMain && parentBuilding == null) { return(true); } else { return(false); } }
private bool DoReligionAllowsBuildings(Building_ReligionBuilding building) { if (assignedReligion != null && assignedReligion.GetSettings <ReligionSettings_AllowedBuildings>(SettingsTagDefOf.AllowedBuildingsTag) != null) { if (assignedReligion.GetSettings <ReligionSettings_AllowedBuildings>(SettingsTagDefOf.AllowedBuildingsTag).AllowedBuildings.Any(x => x == building.def)) { return(true); } } return(false); }
public static void TryToAssignBuilding(Building_ReligionBuilding parent, Building_ReligionBuilding child) { if (parent.MayAssignBuilding(child) && child.MayAssignBuilding(parent)) { parent.SendAssigningRequest(child, AssigningRequestType.Add); SoundDefOf.Click.PlayOneShotOnCamera((Map)null); } else { Messages.Message("ReligiousBuilgingAssigner_AssigningIsNotAllowed".Translate(), MessageTypeDefOf.NeutralEvent); } }
public override bool MayAssignBuilding(Building_ReligionBuilding religionBuilding) { if (religionBuilding is Building_ReligiousBuildingFacility && DoReligionAllowsBuildings(religionBuilding) && !assignedBuildings.Contains(religionBuilding)) { return(true); } else { return(false); } }
protected abstract void UnassignBuilding(Building_ReligionBuilding building);
public abstract bool MayAssignBuilding(Building_ReligionBuilding building);
protected override void UnassignBuilding(Building_ReligionBuilding building) { parentBuilding = null; }
protected override void AssignBuilding(Building_ReligionBuilding religionBuilding) { parentBuilding = religionBuilding; }
protected override void UnassignBuilding(Building_ReligionBuilding building) { assignedBuildings.Remove(building); }
protected override void AssignBuilding(Building_ReligionBuilding religionBuilding) { assignedBuildings.Add(religionBuilding); }