Files
Kg.SeaTime/Service/Application.Domain/Tool/Base/GameTool.cs
Putoo 8550d85659 222
2026-06-02 17:58:36 +08:00

127 lines
3.6 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;
}
#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
}