public List<AllyData> AllyList(int unionID) { lock (_Mutex) { List<int> allyIDList = InitAllyIDList(unionID); List<AllyData> list = new List<AllyData>(); foreach (int id in allyIDList) { KFAllyData data = GetUnionData(id); if (data == null) continue; AllyData result = new AllyData(); result.UnionID = data.UnionID; result.UnionZoneID = data.UnionZoneID; result.UnionName = data.UnionName; result.UnionLevel = data.UnionLevel; result.UnionNum = data.UnionNum; result.LeaderID = data.LeaderID; result.LeaderZoneID = data.LeaderZoneID; result.LeaderName = data.LeaderName; result.LogState = (int)EAlly.AllyAgree; list.Add(result); } return list; } }
public bool UnionIsAlly(GameClient client, int targetID) { bool result; lock (AllyClient.getInstance()._Mutex) { if (client.ClientData.AllyList == null || client.ClientData.AllyList.Count <= 0) { result = false; } else { AllyData resultData = client.ClientData.AllyList.Find((AllyData data) => data.UnionID == targetID); bool isAllyMap = this.IsAllyMap(client.ClientData.MapCode); if (resultData != null && isAllyMap) { result = true; } else { result = false; } } } return(result); }
/// <summary> /// Creates allies based on the stored ally data /// </summary> /// <param name="allyParent">Transform that will serve as the parent for the loaded allies</param> public static void LoadAllies(Transform allyParent) { // Get the amount of allies ChildAmountData allyAmData = SaveSystem.LoadAllyAmount(); int allyAmount = allyAmData.GetChildAmount(); // Load each ally for (int i = 0; i < allyAmount; ++i) { // Get the data for the ally AllyData allyData = SaveSystem.LoadAlly(i); // Get the key of which prefab to spawn int key = allyData.GetPrefabKey(); // Use the key to get the prefab to spawn GameObject allyPrefab = SaveAlliesController.GetAllyPrefab(key); // Spawn the prefab as a child of the ally Parent GameObject allyObj = Object.Instantiate(allyPrefab, allyParent); // Set its transform components allyObj.transform.position = allyData.GetPosition(); // Get its AllyStats script AllyStats allyStatsScriptRef = allyObj.GetComponent <AllyStats>(); if (allyStatsScriptRef != null) { allyStatsScriptRef.SetExperience(allyData.GetExperience()); allyStatsScriptRef.SetOneLevelExperience(allyData.GetOneLevelExperience()); allyStatsScriptRef.SetLevel(allyData.GetLevel()); allyStatsScriptRef.SetNextLevelThreshold(allyData.GetNextLevelThreshold()); allyStatsScriptRef.SetOneLevelNextLevelThreshold(allyData.GetOneLevelNextLevelThreshold()); allyStatsScriptRef.AmountStatIncreases = allyData.GetAmountStatIncreases(); allyStatsScriptRef.SetStrength(allyData.GetStrength()); allyStatsScriptRef.SetMagic(allyData.GetMagic()); allyStatsScriptRef.SetSpeed(allyData.GetSpeed()); allyStatsScriptRef.SetVitality(allyData.GetVitality()); allyStatsScriptRef.StrBubblesFilled = allyData.GetStrengthBubblesFilled(); allyStatsScriptRef.MagicBubblesFilled = allyData.GetMagicBubblesFilled(); allyStatsScriptRef.SpeedBubblesFilled = allyData.GetSpeedBubblesFilled(); allyStatsScriptRef.VitalityBubblesFilled = allyData.GetVitalityBubblesFilled(); } else { Debug.LogError("There was no AllyStats script attached to " + allyObj.name); } // Get its AllyHealth script AllyHealth allyHealthScriptRef = allyObj.GetComponent <AllyHealth>(); if (allyHealthScriptRef != null) { allyHealthScriptRef.MaxHP = allyData.GetMaxHP(); allyHealthScriptRef.CurHP = allyData.GetCurHP(); } else { Debug.LogError("There was no AllyHealth script attached to " + allyObj.name); } } }
public EAlly HAllyRequest(int unionID, int zoneID, string unionName) { AllyData result = null; try { lock (_Mutex) { if (!VersionIsEqual()) { _unionDic.Clear(); _allyDic.Clear(); _requestDic.Clear(); _acceptDic.Clear(); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyStartGameEvent(), (int)_sceneType); return(EAlly.EFail); } IAllyService kuaFuService = GetKuaFuService(); if (null == kuaFuService) { return(EAlly.EServer); } try { AllyData d = kuaFuService.AllyRequest(_ClientInfo.ServerId, unionID, zoneID, unionName); if (d.LogState == (int)EAlly.AllyRequestSucc) { List <AllyData> list = null; if (!_requestDic.TryGetValue(unionID, out list)) { list = new List <AllyData>() { }; _requestDic.TryAdd(unionID, list); } list.Add(d); return((EAlly)d.LogState); } } catch (System.Exception ex) { ResetKuaFuService(); } } } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(EAlly.EAllyRequest); }
public EAlly HUnionDataChange(AllyData unionData) { EAlly result = EAlly.EFail; try { lock (_Mutex) { IAllyService kuaFuService = GetKuaFuService(); if (null == kuaFuService) { return(result); } try { result = (EAlly)kuaFuService.UnionDataChange(_ClientInfo.ServerId, unionData); if (result == EAlly.Succ) { int unionID = unionData.UnionID; DateTime oldTime; if (_unionDic.TryGetValue(unionID, out oldTime)) { _unionDic[unionID] = DateTime.Now; return(EAlly.Succ); } else { _unionDic.TryAdd(unionID, DateTime.Now); HAllyDataList(unionID, EAllyDataType.Ally); HAllyDataList(unionID, EAllyDataType.Request); HAllyDataList(unionID, EAllyDataType.Accept); } } } catch (System.Exception ex) { ResetKuaFuService(); } } } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(result); }
public void UnionDataChange(int unionID, int serverID, bool isDel = false, int unionLevel = 0) { if (!KuaFuManager.KuaFuWorldKuaFuGameServer) { if (unionID > 0) { if (isDel) { if (this.IsAllyOpen(unionLevel)) { EAlly result = AllyClient.getInstance().HUnionDel(unionID); if (result != EAlly.Succ) { LogManager.WriteLog(LogTypes.Error, string.Format("战盟结盟:战盟{0}解散失败 id={1}", unionID, result), null, true); } } } else { BangHuiDetailData unionData = Global.GetBangHuiDetailData(-1, unionID, serverID); if (unionData != null && this.IsAllyOpen(unionData.QiLevel)) { AllyData data = new AllyData(); data.UnionID = unionData.BHID; data.UnionZoneID = unionData.ZoneID; data.UnionName = unionData.BHName; data.UnionLevel = unionData.QiLevel; data.UnionNum = unionData.TotalNum; data.LeaderID = unionData.BZRoleID; data.LeaderName = unionData.BZRoleName; SafeClientData clientData = Global.GetSafeClientDataFromLocalOrDB(data.LeaderID); if (null != clientData) { data.LeaderZoneID = clientData.ZoneID; } else { data.LeaderZoneID = unionData.ZoneID; } EAlly result = AllyClient.getInstance().HUnionDataChange(data); if (result != EAlly.Succ) { LogManager.WriteLog(LogTypes.Error, string.Format("战盟结盟:战盟数据变更失败 id={0}", result), null, true); } } } } } }
private bool UnionIsAlly(int unionID, int targetID) { lock (_Mutex) { List<AllyData> list = AllyList(unionID); if (list!=null && list.Count>0) { AllyData resultData = list.Find( delegate(AllyData data) { return data.UnionID == targetID; }); if (resultData != null) return true; } return false; } }
public EAlly HAllyRequest(int unionID, int zoneID, string unionName) { try { lock (this._Mutex) { if (!this.VersionIsEqual()) { this._unionDic.Clear(); this._allyDic.Clear(); this._requestDic.Clear(); this._acceptDic.Clear(); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyStartGameEvent(), 10004); return(EAlly.EFail); } IAllyService kuaFuService = this.GetKuaFuService(false); if (null == kuaFuService) { return(EAlly.EServer); } try { AllyData d = kuaFuService.AllyRequest(this._ClientInfo.ServerId, unionID, zoneID, unionName); if (d.LogState == 1) { List <AllyData> list = null; if (!this._requestDic.TryGetValue(unionID, out list)) { list = new List <AllyData>(); this._requestDic.TryAdd(unionID, list); } list.Add(d); return((EAlly)d.LogState); } } catch (Exception ex) { this.ResetKuaFuService(); } } } catch (Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(EAlly.EAllyRequest); }
public List<AllyData> AllyAcceptList(int unionID) { lock (_Mutex) { List<KFAllyData> acceptList = InitAllyAcceptList(unionID); List<AllyData> list = new List<AllyData>(); foreach (KFAllyData rData in acceptList) { AllyData d = new AllyData(); d.Copy(rData); list.Add(d); } return list; } }
public void UnionDataChange(int unionID, int serverID, bool isDel = false, int unionLevel = 0) { if (unionID <= 0) { return; } if (isDel) { if (!IsAllyOpen(unionLevel)) { return; } EAlly result = AllyClient.getInstance().HUnionDel(unionID); if (result != EAlly.Succ) { LogManager.WriteLog(LogTypes.Error, string.Format("战盟结盟:战盟{0}解散失败 id={1}", unionID, result)); } } else { BangHuiDetailData unionData = Global.GetBangHuiDetailData(-1, unionID, serverID); if (unionData == null || !IsAllyOpen(unionData.QiLevel)) { return; } AllyData data = new AllyData(); data.UnionID = unionData.BHID; data.UnionZoneID = unionData.ZoneID; data.UnionName = unionData.BHName; data.UnionLevel = unionData.QiLevel; data.UnionNum = unionData.TotalNum; data.LeaderID = unionData.BZRoleID; data.LeaderName = unionData.BZRoleName; var clientData = Global.GetSafeClientDataFromLocalOrDB(data.LeaderID); data.LeaderZoneID = clientData.ZoneID; EAlly result = AllyClient.getInstance().HUnionDataChange(data); if (result != EAlly.Succ) { LogManager.WriteLog(LogTypes.Error, string.Format("战盟结盟:战盟数据变更失败 id={0}", result)); } } }
public EAlly HUnionDataChange(AllyData unionData) { EAlly result = EAlly.EFail; try { lock (this._Mutex) { IAllyService kuaFuService = this.GetKuaFuService(false); if (null == kuaFuService) { return(result); } try { result = (EAlly)kuaFuService.UnionDataChange(this._ClientInfo.ServerId, unionData); if (result == EAlly.Succ) { int unionID = unionData.UnionID; DateTime oldTime; if (this._unionDic.TryGetValue(unionID, out oldTime)) { this._unionDic[unionID] = TimeUtil.NowDateTime(); return(EAlly.Succ); } this._unionDic.TryAdd(unionID, TimeUtil.NowDateTime()); this.HAllyDataList(unionID, EAllyDataType.Ally); this.HAllyDataList(unionID, EAllyDataType.Request); this.HAllyDataList(unionID, EAllyDataType.Accept); } } catch (Exception ex) { this.ResetKuaFuService(); } } } catch (Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(result); }
public bool UnionIsAccept(int unionID, int zoneID, string unionName) { bool result; lock (this._Mutex) { List <AllyData> list = null; if (this._acceptDic.TryGetValue(unionID, out list)) { AllyData resultData = list.Find((AllyData data) => data.UnionZoneID == zoneID && data.UnionName == unionName); if (resultData != null) { return(true); } } result = false; } return(result); }
public bool UnionIsAccept(int unionID, int zoneID, string unionName) { lock (_Mutex) { List <AllyData> list = null; if (_acceptDic.TryGetValue(unionID, out list)) { AllyData resultData = list.Find( delegate(AllyData data) { return(data.UnionZoneID == zoneID && data.UnionName == unionName); }); if (resultData != null) { return(true); } } return(false); } }
public bool UnionIsAlly(GameClient client, int targetID) { lock (AllyClient.getInstance()._Mutex) { if (client.ClientData.AllyList == null || client.ClientData.AllyList.Count <= 0) { return(false); } AllyData resultData = client.ClientData.AllyList.Find( delegate(AllyData data) { return(data.UnionID == targetID); }); bool isAllyMap = IsAllyMap(client.ClientData.MapCode); if (resultData != null && isAllyMap) { return(true); } return(false); } }
public AllyData AllyRequest(int serverID, int unionID, int zoneID, string unionName) { lock (_Mutex) { AllyData clientRequest = new AllyData(); if (!IsAgent(serverID)) { clientRequest.LogState = (int)EAlly.EServer; return clientRequest; } KFAllyData targetData = GetUnionData(zoneID, unionName); if (targetData == null) { clientRequest.LogState = (int)EAlly.EName; return clientRequest; } InitAllyIDList(targetData.UnionID); InitAllyRequestList(targetData.UnionID); InitAllyAcceptList(targetData.UnionID); if (UnionIsAlly(unionID, targetData.UnionID)) { clientRequest.LogState = (int)EAlly.EIsAlly; return clientRequest; } if (UnionIsRequest(unionID, targetData.UnionID) || UnionIsAccept(targetData.UnionID, unionID)) { clientRequest.LogState = (int)EAlly.EMore; return clientRequest; } int sum = _allyDic[unionID].Count + _requestDic[unionID].Count; if (sum >= Consts.AllyNumMax) { clientRequest.LogState = (int)EAlly.EAllyMax; return clientRequest; } DateTime logTime = DateTime.Now; int logState = (int)EAlly.AllyRequestSucc; bool isAdd = AllyPersistence.Instance.DBAllyRequestAdd(unionID, targetData.UnionID, logTime, logState); if (!isAdd) { clientRequest.LogState = (int)EAlly.EAllyRequest; return clientRequest; } //my KFAllyData myData = GetUnionData(unionID); AllyLogData logData = new AllyLogData(); logData.UnionID = targetData.UnionID; logData.UnionZoneID = targetData.UnionZoneID; logData.UnionName = targetData.UnionName; logData.MyUnionID = unionID; logData.LogTime = logTime; logData.LogState = logState; ClientAgentManager.Instance().PostAsyncEvent(serverID, _gameType, new AsyncDataItem(KuaFuEventTypes.AllyLog, unionID, new List<AllyLogData>() { logData })); KFAllyData requestData = new KFAllyData(); requestData.Copy(targetData); requestData.LogState = logState; requestData.LogTime = logTime; requestData.UpdateLogtime(); AllyRequestAdd(unionID, requestData); clientRequest.Copy(requestData); // ClientAgentManager.Instance().PostAsyncEvent(serverID, _gameType, new AsyncDataItem(KuaFuEventTypes.AllyRequest, unionID, clientRequest)); //target KFAllyData acceptData = new KFAllyData(); acceptData.Copy(myData); acceptData.LogState = logState; acceptData.LogTime = logTime; AllyAcceptAdd(targetData.UnionID, acceptData); if (IsAgent(targetData.ServerID)) { AllyData clientAccept = new AllyData(); clientAccept.Copy(acceptData); ClientAgentManager.Instance().PostAsyncEvent(targetData.ServerID, _gameType, new AsyncDataItem(KuaFuEventTypes.AllyAccept, targetData.UnionID, clientAccept)); } return clientRequest; } }
public EAlly HAllyOperate(int unionID, int targetID, EAllyOperate operateType) { EAlly result = EAlly.EFail; try { lock (_Mutex) { if (!VersionIsEqual()) { _unionDic.Clear(); _allyDic.Clear(); _requestDic.Clear(); _acceptDic.Clear(); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyStartGameEvent(), (int)_sceneType); return(result); } ConcurrentDictionary <int, List <AllyData> > dic = null; switch (operateType) { case EAllyOperate.Agree: case EAllyOperate.Refuse: dic = _acceptDic; break; case EAllyOperate.Cancel: dic = _requestDic; break; case EAllyOperate.Remove: dic = _allyDic; break; } List <AllyData> list = null; if (!dic.TryGetValue(unionID, out list)) { return(EAlly.ENoTargetUnion); } AllyData targetData = dic[unionID].Find( delegate(AllyData data) { return(data.UnionID == targetID); }); if (targetData == null) { return(EAlly.ENoTargetUnion); } IAllyService kuaFuService = GetKuaFuService(); if (null == kuaFuService) { return(EAlly.EServer); } try { result = (EAlly)kuaFuService.AllyOperate(_ClientInfo.ServerId, unionID, targetID, (int)operateType); if (result == EAlly.AllyAgree || result == EAlly.AllyRefuse || result == EAlly.AllyCancelSucc || result == EAlly.AllyRemoveSucc) { dic[unionID].Remove(targetData); } } catch (System.Exception ex) { ResetKuaFuService(); } } } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(result); }
public int UnionDataChange(int serverID, AllyData newData) { if (!IsAgent(serverID)) return (int)EAlly.EServer; lock (_Mutex) { //获取老的数据,更新状态,logtime KFAllyData kfData = new KFAllyData(); kfData.Copy(newData); kfData.LogTime = DateTime.Now; kfData.ServerID = serverID; kfData.UpdateLogtime(); bool result = AllyPersistence.Instance.DBUnionDataUpdate(kfData); if (!result) return (int)EAlly.EFail; KFAllyData oldData; if (_unionDic.TryGetValue(kfData.UnionID, out oldData)) _unionDic[kfData.UnionID] = kfData; else _unionDic.TryAdd(kfData.UnionID, kfData); //结盟数据 List<int> oldAllyIDList; if (_allyDic.TryGetValue(kfData.UnionID, out oldAllyIDList)) { AllyData myData = new AllyData(); myData.Copy(kfData); myData.LogState = (int)EAlly.AllyAgree; foreach (int id in oldAllyIDList) { KFAllyData targetData = GetUnionData(id); if (IsAgent(targetData.ServerID)) ClientAgentManager.Instance().PostAsyncEvent(targetData.ServerID, _gameType, new AsyncDataItem(KuaFuEventTypes.AllyUnionUpdate, targetData.UnionID, myData)); } } AllyData myData2 = new AllyData(); myData2.Copy(kfData); myData2.LogState = (int)EAlly.AllyRequestSucc; //结盟请求 List<KFAllyData> rList = null; if (_requestDic.TryGetValue(kfData.UnionID, out rList)) { foreach (KFAllyData targetData in rList) { List<KFAllyData> raList = null; if (IsAgent(targetData.ServerID) && _acceptDic.TryGetValue(targetData.UnionID, out raList)) { KFAllyData oldAData = GetAcceptData(targetData.UnionID, kfData.UnionID); if (oldAData != null) { raList.Remove(oldAData); raList.Add(kfData); ClientAgentManager.Instance().PostAsyncEvent(targetData.ServerID, _gameType, new AsyncDataItem(KuaFuEventTypes.AllyUnionUpdate, targetData.UnionID, myData2)); } } } } //接受请求 List<KFAllyData> aList = null; if (_acceptDic.TryGetValue(kfData.UnionID, out aList)) { foreach (KFAllyData targetData in aList) { List<KFAllyData> arList = null; if (IsAgent(targetData.ServerID) && _requestDic.TryGetValue(targetData.UnionID, out arList)) { KFAllyData oldRData = GetRequestData(targetData.UnionID, kfData.UnionID); if (oldRData != null) { arList.Remove(oldRData); arList.Add(kfData); ClientAgentManager.Instance().PostAsyncEvent(targetData.ServerID, _gameType, new AsyncDataItem(KuaFuEventTypes.AllyUnionUpdate, targetData.UnionID, myData2)); } } } } return (int)EAlly.Succ; } }
public void EventCallBackHandler(int eventType, params object[] args) { try { lock (_Mutex) { List <AllyData> list = null; AllyData data = null; switch (eventType) { case (int)KuaFuEventTypes.AllyLog: { if (args.Length == 2) { List <AllyLogData> logList = (List <AllyLogData>)args[1]; _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyLogGameEvent(logList), (int)_sceneType); } } break; case (int)KuaFuEventTypes.Ally: { if (args.Length == 3) { int unionID = (int)args[0]; AllyData target = (AllyData)args[1]; bool isTipMsg = (bool)args[2]; if (!_allyDic.TryGetValue(unionID, out list)) { list = new List <AllyData>() { }; _allyDic.TryAdd(unionID, list); } AllyData oldData = GetAllyData(unionID, target.UnionID); if (oldData == null) { list.Add(target); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(unionID), (int)_sceneType); if (isTipMsg) { _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyTipGameEvent(unionID, (int)ActivityTipTypes.AllyMsg), (int)_sceneType); } } } } break; case (int)KuaFuEventTypes.KFAlly: { if (args.Length == 2) { AllyData unionData = (AllyData)args[0]; AllyData targetData = (AllyData)args[1]; if (!_allyDic.TryGetValue(unionData.UnionID, out list)) { list = new List <AllyData>() { }; _allyDic.TryAdd(unionData.UnionID, list); } AllyData oldData = GetAllyData(unionData.UnionID, targetData.UnionID); if (oldData == null) { list.Add(targetData); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(unionData.UnionID), (int)_sceneType); } // List <AllyData> list2 = null; if (!_allyDic.TryGetValue(targetData.UnionID, out list2)) { list2 = new List <AllyData>() { }; _allyDic.TryAdd(targetData.UnionID, list2); } oldData = GetAllyData(targetData.UnionID, unionData.UnionID); if (oldData == null) { list2.Add(unionData); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(targetData.UnionID), (int)_sceneType); } } } break; case (int)KuaFuEventTypes.AllyUnionUpdate: { if (args.Length == 2) { int unionID = (int)args[0]; AllyData targetData = (AllyData)args[1]; data = GetAllyData(unionID, targetData.UnionID); if (data != null && _allyDic.TryGetValue(unionID, out list)) { list.Remove(data); list.Add(targetData); } data = GetRequestData(unionID, targetData.UnionID); if (data != null && _requestDic.TryGetValue(unionID, out list)) { list.Remove(data); list.Add(data); } data = GetAcceptData(unionID, targetData.UnionID); if (data != null && _acceptDic.TryGetValue(unionID, out list)) { list.Remove(data); list.Add(data); } } } break; case (int)KuaFuEventTypes.AllyRemove: { if (args.Length == 2) { int unionID = (int)args[0]; int targetID = (int)args[1]; data = GetAllyData(unionID, targetID); if (data != null && _allyDic.TryGetValue(unionID, out list)) { list.Remove(data); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyTipGameEvent(unionID, (int)ActivityTipTypes.AllyMsg), (int)_sceneType); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(unionID), (int)_sceneType); } } } break; case (int)KuaFuEventTypes.KFAllyRemove: { if (args.Length == 2) { int unionID = (int)args[0]; int targetID = (int)args[1]; data = GetAllyData(unionID, targetID); if (data != null && _allyDic.TryGetValue(unionID, out list)) { list.Remove(data); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(unionID), (int)_sceneType); } AllyData data2 = GetAllyData(targetID, unionID); List <AllyData> list2 = null; if (data2 != null && _allyDic.TryGetValue(targetID, out list2)) { list2.Remove(data2); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(targetID), (int)_sceneType); } } } break; case (int)KuaFuEventTypes.AllyAccept: { if (args.Length == 2) { int unionID = (int)args[0]; AllyData target = (AllyData)args[1]; if (!_acceptDic.TryGetValue(unionID, out list)) { list = new List <AllyData>() { }; _acceptDic.TryAdd(unionID, list); } AllyData oldData = GetAcceptData(unionID, target.UnionID); if (oldData == null) { list.Add(target); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyTipGameEvent(unionID, (int)ActivityTipTypes.AllyAccept), (int)_sceneType); } } } break; case (int)KuaFuEventTypes.AllyAcceptRemove: { if (args.Length == 2) { int unionID = (int)args[0]; int targetID = (int)args[1]; data = GetAcceptData(unionID, targetID); if (data != null && _acceptDic.TryGetValue(unionID, out list)) { list.Remove(data); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyTipGameEvent(unionID, (int)ActivityTipTypes.AllyAccept), (int)_sceneType); } } } break; case (int)KuaFuEventTypes.AllyRequest: { if (args.Length == 2) { int unionID = (int)args[0]; AllyData target = (AllyData)args[1]; if (!_requestDic.TryGetValue(unionID, out list)) { list = new List <AllyData>() { }; _requestDic.TryAdd(unionID, list); } AllyData oldData = GetRequestData(unionID, target.UnionID); if (oldData == null) { list.Add(target); } } } break; case (int)KuaFuEventTypes.AllyRequestRemove: { if (args.Length == 2) { int unionID = (int)args[0]; int targetID = (int)args[1]; data = GetRequestData(unionID, targetID); if (data != null && _requestDic.TryGetValue(unionID, out list)) { list.Remove(data); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyTipGameEvent(unionID, (int)ActivityTipTypes.AllyMsg), (int)_sceneType); } } } break; } } } catch (Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } }
//Agree public int OperateAgree(int serverID, int unionID, int targetID) { lock (_Mutex) { KFAllyData targetData = GetUnionData(targetID); if (targetData == null) return (int)EAlly.ENoTargetUnion; if (!UnionIsAccept(unionID, targetID)) return (int)EAlly.EFail; if (!UnionIsRequest(targetID, unionID)) return (int)EAlly.EFail; //num int sum = _allyDic[unionID].Count + _requestDic[unionID].Count; if (sum >= Consts.AllyNumMax) return (int)EAlly.EAllyMax; DateTime logTime = DateTime.Now; int logState = (int)EAlly.AllyAgree; bool isDB = AllyPersistence.Instance.DBAllyRequestDel(targetID, unionID); if (!isDB) return (int)EAlly.EFail; isDB = AllyPersistence.Instance.DBAllyAdd(unionID, targetID, logTime); if (!isDB) return (int)EAlly.EFail; //my KFAllyData aData = GetAcceptData(unionID, targetID); _acceptDic[unionID].Remove(aData); ClientAgentManager.Instance().PostAsyncEvent(serverID, _gameType, new AsyncDataItem(KuaFuEventTypes.AllyAcceptRemove, unionID, targetID)); _allyDic[unionID].Add(targetID); aData.LogTime = logTime; aData.LogState = logState; AllyData clientMy = new AllyData(); clientMy.Copy(aData); ClientAgentManager.Instance().PostAsyncEvent(serverID, _gameType, new AsyncDataItem(KuaFuEventTypes.Ally, unionID, clientMy, false)); //target if (_requestDic.ContainsKey(targetID)) { KFAllyData rData = GetRequestData(targetID, unionID); _requestDic[targetID].Remove(rData); } if (_allyDic.ContainsKey(targetID)) _allyDic[targetID].Add(unionID); KFAllyData myData = GetUnionData(unionID); myData.LogTime = logTime; myData.LogState = logState; AllyLogData logData = new AllyLogData(); logData.UnionID = myData.UnionID; logData.UnionZoneID = myData.UnionZoneID; logData.UnionName = myData.UnionName; logData.MyUnionID = targetID; logData.LogTime = logTime; logData.LogState = (int)EAlly.AllyAgreeOther; AllyData clientTarget = new AllyData(); clientTarget.Copy(myData); if (IsAgent(targetData.ServerID)) { ClientAgentManager.Instance().PostAsyncEvent(targetData.ServerID, _gameType, new AsyncDataItem(KuaFuEventTypes.Ally, targetID, clientTarget, true)); ClientAgentManager.Instance().PostAsyncEvent(targetData.ServerID, _gameType, new AsyncDataItem(KuaFuEventTypes.AllyRequestRemove, targetID, unionID)); ClientAgentManager.Instance().PostAsyncEvent(targetData.ServerID, _gameType, new AsyncDataItem(KuaFuEventTypes.AllyLog, targetID, new List<AllyLogData>() { logData })); } else { AllyPersistence.Instance.DBAllyLogAdd(logData); } ClientAgentManager.Instance().KFBroadCastAsyncEvent(_gameType, new AsyncDataItem(KuaFuEventTypes.KFAlly, clientMy, clientTarget)); return (int)EAlly.AllyAgree; } }
public void EventCallBackHandler(AsyncDataItem item) { try { int eventType = (int)item.EventType; object[] args = item.Args; lock (this._Mutex) { List <AllyData> list = null; switch (eventType) { case 10016: if (args.Length == 2) { List <AllyLogData> logList = (List <AllyLogData>)args[1]; this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyLogGameEvent(logList), 10004); } break; case 10017: if (args.Length == 3) { int unionID = (int)args[0]; AllyData target = (AllyData)args[1]; bool isTipMsg = (bool)args[2]; if (!this._allyDic.TryGetValue(unionID, out list)) { list = new List <AllyData>(); this._allyDic.TryAdd(unionID, list); } AllyData oldData = this.GetAllyData(unionID, target.UnionID); if (oldData == null) { list.Add(target); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(unionID), 10004); if (isTipMsg) { this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyTipGameEvent(unionID, 14113), 10004); } } } break; case 10018: if (args.Length == 2) { int unionID = (int)args[0]; int targetID = (int)args[1]; AllyData data = this.GetAllyData(unionID, targetID); if (data != null && this._allyDic.TryGetValue(unionID, out list)) { list.Remove(data); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyTipGameEvent(unionID, 14113), 10004); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(unionID), 10004); } } break; case 10019: if (args.Length == 2) { int unionID = (int)args[0]; AllyData target = (AllyData)args[1]; if (!this._acceptDic.TryGetValue(unionID, out list)) { list = new List <AllyData>(); this._acceptDic.TryAdd(unionID, list); } AllyData oldData = this.GetAcceptData(unionID, target.UnionID); if (oldData == null) { list.Add(target); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyTipGameEvent(unionID, 14112), 10004); } } break; case 10020: if (args.Length == 2) { int unionID = (int)args[0]; int targetID = (int)args[1]; AllyData data = this.GetAcceptData(unionID, targetID); if (data != null && this._acceptDic.TryGetValue(unionID, out list)) { list.Remove(data); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyTipGameEvent(unionID, 14112), 10004); } } break; case 10021: if (args.Length == 2) { int unionID = (int)args[0]; AllyData target = (AllyData)args[1]; if (!this._requestDic.TryGetValue(unionID, out list)) { list = new List <AllyData>(); this._requestDic.TryAdd(unionID, list); } AllyData oldData = this.GetRequestData(unionID, target.UnionID); if (oldData == null) { list.Add(target); } } break; case 10022: if (args.Length == 2) { int unionID = (int)args[0]; int targetID = (int)args[1]; AllyData data = this.GetRequestData(unionID, targetID); if (data != null && this._requestDic.TryGetValue(unionID, out list)) { list.Remove(data); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyTipGameEvent(unionID, 14113), 10004); } } break; case 10023: if (args.Length == 2) { int unionID = (int)args[0]; AllyData targetData = (AllyData)args[1]; AllyData data = this.GetAllyData(unionID, targetData.UnionID); if (data != null && this._allyDic.TryGetValue(unionID, out list)) { list.Remove(data); list.Add(targetData); } data = this.GetRequestData(unionID, targetData.UnionID); if (data != null && this._requestDic.TryGetValue(unionID, out list)) { list.Remove(data); list.Add(data); } data = this.GetAcceptData(unionID, targetData.UnionID); if (data != null && this._acceptDic.TryGetValue(unionID, out list)) { list.Remove(data); list.Add(data); } } break; case 10024: if (args.Length == 2) { AllyData unionData = (AllyData)args[0]; AllyData targetData = (AllyData)args[1]; if (!this._allyDic.TryGetValue(unionData.UnionID, out list)) { list = new List <AllyData>(); this._allyDic.TryAdd(unionData.UnionID, list); } AllyData oldData = this.GetAllyData(unionData.UnionID, targetData.UnionID); if (oldData == null) { list.Add(targetData); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(unionData.UnionID), 10004); } List <AllyData> list2 = null; if (!this._allyDic.TryGetValue(targetData.UnionID, out list2)) { list2 = new List <AllyData>(); this._allyDic.TryAdd(targetData.UnionID, list2); } oldData = this.GetAllyData(targetData.UnionID, unionData.UnionID); if (oldData == null) { list2.Add(unionData); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(targetData.UnionID), 10004); } } break; case 10025: if (args.Length == 2) { int unionID = (int)args[0]; int targetID = (int)args[1]; AllyData data = this.GetAllyData(unionID, targetID); if (data != null && this._allyDic.TryGetValue(unionID, out list)) { list.Remove(data); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(unionID), 10004); } AllyData data2 = this.GetAllyData(targetID, unionID); List <AllyData> list2 = null; if (data2 != null && this._allyDic.TryGetValue(targetID, out list2)) { list2.Remove(data2); this._CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyGameEvent(targetID), 10004); } } break; case 10026: if (args.Length == 1) { KFRankData rankData = (KFRankData)args[0]; lock (this._lockRank) { if (!this._rankDic.ContainsKey(rankData.RankType)) { this._rankDic.Add(rankData.RankType, new Dictionary <int, KFRankData>()); } Dictionary <int, KFRankData> dic = this._rankDic[rankData.RankType]; if (dic.ContainsKey(rankData.RoleID)) { dic[rankData.RoleID] = rankData; } else { dic.Add(rankData.RoleID, rankData); } } } break; case 10027: if (args.Length == 3) { int rankType = (int)args[0]; int RankRefreshSpanType = (int)args[1]; lock (this._lockRank) { List <KFRankData> topList = (List <KFRankData>)args[2]; if (!this._rankTopDic.ContainsKey(rankType)) { this._rankTopDic.Add(rankType, new List <KFRankData>()); } this._rankTopDic[rankType] = topList; if (1 == RankRefreshSpanType && this._rankDic.ContainsKey(rankType)) { this._rankDic[rankType].Clear(); } } } break; } } } catch (Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } }