using System.Drawing; namespace Application.Domain; public class GameTool { /// /// 单位转换 /// /// /// public static string ConvertCopperName(long glod) { string result = string.Empty; string glodStr = glod.ToString(); int yin = 0; int t = 0; if (glodStr.Length > 3) { yin = Convert.ToInt32(glodStr.Substring(0, glodStr.Length - 3)); t = Convert.ToInt32(glodStr.Substring(glodStr.Length - 3, 3)); } else { t = Convert.ToInt32(glod); } result += yin > 0 ? string.Format("{0}银", yin) : ""; result += t > 0 ? string.Format("{0}铜", t) : ""; result = string.IsNullOrEmpty(result) ? "0铜" : result; return result; } /// /// 获取等级基础属性 /// /// /// 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; } /// /// 获取等级升级经验 /// /// /// 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 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 GetPropWeight(string goodsType, string parameter) { int weight = 0; if (goodsType.Equals(nameof(GameEnum.PropCode.Goods))) { var goodsService = App.GetService(); 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(); 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 距离计算 /// /// 计算海里 /// /// /// /// 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 距离计算 }