|
@@ -1,7 +1,6 @@
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
-using MongoDB.Driver;
|
|
|
using System.Text.RegularExpressions;
|
|
|
using Newtonsoft.Json;
|
|
|
using Newtonsoft.Json.Linq;
|
|
@@ -36,78 +35,82 @@ namespace ET.Server
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 单位死亡事件
|
|
|
- /// </summary>
|
|
|
- /// <param name="self"></param>
|
|
|
- /// <param name="msg"></param>
|
|
|
- public static void OnUnitDead(this MapEventComponent self, JObject msg)
|
|
|
- {
|
|
|
- }
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 副本消息
|
|
|
/// </summary>
|
|
|
/// <param name="self"></param>
|
|
|
/// <param name="msg"></param>
|
|
|
- public static void OnMessageEvent(this MapEventComponent self, JObject json)
|
|
|
+ public static void OnMessage(this MapEventComponent self, JObject json)
|
|
|
{
|
|
|
- var msg = Convert.ToString(json.SelectToken("msg"));
|
|
|
- switch (msg)
|
|
|
+ string msg = Convert.ToString(json.SelectToken("msg"));
|
|
|
+
|
|
|
+ string[] parames = msg.Split(":");
|
|
|
+
|
|
|
+ switch (parames[0])
|
|
|
{
|
|
|
- case "Dead:Tower1":
|
|
|
+ case "Dead":
|
|
|
{
|
|
|
- Log.Debug($"塔1死亡事件...");
|
|
|
- self.GetParent<Map>().DeadUnits.Add(1001);
|
|
|
- self.TransferUnitsToNewTower();
|
|
|
- return;
|
|
|
- }
|
|
|
- case "Dead:Tower2":
|
|
|
- {
|
|
|
- Log.Debug($"塔2死亡事件...");
|
|
|
- self.GetParent<Map>().DeadUnits.Add(1002);
|
|
|
- return;
|
|
|
- }
|
|
|
- case "Dead:Tower3":
|
|
|
- {
|
|
|
- Log.Debug($"塔3死亡事件...");
|
|
|
- self.GetParent<Map>().DeadUnits.Add(1003);
|
|
|
+ if ("Tower1".Equals(parames[1]))
|
|
|
+ {
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if ("Tower2".Equals(parames[1]))
|
|
|
+ {
|
|
|
+ Log.Debug($"塔2死亡事件...");
|
|
|
+ self.GetParent<Map>().DeadUnits.Add(1002);
|
|
|
+ return;
|
|
|
+ } else if ("Tower3".Equals(parames[1]))
|
|
|
+ {
|
|
|
+ Log.Debug($"塔3死亡事件...");
|
|
|
+ self.GetParent<Map>().DeadUnits.Add(1003);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ int objId = int.Parse(parames[1]);
|
|
|
+ if (objId > 0)
|
|
|
+ {
|
|
|
+ Log.Debug($"单位:{objId}死亡事件...");
|
|
|
+ Map map = self.GetParent<Map>();
|
|
|
+ Struct.UnitPlayerData unitPlayerData = map.GetUnitPlayerByObjId(objId);
|
|
|
+ if (unitPlayerData != null)
|
|
|
+ {
|
|
|
+ unitPlayerData.DeadState = 1;
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
return;
|
|
|
}
|
|
|
- }
|
|
|
- if (msg.StartsWith("Dead:{"))
|
|
|
- {
|
|
|
- //玩家单位死亡
|
|
|
- Match m = Regex.Match(msg, "Dead:{(\\d+)}");
|
|
|
- if (m.Groups.Count == 2)
|
|
|
+ case "Revive":
|
|
|
{
|
|
|
- try
|
|
|
- {
|
|
|
- int objid = int.Parse(m.Groups[1].Value);
|
|
|
- //TODO: 处理玩家单位死亡
|
|
|
- }
|
|
|
- catch (Exception)
|
|
|
+ int objId = int.Parse(parames[1]);
|
|
|
+ if (objId > 0)
|
|
|
{
|
|
|
- Log.Error("Illegal Dead msg");
|
|
|
+ Log.Debug($"单位:{objId}复活事件...");
|
|
|
+ Map map = self.GetParent<Map>();
|
|
|
+ Struct.UnitPlayerData unitPlayerData = map.GetUnitPlayerByObjId(objId);
|
|
|
+ if (unitPlayerData != null)
|
|
|
+ {
|
|
|
+ unitPlayerData.DeadState = 0;
|
|
|
+ }
|
|
|
+ return;
|
|
|
}
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
- else if (msg.StartsWith("Revive:{"))
|
|
|
- {
|
|
|
- //TODO:处理玩家单位复活
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
private static void TransferUnitsToNewTower(this MapEventComponent self)
|
|
|
{
|
|
|
Map map = self.GetParent<Map>();
|
|
|
- var mapid = map.Id.ToString();
|
|
|
|
|
|
int cnt = 0;
|
|
|
- foreach(var player in map.UnitPlayers.Values)
|
|
|
+ foreach(Struct.UnitPlayerData player in map.UnitPlayers.Values)
|
|
|
{
|
|
|
//TODO: 转移坐标为当前战斗区域中的随机位置
|
|
|
- map.GetXmdsManager().transferUnit(mapid, player.ObjId, 178f + (cnt++), 139f);
|
|
|
+ map.GetXmdsManager().transferUnit(map.Id.ToString(), player.ObjId, 178f + (cnt++), 139f);
|
|
|
}
|
|
|
Log.Debug($"transfer unit: {cnt}");
|
|
|
}
|
|
@@ -126,7 +129,8 @@ namespace ET.Server
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+ // 场景结束逻辑
|
|
|
+ map.GetComponent<MapRankComponent>().OnGameOver();
|
|
|
// 记录玩家历史
|
|
|
map.SyncPlayerHistoryData(map.Player);
|
|
|
// 战斗服场景玩家离开
|
|
@@ -164,31 +168,6 @@ namespace ET.Server
|
|
|
/// <param name="msg"></param>
|
|
|
public static void OnBattleReport(this MapEventComponent self, JObject msg)
|
|
|
{
|
|
|
- string data = Convert.ToString(msg.SelectToken("data"));
|
|
|
- if (string.IsNullOrEmpty(data))
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- List<Struct.BattleReports> battleReports = JsonConvert.DeserializeObject<List<Struct.BattleReports>>(data);
|
|
|
- if (battleReports is not { Count: > 0 })
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- Map map = self.GetParent<Map>();
|
|
|
-
|
|
|
- List<Struct.BattleReports> list = (from report in battleReports
|
|
|
- where report.Force == 1
|
|
|
- let ID = report.ID
|
|
|
- let PlayerUUID = string.IsNullOrEmpty(report.PlayerUUID)? "0" : report.PlayerUUID
|
|
|
- let TemplateID = report.TemplateId
|
|
|
- let Name = "玩家" + ID + "." + TemplateID
|
|
|
- let Force = report.Force
|
|
|
- let TotalDamage = report.TotalDamage
|
|
|
- select new Struct.BattleReports(ID, PlayerUUID, TemplateID, Name, Force, TotalDamage)).ToList();
|
|
|
-
|
|
|
- map.GetComponent<MapRankComponent>().UpdateRank(list, map);
|
|
|
}
|
|
|
}
|
|
|
}
|