177 lines
4.7 KiB
C#
177 lines
4.7 KiB
C#
using System.Drawing;
|
|
|
|
namespace Application.Domain;
|
|
|
|
public class GameTool
|
|
{
|
|
/// <summary>
|
|
/// 获取等级基础属性
|
|
/// </summary>
|
|
/// <param name="lev"></param>
|
|
/// <returns></returns>
|
|
public static unit_user_attr GetAttrData(int lev)
|
|
{
|
|
unit_user_attr data = new unit_user_attr();
|
|
data.lev = lev;
|
|
data.minAtk = lev + 2;
|
|
data.maxAtk = lev + Convert.ToInt32(lev * 0.05) + 4;
|
|
data.defense = lev;
|
|
data.agility = lev;
|
|
data.upBlood = ((lev - 1) * 5) + 80;
|
|
data.upMorale = 100 + (lev / 5) * 10;
|
|
data.levUpdate = TimeExtend.GetTimeStampSeconds;
|
|
return data;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取等级升级经验
|
|
/// </summary>
|
|
/// <param name="lev"></param>
|
|
/// <returns></returns>
|
|
public static long GetUserUpExp(int lev)
|
|
{
|
|
long result = 50 * ((lev * lev * lev) + (5 * lev)) - 80;
|
|
return result;
|
|
}
|
|
|
|
public static bool AreaVerify(int area, string areas)
|
|
{
|
|
List<string> okArea = areas.Split(',').ToList();
|
|
return okArea.Any(it => it == "0" || it == area.ToString());
|
|
}
|
|
|
|
public static string GetCurrencyName(string payCode)
|
|
{
|
|
string result = "";
|
|
switch (payCode)
|
|
{
|
|
case "gold":
|
|
result = "金元";
|
|
break;
|
|
case "cowry":
|
|
result = "金贝";
|
|
break;
|
|
case "copper":
|
|
result = "铜贝";
|
|
break;
|
|
case "teach":
|
|
result = "师德";
|
|
break;
|
|
case "renown":
|
|
result = "声望";
|
|
break;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public static async Task<int> GetPropWeight(string goodsType, string parameter)
|
|
{
|
|
int weight = 0;
|
|
if (goodsType.Equals(nameof(GameEnum.PropCode.Goods)))
|
|
{
|
|
var goodsService = App.GetService<IGameGoodsService>();
|
|
var info = await goodsService.GetGoodsInfo(Convert.ToInt32(parameter));
|
|
if (info != null)
|
|
{
|
|
weight = (int)info.weight;
|
|
}
|
|
}
|
|
else if (goodsType.Equals(nameof(GameEnum.PropCode.Equ)))
|
|
{
|
|
var equService = App.GetService<IGameEquService>();
|
|
var info = await equService.GetEquInfo(Convert.ToInt32(parameter));
|
|
if (info != null)
|
|
{
|
|
weight = (int)info.weight;
|
|
}
|
|
}
|
|
|
|
return weight;
|
|
}
|
|
|
|
public static int GetEquPlaceCount(string code)
|
|
{
|
|
int result = 0;
|
|
switch (code)
|
|
{
|
|
case "Mouth":
|
|
result = (int)EquEnum.EquPlace.Mouth;
|
|
break;
|
|
|
|
case "Hold":
|
|
result = (int)EquEnum.EquPlace.Hold;
|
|
break;
|
|
|
|
case "Vice":
|
|
result = (int)EquEnum.EquPlace.Vice;
|
|
break;
|
|
|
|
case "Head":
|
|
result = (int)EquEnum.EquPlace.Head;
|
|
break;
|
|
|
|
case "Wear":
|
|
result = (int)EquEnum.EquPlace.Wear;
|
|
break;
|
|
|
|
case "Waist":
|
|
result = (int)EquEnum.EquPlace.Waist;
|
|
break;
|
|
|
|
case "Foot":
|
|
result = (int)EquEnum.EquPlace.Foot;
|
|
break;
|
|
|
|
case "Ornaments":
|
|
result = (int)EquEnum.EquPlace.Ornaments;
|
|
break;
|
|
|
|
case "Fashion":
|
|
result = (int)EquEnum.EquPlace.Fashion;
|
|
break;
|
|
|
|
case "Wing":
|
|
result = (int)EquEnum.EquPlace.Wing;
|
|
break;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
#region 距离计算
|
|
|
|
/// <summary>
|
|
/// 计算海里
|
|
/// </summary>
|
|
/// <param name="onMap"></param>
|
|
/// <param name="toMap"></param>
|
|
/// <returns></returns>
|
|
public static int ComputeMile(string onMap, string toMap)
|
|
{
|
|
string[] _OnMap = onMap.Split('_');
|
|
int sx = Convert.ToInt32(_OnMap[0]);
|
|
int sy = Convert.ToInt32(_OnMap[1]);
|
|
string[] _ToMap = toMap.Split('_');
|
|
int ex = Convert.ToInt32(_ToMap[0]);
|
|
int ey = Convert.ToInt32(_ToMap[1]);
|
|
return GetDistanceByLocation(sx, sy, ex, ey) * 10;
|
|
}
|
|
|
|
private static int GetDistance(PointF start, PointF end)
|
|
{
|
|
double value = Math.Sqrt(Math.Abs(start.X - end.X) * Math.Abs(start.X - end.X) + Math.Abs(start.Y - end.Y) * Math.Abs(start.Y - end.Y));
|
|
|
|
return Convert.ToInt32(value);
|
|
}
|
|
|
|
private static int GetDistanceByLocation(int onX, int onY, int toX, int toY)
|
|
{
|
|
PointF start = new PointF(onX, onY);
|
|
PointF end = new PointF(toX, toY);
|
|
return GetDistance(start, end);
|
|
}
|
|
|
|
#endregion 距离计算
|
|
|
|
} |