using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace ET.Server { [FriendOf(typeof (MapEventComponent))] [FriendOf(typeof (Map))] public static class MapEventComponentSystem { public class MapEventComponentAwakeSystem: AwakeSystem { /// /// 场景事件组件创建 /// /// protected override void Awake(MapEventComponent self) { Log.Info($"创建战斗服事件组件..."); } } public class MapEventComponentDestroySystem: DestroySystem { /// /// 场景事件组件销毁 /// /// protected override void Destroy(MapEventComponent self) { Log.Info($"销毁战斗服事件组件..."); } } /// /// 副本消息 /// /// /// public static void OnMessage(this MapEventComponent self, JObject msg) { string str = Convert.ToString(msg.SelectToken("msg")); string[] parames = str.Split(":"); switch (parames[0]) { case "Dead": { if ("Tower1".Equals(parames[1])) { Log.Debug($"塔1死亡事件..."); Map map = self.GetParent(); map.CurBattleIndex = 1; map.TransferUnitsToNewTower(); return; } else if ("Tower2".Equals(parames[1])) { Log.Debug($"塔2死亡事件..."); Map map = self.GetParent(); map.CurBattleIndex = 2; map.TransferUnitsToNewTower(); return; } else if ("Tower3".Equals(parames[1])) { Log.Debug($"塔3死亡事件..."); return; } else { int objId = int.Parse(parames[1]); if (objId > 0) { Log.Debug($"单位:{objId}死亡事件..."); Map map = self.GetParent(); Struct.UnitPlayerData unitPlayerData = map.GetUnitPlayerByObjId(objId); if (unitPlayerData != null) { unitPlayerData.DeadState = 1; map.DeadUnitPlayer.Add(unitPlayerData.ObjId); } } } break; } case "Revive": { int objId = int.Parse(parames[1]); if (objId > 0) { Log.Debug($"单位:{objId}复活事件..."); Map map = self.GetParent(); Struct.UnitPlayerData unitPlayerData = map.GetUnitPlayerByObjId(objId); if (unitPlayerData != null) { unitPlayerData.DeadState = 0; map.DeadUnitPlayer.Remove(unitPlayerData.ObjId); } } break; } } } /// /// 场景结算事件 /// /// public static void OnGameOver(this MapEventComponent self) { Map map = self.GetParent(); map.IsGameOver = true; if (map.Player == null) { return; } // 场景结束排行榜逻辑 map.GetComponent().OnGameOver(); // 玩家离开 map.Player.GetComponent().MapData.ready = false; // 记录玩家历史 map.SyncPlayerHistoryData(map.Player); // 战斗服场景玩家离开 map.PlayerLeaveRequest(map.Player, false); // 本地场景移除玩家 map.RemovePlayer(map.Player, false); // 战斗服结束场景 map.GetZoneManager().destroyZoneRequest(map.Id.ToString()); // 移除本地场景数据 map.DomainScene().GetComponent().Remove(map.Id, map.RoomId); map.Player.Map = null; map.Dispose(); } /// /// 拾取道具 /// /// /// public static void OnPickItem(this MapEventComponent self, JObject msg) { } /// /// 击杀boss /// /// /// public static void OnKillBoss(this MapEventComponent self, JObject msg) { } /// /// 战报统计 /// /// /// public static void OnBattleReport(this MapEventComponent self, JObject msg) { } } }