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 json) { string msg = Convert.ToString(json.SelectToken("msg")); string[] parames = msg.Split(":"); switch (parames[0]) { case "Dead": { if ("Tower1".Equals(parames[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); } return; } } return; } 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); } return; } return; } } } /// /// 场景结算事件 /// /// public static void OnGameOver(this MapEventComponent self) { Map map = self.GetParent(); map.IsGameOver = true; if (map.Player == null) { return; } // 场景结束排行榜逻辑 map.GetComponent().OnGameOver(); // 记录玩家历史 map.SyncPlayerHistoryData(map.Player); // 战斗服场景玩家离开 map.PlayerLeaveRequest(map.Player, false); // 本地场景移除玩家 map.RemovePlayer(map.Player, false); // 战斗服结束场景 map.GetZoneManager().destroyZoneRequest(map.Id.ToString()); map.Player.Map = null; } /// /// 拾取道具 /// /// /// 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) { } } }