|
@@ -26,7 +26,10 @@ namespace ET.Server
|
|
|
self.MapId = Convert.ToInt32(opts.SelectToken("areaId"));
|
|
|
self.Prop = MapConfigCategory.Instance.Get(self.MapId);
|
|
|
self.Type = self.Prop.Type;
|
|
|
- self.UnitObjIds = new List<int>();
|
|
|
+ self.UnitPlayers = new Dictionary<string, int>();
|
|
|
+ self.UnitObjIds = new Dictionary<string, int>();
|
|
|
+ self.UnitPlayerLikes = new Dictionary<string, int>();
|
|
|
+
|
|
|
// 场景事件组件
|
|
|
self.AddComponent<MapEventComponent>();
|
|
|
// 场景复活组件
|
|
@@ -153,37 +156,43 @@ namespace ET.Server
|
|
|
}
|
|
|
|
|
|
/** 创建单位 **/
|
|
|
- public static async ETTask<int> AddUnits(this Map self, string instanceId, string data)
|
|
|
+ public static async ETTask<int> AddUnits(this Map self, List<Struct.MonsterUnit> data, bool needReturn)
|
|
|
{
|
|
|
- await ETTask.CompletedTask;
|
|
|
- return self.GetXmdsManager().addUnits(instanceId, data);
|
|
|
- }
|
|
|
-
|
|
|
- /** 创建单位 **/
|
|
|
- public static async ETTask<int> AddUnits(this Map self, Struct.MonsterUnit unit, bool needReturn)
|
|
|
- {
|
|
|
- List<Struct.MonsterUnit> listData = new List<Struct.MonsterUnit>();
|
|
|
- listData.Add(unit);
|
|
|
+ if (data.Count <= 0)
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
|
|
|
int addUnitsResult = 0;
|
|
|
- int objId = 0;
|
|
|
|
|
|
if (needReturn) {
|
|
|
- addUnitsResult = self.GetXmdsManager().addUnits(self.Id.ToString().Trim(), JsonConvert.SerializeObject(listData, Formatting.Indented));
|
|
|
- Log.Info($"addUnits needReturn : mapId={self.MapId}, instanceId={self.Id.ToString().Trim()}, data={listData}, add units result={addUnitsResult}");
|
|
|
+ addUnitsResult = self.GetXmdsManager().addUnits(self.Id.ToString().Trim(), JsonConvert.SerializeObject(data, Formatting.Indented));
|
|
|
+ Log.Info($"addUnits needReturn : mapId={self.MapId}, instanceId={self.Id.ToString().Trim()}, data={data}, add units result={addUnitsResult}");
|
|
|
} else
|
|
|
{
|
|
|
- objId = await self.AddUnits(self.Id.ToString().Trim(), JsonConvert.SerializeObject(listData, Formatting.Indented));
|
|
|
+ int objId = self.GetXmdsManager().addUnits(self.Id.ToString().Trim(), JsonConvert.SerializeObject(data, Formatting.Indented));
|
|
|
Log.Info($"addUnits: mapId={self.MapId}, instanceId={self.Id.ToString().Trim()}, objId={objId}");
|
|
|
}
|
|
|
|
|
|
- return objId;
|
|
|
+ await ETTask.CompletedTask;
|
|
|
+ return addUnitsResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static async ETTask<int> AddUnits(this Map self, Struct.MonsterUnit data, bool needReturn)
|
|
|
+ {
|
|
|
+ List<Struct.MonsterUnit> listData = new List<Struct.MonsterUnit>();
|
|
|
+ listData.Add(data);
|
|
|
+ return await self.AddUnits(listData, needReturn);
|
|
|
}
|
|
|
|
|
|
- /** 移除单位 **/
|
|
|
- public static async ETTask RemoveUnit(this Map self, int unitId)
|
|
|
+ /// <summary>
|
|
|
+ /// 移除单位,战斗服创建的unit
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="self"></param>
|
|
|
+ /// <param name="objectId"></param>
|
|
|
+ public static async ETTask RemovePointUnit(this Map self, int objectId)
|
|
|
{
|
|
|
- self.GetXmdsManager().removeUnit(self.Id.ToString().Trim(), unitId);
|
|
|
+ self.GetXmdsManager().removePointUnit(self.Id.ToString().Trim(), objectId);
|
|
|
await ETTask.CompletedTask;
|
|
|
}
|
|
|
|
|
@@ -212,5 +221,93 @@ namespace ET.Server
|
|
|
{
|
|
|
return self.IsGameOver;
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 增加单位玩家
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="self"></param>
|
|
|
+ /// <param name="openId"></param>
|
|
|
+ /// <param name="objId"></param>
|
|
|
+ public static void AddUnitObjId(this Map self, string openId, int objId)
|
|
|
+ {
|
|
|
+ if (objId <= 0 || self.IsGameOver())
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!self.UnitObjIds.TryAdd(openId, objId))
|
|
|
+ {
|
|
|
+ self.UnitObjIds[openId] = objId;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取单位玩家objId
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="self"></param>
|
|
|
+ /// <param name="openId"></param>
|
|
|
+ public static int GetUnitObjId(this Map self, string openId)
|
|
|
+ {
|
|
|
+ if (self.UnitObjIds.TryGetValue(openId, out int objId))
|
|
|
+ {
|
|
|
+ return objId;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 添加单位玩家
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="self"></param>
|
|
|
+ /// <param name="openId"></param>
|
|
|
+ /// <param name="templateId"></param>
|
|
|
+ public static void AddUnitPlayer(this Map self, string openId, int templateId)
|
|
|
+ {
|
|
|
+ if (templateId <= 0 || self.IsGameOver())
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!self.UnitPlayers.TryAdd(openId, templateId))
|
|
|
+ {
|
|
|
+ self.UnitPlayers[openId] = templateId;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取单位玩家模板id
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="self"></param>
|
|
|
+ /// <param name="openId"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public static int GetUnitTemplateId(this Map self, string openId)
|
|
|
+ {
|
|
|
+ if (self.UnitPlayers.TryGetValue(openId, out int templateId))
|
|
|
+ {
|
|
|
+ return templateId;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取当前坐标xy
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="self"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public static string GetCurXY(this Map self)
|
|
|
+ {
|
|
|
+ return self.DeadUnits.Count switch
|
|
|
+ {
|
|
|
+ // 1塔位置
|
|
|
+ 0 => "230;85",
|
|
|
+ // 1塔挂了,2塔位置
|
|
|
+ 1 when self.DeadUnits.Contains(1001) => "150;85",
|
|
|
+ // 1塔2塔挂了,3塔位置
|
|
|
+ 2 when self.DeadUnits.Contains(1001) && self.DeadUnits.Contains(1002) => "70;85",
|
|
|
+ _ => "230;85"
|
|
|
+ };
|
|
|
+ }
|
|
|
}
|
|
|
}
|