private void InitButtons() { buttonList.Add(new DoorButtonInfo { button = openButton, state = Door.ControlState.Opened, currentString = (string)UI.UISIDESCREENS.DOOR_TOGGLE_SIDE_SCREEN.OPEN, pendingString = (string)UI.UISIDESCREENS.DOOR_TOGGLE_SIDE_SCREEN.OPEN_PENDING }); buttonList.Add(new DoorButtonInfo { button = autoButton, state = Door.ControlState.Auto, currentString = (string)UI.UISIDESCREENS.DOOR_TOGGLE_SIDE_SCREEN.AUTO, pendingString = (string)UI.UISIDESCREENS.DOOR_TOGGLE_SIDE_SCREEN.AUTO_PENDING }); buttonList.Add(new DoorButtonInfo { button = closeButton, state = Door.ControlState.Locked, currentString = (string)UI.UISIDESCREENS.DOOR_TOGGLE_SIDE_SCREEN.CLOSE, pendingString = (string)UI.UISIDESCREENS.DOOR_TOGGLE_SIDE_SCREEN.CLOSE_PENDING }); foreach (DoorButtonInfo button in buttonList) { DoorButtonInfo info = button; info.button.onClick += delegate { target.QueueStateChange(info.state); Refresh(); }; } }
private void Refresh() { string text = null; string text2 = null; if (buttonList == null || buttonList.Count == 0) { InitButtons(); } foreach (DoorButtonInfo button in buttonList) { DoorButtonInfo current = button; if (target.CurrentState == current.state && target.RequestedState == current.state) { current.button.GetComponent <ImageToggleStateThrobber>().enabled = false; current.button.isOn = true; KImage[] componentsInChildren = current.button.GetComponentsInChildren <KImage>(); foreach (KImage kImage in componentsInChildren) { kImage.ColorState = KImage.ColorSelector.Active; } ImageToggleState[] componentsInChildren2 = current.button.GetComponentsInChildren <ImageToggleState>(); foreach (ImageToggleState imageToggleState in componentsInChildren2) { imageToggleState.SetActive(); imageToggleState.SetActive(); } text = current.currentString; } else if (target.RequestedState == current.state) { current.button.GetComponent <ImageToggleStateThrobber>().enabled = true; current.button.isOn = true; text2 = current.pendingString; KImage[] componentsInChildren3 = current.button.GetComponentsInChildren <KImage>(); foreach (KImage kImage2 in componentsInChildren3) { kImage2.ColorState = KImage.ColorSelector.Active; } } else { current.button.GetComponent <ImageToggleStateThrobber>().enabled = false; KImage[] componentsInChildren4 = current.button.GetComponentsInChildren <KImage>(); foreach (KImage kImage3 in componentsInChildren4) { kImage3.ColorState = KImage.ColorSelector.Inactive; } current.button.isOn = false; ImageToggleState[] componentsInChildren5 = current.button.GetComponentsInChildren <ImageToggleState>(); foreach (ImageToggleState imageToggleState2 in componentsInChildren5) { imageToggleState2.SetInactive(); imageToggleState2.SetInactive(); } } } string text3 = text; if (text2 != null) { text3 = string.Format(UI.UISIDESCREENS.DOOR_TOGGLE_SIDE_SCREEN.PENDING_FORMAT, text3, text2); } if ((Object)accessTarget != (Object)null && !accessTarget.Online) { text3 = string.Format(UI.UISIDESCREENS.DOOR_TOGGLE_SIDE_SCREEN.ACCESS_FORMAT, text3, UI.UISIDESCREENS.DOOR_TOGGLE_SIDE_SCREEN.ACCESS_OFFLINE); } if (target.building.Def.PrefabID == POIDoorInternalConfig.ID) { text3 = UI.UISIDESCREENS.DOOR_TOGGLE_SIDE_SCREEN.POI_INTERNAL; foreach (DoorButtonInfo button2 in buttonList) { DoorButtonInfo current2 = button2; current2.button.gameObject.SetActive(false); } } else { foreach (DoorButtonInfo button3 in buttonList) { DoorButtonInfo current3 = button3; bool active = current3.state != 0 || target.allowAutoControl; current3.button.gameObject.SetActive(active); } } description.text = text3; description.gameObject.SetActive(!string.IsNullOrEmpty(text3)); ContentContainer.SetActive(!target.isSealed); }