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);
                }
            }));
        }
Exemple #5
0
 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);
Exemple #11
0
 protected override void UnassignBuilding(Building_ReligionBuilding building)
 {
     parentBuilding = null;
 }
Exemple #12
0
 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);
 }