可领取放前面,不可领取放中间,已领取放最后
/// <summary>
/// 对不可领取,领取,已领取三种状态进行排序,T为三种状态的Item,
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list"></param>
private void SortGrowItems<T>(ref List<T> list) where T : SPUI_AC_OnlineGift.GdItem
{
T temp = null;//
int insertIndex = 0;
for (int i = 0; i < list.Count; i++)
{
if (list[i].BtState != SPUI_AC_OnlineGift.GdItem.EState.Got)//不可领取和可领取
{
if (i != insertIndex)
{
temp = list[i];
list.RemoveAt(i);
//把可领取和不可领取插入到前面,已领取状态放最后
list.Insert(insertIndex, temp);
}
insertIndex++;
}
}
int notGetNum = insertIndex;
insertIndex = 0;
//对可领取和不可领取排序
for (int i = 0; i < notGetNum; i++)
{
//如果可领取,并且可领取的i,不是计数的值,把可领取item从list移除,插入到计数位置
if (list[i].BtState == SPUI_AC_OnlineGift.GdItem.EState.CanGet)
{
if (i != insertIndex)
{
temp = list[i];
list.RemoveAt(i);
//把可领取插入到前面,不可领取状态放最后
list.Insert(insertIndex, temp);
}
insertIndex++;
}
}
}
邮件中的排序,循环字典的中item,改变状态后加入到list中,然后用list排序
public void SetAllItem()
{
List<SPUI_Mail.MailItem> list = new List<SPUI_Mail.MailItem>();
var itemcfg = Globals.MDataTableManager.GetConfig<ItemConfig>();
foreach (var it in mailData.Values)
{
SPUI_Mail.MailItem mail = new SPUI_Mail.MailItem();
mail.Id = it.Id;
mail.BtName = it.BtName;
mail.HasGet = it.HasGet;
mail.HasRead = it.HasRead;
mail.Content = it.Content;
mail.SenderName = it.SenderName;
mail.MailType = it.MailType;
mail.ArmyId = it.ArmyId;
if (it.Items.Count > 0)
{
mail.Type = SPUI_Mail.EMailType.Gift;
}
else
{
mail.Type = SPUI_Mail.EMailType.Msg;
}
mail.SendTime = Globals.MTimeManager.ServerTimeToLocalTime(it.time);
mail.Items = new List<UIItem>();
foreach (var kvp in it.Items)
{
var cfgItem = itemcfg.GetConfigElementByID(kvp.Key);
if (cfgItem != null)
{
UIItem item = new SPUI.UIItem();
item.id = kvp.Key;
item.count = kvp.Value;
item.icon = cfgItem.Icon;
mail.Items.Add(item);
}
}
list.Add(mail);
}
list.Sort(delegate (SPUI_Mail.MailItem A, SPUI_Mail.MailItem B) { return A.SendTime.CompareTo(B.SendTime); });
list.Sort(delegate (SPUI_Mail.MailItem A, SPUI_Mail.MailItem B) { return A.HasGet.CompareTo(B.HasGet); });
_spui.ShowAllMail(list);
}