private void DoAddStatusItem(StatusItemGroup.Entry status_item, StatusItemCategory category, bool show_immediate = false) { GameObject gameObject = statusItemsFolder; Color color = (status_item.item.notificationType != NotificationType.BadMinor && status_item.item.notificationType != NotificationType.Bad && status_item.item.notificationType != NotificationType.DuplicantThreatening) ? statusItemTextColor_regular : statusItemTextColor_bad; TextStyleSetting style = (category != Db.Get().StatusItemCategories.Main) ? StatusItemStyle_Other : StatusItemStyle_Main; StatusItemEntry statusItemEntry = new StatusItemEntry(status_item, category, StatusItemPrefab, gameObject.transform, ToolTipStyle_Property, color, style, show_immediate, OnStatusItemDestroy); statusItemEntry.SetSprite(status_item.item.sprite); if (category != null) { int num = -1; List <StatusItemEntry> list = oldStatusItems.FindAll((StatusItemEntry e) => e.category == category); foreach (StatusItemEntry item in list) { num = item.GetIndex(); item.Destroy(true); oldStatusItems.Remove(item); } if (category == Db.Get().StatusItemCategories.Main) { num = 0; } if (num != -1) { statusItemEntry.SetIndex(num); } } statusItems.Add(statusItemEntry); }
private void DoRemoveStatusItem(StatusItemGroup.Entry status_item, bool destroy_immediate = false) { int num = 0; while (true) { if (num >= statusItems.Count) { return; } if (statusItems[num].item.item == status_item.item) { break; } num++; } StatusItemEntry statusItemEntry = statusItems[num]; statusItems.RemoveAt(num); oldStatusItems.Add(statusItemEntry); statusItemEntry.Destroy(destroy_immediate); }
private void OnStatusItemDestroy(StatusItemEntry item) { oldStatusItems.Remove(item); }