Files
Kg.SeaTime/Service/Application.Domain/Tool/Base/GameTool.cs
2026-06-18 18:54:22 +08:00

211 lines
5.5 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;
}
public static string GetEquQualityName(int count)
{
string result = "白";
switch (count)
{
case 1:
result = "红";
break;
case 2:
result = "橙";
break;
case 3:
result = "黄";
break;
case 4:
result = "绿";
break;
case 5:
result = "青";
break;
case 6:
result = "粉";
break;
case 7:
result = "紫";
break;
case 8:
result = "金";
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
}