public virtual bool Init(CharacterController controller, OperationActivity data, DBOperationActivityData db, DateTime begin, DateTime end) { Controller = controller; mDBData = db; Id = data.Id; mDBData.Id = Id; StartTime = begin; EndTime = end; Param = data.Param; RefreshActivity(data); return(true); }
public void Init() { DictActivity.Clear(); bool dirty = false; int i = 0; var dict = OperationActivityManager.Instance.DictActivity; foreach (var kv in dict) { var act = kv.Value; if (!act.IsActive) { continue; } if (act.ServerList.Count > 0 && !act.ServerList.Contains(SceneExtension.GetServerLogicId(mCharacter.serverId))) { continue; } if (!act.IsTitle && act.ItemList.Count <= 0) { continue; } DateTime startTime = DateTime.MinValue; DateTime endTime = DateTime.MinValue; if (eRechargeActivityOpenRule.NewServerAuto == act.OpenRule) { DateTime time = DateTime.Now; var table = Table.GetServerName(SceneExtension.GetServerLogicId(mCharacter.serverId)); if (null == table) { Logger.Fatal("PlayerOperationActivityManager.Init mCharacter.serverId={0}", SceneExtension.GetServerLogicId(mCharacter.serverId)); } else { time = DateTime.Parse(table.OpenTime).Date; } startTime = time.AddHours(act.DelayHours); endTime = time.AddHours(act.LastHours); } else { startTime = act.StartTime; endTime = act.EndTime; } if (!(DateTime.Now >= startTime && DateTime.Now < endTime)) { continue; } DBOperationActivityData dbAct = null; for (int j = i; j < mDbData.Data.Count; j++) { var dbData = mDbData.Data[j]; if (null != dbData && dbData.Id == act.Id) { dbAct = dbData; if (j != i) { var temp = mDbData.Data[j]; mDbData.Data[j] = mDbData.Data[i]; mDbData.Data[i] = temp; } break; } } if (null == dbAct) { dbAct = new DBOperationActivityData(); mDbData.Data.Insert(i, dbAct); dirty = true; } PlayerOperationActivity playerAct = null; var type = (OperationActivityType)act.Type; if (type == OperationActivityType.Guide) { playerAct = new PlayerOperationActivityGuide(); } else if (type == OperationActivityType.Recharge) { playerAct = new PlayerOperationActivityRecharge(); } else if (type == OperationActivityType.SpecialEvent) { playerAct = new PlayerOperationActivitySpecialEvent(); } else if (type == OperationActivityType.Investment) { playerAct = new PlayerOperationActivityInvestment(); } else if (type == OperationActivityType.Rank) { var actRank = new PlayerOperationActivityRank(); var temp = act as OperationActivityRank; actRank.RankType = temp.RankType; playerAct = actRank; } else if (type == OperationActivityType.Lottery) { playerAct = new PlayerOperationActivityLottery(); } else { //Error } playerAct.Init(mCharacter, act, dbAct, startTime, endTime); DictActivity.Add(playerAct.Id, playerAct); AddChild(playerAct); i++; } var remCount = mDbData.Data.Count - i; if (remCount > 0) { mDbData.Data.RemoveRange(i, remCount); dirty = true; } if (dirty) { MarkDirty(); } NeedReset = false; }