// 执行Add操作,但是也会触发Spawn流程,适用于对已经存在于地图上的对象使用 public virtual void SpawnAdd(TUnit chara, string tdid, long?rtid = null, int?team = null) { if (chara == null) { return; } if (!rtid.HasValue) { chara.SetRTID(IDUtil.Gen()); } else { chara.SetRTID(rtid.Value); } TConfig config = TDLuaMgr?.Get <TConfig>(tdid); if (config == null) { config = new TConfig(); } else if (IsCopyConfig) { config = config.Copy <TConfig>(); } chara.SpawnMgr = this; chara.SetTDID(tdid); chara.SetTeam(team); chara.SetConfig(config); chara.OnInit(); chara.OnBeSpawned(); OnSpawned(tdid, chara.ID, chara); AddToData(chara); }
public void AddLog(string key, BaseUnit nation = null, params object[] objs) { if (!BaseGlobal.IsUnReadData) { return; } if (nation != null) { if (!nation.IsPlayer()) { return; } } BaseLogData tempData = new BaseLogData(); tempData.Date = BaseGlobal.DateTimeMgr.GetCurDateStr(); tempData.Desc = Util.GetStr(key, objs); tempData.ID = IDUtil.Gen(); tempData.CurTime = 0; Data.Insert(0, tempData); if (Data.Count > MaxCount) { RemLastLog(); } Callback_OnAddedLog?.Invoke(tempData); }
//推送谈判内容到Alert,用于给对方发送信息 public void PushNagotiationToAlert(TDBaseAlertData data) { if (!IsStarNegotiation) { CLog.Error("AddArticle 没有调用StarNegotiation"); return; } data.SelfArticle.Clear(); data.TargetArticle.Clear(); foreach (var item in TempSelfArticlies) { item.ID = IDUtil.Gen(); item.BaseTarget = TargetArticleUnit; item.OnBeAdded(SelfArticleUnit); Datas.Add(item); data.SelfArticle.Add(item); } foreach (var item in TempTargetArticlies) { item.ID = IDUtil.Gen(); item.BaseTarget = SelfArticleUnit; item.OnBeAdded(TargetArticleUnit); Datas.Add(item); data.TargetArticle.Add(item); } data.WarfareData = CurWarData; clearNagotiation(); }
//添加,触发整个SpawnAdd流程 public virtual void SpawnAdd(TData data, string tdid = null, long?rtid = null, int?team = null) { if (!tdid.IsInv()) { data.TDID = tdid; } else { tdid = data.TDID; } if (rtid != null) { data.ID = rtid.Value; } else { rtid = data.ID = IDUtil.Gen(); } data.OnBeAdded(SelfMono); OnSpawned(tdid, rtid.Value, data); AddToData(data); }
private TData Add(string tdid, BaseUnit cast = null, Callback <TData> action = null, bool isAutoTrigger = false) { if (!TDLuaMgr.Contains(tdid)) { if (CommonAlert == tdid) { CLog.Error("没有:{0},请手动添加CommonAlert", tdid); } else { CLog.Error("没有:{0},请手动添加Alert", tdid); } return(null); } TData sourceAlert = TDLuaMgr.Get <TData>(tdid); sourceAlert.Cast = cast ? cast : LocalPlayer; sourceAlert.AlertMgr = this; //判断通知是否可以被合并 var finalAlert = CanMerge(sourceAlert); if (finalAlert != null) { finalAlert.OnMerge(); Callback_OnMerge?.Invoke(finalAlert); } else { finalAlert = sourceAlert.Copy <TData>(); finalAlert.ID = IDUtil.Gen(); finalAlert.OnBeAdded(SelfBaseUnit); Data.Add(finalAlert); if (finalAlert.Type == AlertType.Interaction) { //推送最近一次的谈判信息 if (ArticleMgr.IsStarNegotiation) { ArticleMgr.PushNagotiationToAlert(finalAlert); } InteractionData.Add(finalAlert); Callback_OnInteractionChange?.Invoke(finalAlert); } else if (finalAlert.Type == AlertType.Disposable) { DisposableData.Add(finalAlert); Callback_DisposableChange?.Invoke(finalAlert); } else if (finalAlert.Type == AlertType.Continue) { ContinueData.Add(finalAlert); Callback_ContinueChange?.Invoke(finalAlert); } action?.Invoke(finalAlert); if (BaseGlobal.IsUnReadData) { Callback_OnAdded?.Invoke(finalAlert); } } if (finalAlert.IsAutoTrigger || isAutoTrigger) { finalAlert.DoLeftClickTrigger(); } return(finalAlert); }