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 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 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); } }