|
@@ -1,6 +1,7 @@
|
|
|
-using System;
|
|
|
+using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
+using System.Numerics;
|
|
|
using BattleIce;
|
|
|
using Newtonsoft.Json;
|
|
|
using Newtonsoft.Json.Linq;
|
|
@@ -24,7 +25,6 @@ namespace ET.Server
|
|
|
self.Type = self.Prop.Type;
|
|
|
self.Player = player;
|
|
|
self.UnitPlayers = new Dictionary<string, Struct.UnitPlayerData>();
|
|
|
- self.DeadUnits = new List<int>();
|
|
|
|
|
|
// 战斗服事件组件
|
|
|
self.AddComponent<MapEventComponent>();
|
|
@@ -361,27 +361,6 @@ namespace ET.Server
|
|
|
return self.UnitPlayers.Values.FirstOrDefault(unitPlayer => unitPlayer != null && unitPlayer.ObjId == objId);
|
|
|
}
|
|
|
|
|
|
- /// <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"
|
|
|
- // };
|
|
|
- // todo 默认塔1位置,后面调整为路点
|
|
|
- return "218;78";
|
|
|
- }
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 玩家增加贡献值
|
|
|
/// </summary>
|
|
@@ -431,5 +410,33 @@ namespace ET.Server
|
|
|
{
|
|
|
return self.DomainScene().GetComponent<GameDouyinComponent>().TokenIsNull;
|
|
|
}
|
|
|
+
|
|
|
+ //获得当前战场(当前塔位置),随机位置
|
|
|
+ public static Vector2 GetRandomPlayerPos(this Map self)
|
|
|
+ {
|
|
|
+ Vector2[] TowerPos = { new Vector2() { X = 103, Y = 197 }, new Vector2() { X = 190, Y = 133 }, new Vector2() { X = 104, Y = 69 } };
|
|
|
+ int index = self.CurBattleIndex;
|
|
|
+ var tower = TowerPos[index];
|
|
|
+ var rand = new Random();
|
|
|
+ float r;
|
|
|
+ double ang;
|
|
|
+ if (index == 0)
|
|
|
+ {
|
|
|
+ r = (float)Math.Sqrt(rand.Next(2500)) + 10;
|
|
|
+ ang = rand.Next(22) / 180.0f * Math.PI + Math.PI * 78f / 180f + Math.PI;
|
|
|
+ }
|
|
|
+ else if (index == 1)
|
|
|
+ {
|
|
|
+ r = (float)Math.Sqrt(rand.Next(3136)) + 10;
|
|
|
+ ang = rand.Next(20) / 180.0f * Math.PI + Math.PI * 76f / 180f;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ r = (float)Math.Sqrt(rand.Next(2500)) + 10;
|
|
|
+ ang = rand.Next(22) / 180.0f * Math.PI + Math.PI * 150f / 180f;
|
|
|
+ }
|
|
|
+
|
|
|
+ return new Vector2(tower.X + (float)(r * Math.Cos(ang)), tower.Y - (float)(r * Math.Sin(ang)));
|
|
|
+ }
|
|
|
}
|
|
|
}
|