private void RoomFlagsCheckedListBox_ItemCheck(object sender, ItemCheckEventArgs e) { if (CurrentRoom == null) { return; } uint flags = 0; for (int i = 0; i < RoomFlagsCheckedListBox.Items.Count; i++) { if (e.Index == i) { if (e.NewValue == CheckState.Checked) { flags += (uint)(1 << i); } } else { if (RoomFlagsCheckedListBox.GetItemChecked(i)) { flags += (uint)(1 << i); } } } RoomFlagsTextBox.Text = flags.ToString(); lock (ProjectForm.ProjectSyncRoot) { if (CurrentRoom._Data.flags != flags) { CurrentRoom._Data.flags = flags; ProjectForm.SetYtypHasChanged(true); } } }
private void RoomFlagsTextBox_TextChanged(object sender, EventArgs e) { if (CurrentRoom == null) { return; } uint.TryParse(RoomFlagsTextBox.Text, out uint flags); for (int i = 0; i < RoomFlagsCheckedListBox.Items.Count; i++) { var c = ((flags & (1u << i)) > 0); RoomFlagsCheckedListBox.SetItemCheckState(i, c ? CheckState.Checked : CheckState.Unchecked); } lock (ProjectForm.ProjectSyncRoot) { if (CurrentRoom._Data.flags != flags) { CurrentRoom._Data.flags = flags; ProjectForm.SetYtypHasChanged(true); } } }