public virtual void RefreshActivity(OperationActivity data) { Items.Clear(); bool dirty = false; var list = data.ItemList; for (int i = 0; i < list.Count; i++) { var item = list[i]; DBOperActivityItem db = null; if (i >= mDBData.Items.Count) { db = new DBOperActivityItem(); mDBData.Items.Add(db); dirty = true; } else { db = mDBData.Items[i]; } var actItem = MakeItem(item, db, StartTime); Items.Add(actItem); AddChild(actItem); } if (dirty) { MarkDbDirty(); } }
private PlayerOperationActivityItem MakeItem(OperationActivityItem item, DBOperActivityItem db, DateTime time) { var ret = new PlayerOperationActivityItem(); ret.mDBData = db; ret.Id = item.Id; ret.Need = (ulong)item.Params[0]; ret.TotalTimes = item.TotalTimes; ret.Condition = item.Condition; if (-1 == item.OpenDelayDays) { ret.Begin = DateTime.MinValue; ret.RewardBegin = ret.Begin; ret.End = DateTime.MaxValue; } else { ret.Begin = time.Date.AddDays(item.OpenDelayDays); ret.RewardBegin = time.Date.AddDays(item.RewardOpenDelay); if (ret.Begin > ret.RewardBegin) { ret.RewardBegin = ret.Begin; } ret.End = ret.Begin.AddDays(item.LastDays); } ret.Params = item.Params; ret.StrParams = item.StrParams; var idx = Controller.GetRole(); if (idx >= 0 && idx < item.Rewards.Count()) { ret.Rewards = item.Rewards[idx]; } return(ret); }