//战斗结束 public void BattleOver(AllianceWar _this, int occupantId) { _this.SetStatus((int)eAllianceWarState.WaitBid); var allianceManager = ServerAllianceManager.GetAllianceByServer(_this.ServerId); var dbData = allianceManager.GetServerData(_this.ServerId); var oldOccupant = dbData.Occupant; dbData.Challengers.Clear(); dbData.LastBattleTime = DateTime.Now.ToBinary(); allianceManager.SetFlag(_this.ServerId); PlayerLog.WriteLog((ulong)LogType.AllianceWar, "BattleOver(), ServerId = {0}, occupantId = {1}, old occupantId = {2}", _this.ServerId, occupantId, dbData.Occupant); //如果城主没变就返回 if (dbData.Occupant == occupantId) { return; } dbData.Occupant = occupantId; var alliance = ServerAllianceManager.GetAllianceById(occupantId); if (alliance != null) { //通知全服,城主变了 var data = new AllianceWarOccupantData(); data.OccupantId = occupantId; data.OccupantName = alliance.Name; TeamServer.Instance.TeamAgent.NotifyAllianceWarOccupantData((uint)_this.ServerId, data); //修改玩家的称号 var change0 = new Dict_int_int_Data(); var tbTitle = Table.GetNameTitle(5000); change0.Data.Add(tbTitle.FlagId, 1); var change1 = new Dict_int_int_Data(); tbTitle = Table.GetNameTitle(5001); change1.Data.Add(tbTitle.FlagId, 1); var dad = alliance.Dad; foreach (var id in alliance.mDBData.Members) { var m = dad.GetCharacterData(id); if (m == null) { continue; } if (m.Ladder == (int)eAllianceLadder.Chairman) { ChangeNameTitle(id, change0); } else { ChangeNameTitle(id, change1); } } } //修改玩家的称号 alliance = ServerAllianceManager.GetAllianceById(oldOccupant); if (alliance != null) { var change = new Dict_int_int_Data(); var tbTitle = Table.GetNameTitle(5000); change.Data.Add(tbTitle.FlagId, 0); tbTitle = Table.GetNameTitle(5001); change.Data.Add(tbTitle.FlagId, 0); foreach (var id in alliance.mDBData.Members) { ChangeNameTitle(id, change); } } //通知logic,本服的王城占领者变了 NotifyAllianceWarInfo(_this, occupantId); Init(_this); }
public void NotifyAllianceWarOccupantData(AllianceWarOccupantData data) { var e = new BattleUnionSyncOccupantChange(data); EventDispatcher.Instance.DispatchEvent(e); }