예제 #1
0
 public void UpdateOwners()
 {
     foreach (Building_DoorExpanded door in Find.Selector.SelectedObjects.Where(o => o is Building_DoorExpanded && o != parent))
     {
         LockUtility.GetData(door).WantedState.owners.Clear();
         LockUtility.GetData(door).WantedState.owners.AddRange(LockUtility.GetData(parent).WantedState.owners);
         LockUtility.UpdateLockDesignation(door);
     }
     LockUtility.UpdateLockDesignation(parent);
 }
예제 #2
0
 public override void ProcessInput(Event ev)
 {
     if (ev.button == 0)
     {
         SoundDefOf.Click.PlayOneShotOnCamera(null);
         LockUtility.GetData(parent).WantedState.locked = !LockUtility.GetData(parent).WantedState.locked;
         LockUtility.UpdateLockDesignation(parent);
     }
     else if (ev.button == 1)
     {
         SoundDefOf.Click.PlayOneShotOnCamera(null);
         var floatMenu = new FloatMenu(GetMenuOptions());
         Find.WindowStack.Add(floatMenu);
     }
 }
예제 #3
0
 private void UpdateSettings()
 {
     if (SelDoor == null)
     {
         return;
     }
     if (lastSelectedThing == SelThing)
     {
         Data.WantedState.locked  = locked;
         Data.WantedState.mode    = vistitorsAllowed ? LockMode.Allies : LockMode.Colony;
         Data.WantedState.petDoor = petDoor;
         // Owners
         if (Data.NeedChange)
         {
             LockUtility.UpdateLockDesignation(SelDoor);
         }
     }
     else
     {
         OnOpen();
         lastSelectedThing = SelThing;
     }
 }
예제 #4
0
        public List <FloatMenuOption> GetMenuOptions()
        {
            var list = new List <FloatMenuOption>();

            list.Add(new FloatMenuOption(
                         LockUtility.GetData(parent).WantedState.locked ?
                         "Locks_UnlockToggle".Translate() :
                         "Locks_LockToggle".Translate(),
                         new Action(() =>
            {
                bool value = !LockUtility.GetData(parent).WantedState.locked;
                foreach (Building_DoorExpanded door in Find.Selector.SelectedObjects.Where(o => o is Building_DoorExpanded))
                {
                    LockUtility.GetData(door).WantedState.locked = value;
                    LockUtility.UpdateLockDesignation(door);
                }
            })
                         ));
            if (!LockUtility.GetData(parent).WantedState.Private)
            {
                list.Add(new FloatMenuOption(
                             LockUtility.GetData(parent).WantedState.mode == LockMode.Allies ?
                             "Locks_ForbidVisitors".Translate() :
                             "Locks_AllowVisitors".Translate(),
                             new Action(() =>
                {
                    LockMode value;
                    if (LockUtility.GetData(parent).WantedState.mode == LockMode.Allies)
                    {
                        value = LockMode.Colony;
                    }
                    else
                    {
                        value = LockMode.Allies;
                    }
                    foreach (Building_DoorExpanded door in Find.Selector.SelectedObjects.Where(o => o is Building_DoorExpanded))
                    {
                        LockUtility.GetData(door).WantedState.mode = value;
                        LockUtility.UpdateLockDesignation(door);
                    }
                })
                             ));
            }
            if (LockUtility.GetData(parent).WantedState.Private)
            {
                list.Add(new FloatMenuOption(
                             LockUtility.GetData(parent).WantedState.petDoor ?
                             "Locks_RemovePetDoor".Translate() :
                             "Locks_AddPetDoor".Translate(),
                             new Action(() =>
                {
                    bool value = !LockUtility.GetData(parent).WantedState.petDoor;
                    foreach (Building_DoorExpanded door in Find.Selector.SelectedObjects.Where(o => o is Building_DoorExpanded))
                    {
                        LockUtility.GetData(door).WantedState.petDoor = value;
                        LockUtility.UpdateLockDesignation(door);
                    }
                })
                             ));
            }
            list.Add(new FloatMenuOption(
                         "CommandBedSetOwnerLabel".Translate(),
                         new Action(() =>
            {
                Find.WindowStack.Add(new Dialog_AssignBuildingOwner(LockUtility.GetData(parent)));
                foreach (Building_DoorExpanded door in Find.Selector.SelectedObjects.Where(o => o is Building_DoorExpanded))
                {
                    if (door != parent)
                    {
                        LockUtility.GetData(door).WantedState.owners.Clear();
                        LockUtility.GetData(door).WantedState.owners.AddRange(LockUtility.GetData(parent).WantedState.owners);
                    }
                    LockUtility.UpdateLockDesignation(door);
                }
            })
                         ));
            if (LockUtility.GetData(parent).WantedState.Private)
            {
                list.Add(new FloatMenuOption(
                             "Locks_ClearOwners".Translate(),
                             new Action(() =>
                {
                    foreach (Building_DoorExpanded door in Find.Selector.SelectedObjects.Where(o => o is Building_DoorExpanded))
                    {
                        LockUtility.GetData(door).WantedState.owners.Clear();
                        LockUtility.UpdateLockDesignation(door);
                    }
                })
                             ));
            }
            return(list);
        }