NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/VehicleCultivate/VehicleDataHelper.cs

304 lines
10 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using cfg.VihecleCultivateCfg;
using Framework;
using Gameplay;
using Gameplay.Level;
using Gameplay.Net;
using Gameplay.Vehicle.Data;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public static class VehicleDataHelper
{
public const int NotAdapt = 0;
public const int Adapt = 1;
public const int VeryAdapt = 2;
public static int GetVehicleSkillId(int vehicleId, bool isProCultivateData = false)
{
if (!isProCultivateData)
{
VehicleCultivateData vehicleInfo = VehicleCultivateDataManager.Instance.GetVehicleCultivateData((uint)vehicleId) as VehicleCultivateData;
int skillLv = 1;//(int)vehicleInfo.SumBonus(BonusType.SkillLv);
var skillLevelInfo = TableManager.Instance.Tables.VehicleSkllUpgrade.Get(vehicleInfo.Cfg.ID);
if (skillLevelInfo == null || skillLevelInfo.SkillIdList.Count == 0)
{
DebugUtil.LogError("载具id为{0}技能等级为{1}的表没配", vehicleInfo.Cfg.ID, skillLv);
return -1;
}
var levelIndex = skillLv;
if (levelIndex >= skillLevelInfo.SkillIdList.Count)
{
DebugUtil.LogError($"数据需求等级{skillLv}超过配置等级{skillLevelInfo.SkillIdList.Count},此处返回最大等级");
return skillLevelInfo.SkillIdList[^1];//-1;
}
return skillLevelInfo.SkillIdList[levelIndex];
}
else
{
var vehicleInfo = VehicleCultivateDataManager.Instance.GetVehicleCultivateData((uint)vehicleId);
var skillLv = 1;
var skillLevelInfo = TableManager.Instance.Tables.VehicleSkllUpgrade.Get(vehicleInfo.Cfg.ID);
if (skillLevelInfo == null || skillLevelInfo.SkillIdList.Count == 0)
{
DebugUtil.LogError("载具id为{0}技能等级为{1}的表没配", vehicleInfo.Cfg.ID, skillLv);
return -1;
}
var levelIndex = skillLv;
if (levelIndex >= skillLevelInfo.SkillIdList.Count)
{
DebugUtil.LogError($"数据需求等级{skillLv}超过配置等级{skillLevelInfo.SkillIdList.Count},此处返回最大等级");
return skillLevelInfo.SkillIdList[^1];//-1;
}
return skillLevelInfo.SkillIdList[levelIndex];
}
}
public static int GetVehicleSkillId(VehicleCultivateData vehicleInfo)
{
var skillLv = 1;
var skillLevelInfo = TableManager.Instance.Tables.VehicleSkllUpgrade.Get(vehicleInfo.Cfg.ID);
if (skillLevelInfo == null || skillLevelInfo.SkillIdList.Count == 0)
{
DebugUtil.LogError("载具id为{0}技能等级为{1}的表没配", vehicleInfo.Cfg.ID, skillLv);
return -1;
}
var levelIndex = skillLv;
if (levelIndex >= skillLevelInfo.SkillIdList.Count)
{
DebugUtil.LogError($"数据需求等级{skillLv}超过配置等级{skillLevelInfo.SkillIdList.Count},此处返回最大等级");
return skillLevelInfo.SkillIdList[^1];//-1;
}
return skillLevelInfo.SkillIdList[levelIndex];
}
public static BonusType GetBonusTypeByTerrainID(int terrainId)
{
switch (terrainId)
{
case 1:
return BonusType.TerrainPlain;
case 2:
return BonusType.TerrainMountain;
case 4:
return BonusType.TerrainForest;
case 5:
return BonusType.TerrainSnow;
}
DebugUtil.LogError("因为VehicleBonusType暂时不需要其他地形类型所以妹写");
return BonusType.TerrainPlain;
}
public static string GetTerrainAdaptStr(int terrainAdaptVal)
{
switch (terrainAdaptVal)
{
case NotAdapt:
return CommonUtils. GetLocalizeText("vehicleCultivate_NotAdapt");
case Adapt:
return CommonUtils.GetLocalizeText("vehicleCultivate_Adapt");
case VeryAdapt:
return CommonUtils.GetLocalizeText("vehicleCultivate_TeHua");
}
DebugUtil.LogError("载具的地形适应配置错了载具upbonus表");
return "拉取中";
}
/// <summary>
/// 获取载具头像路径
/// </summary>
/// <param name="iD"></param>
/// <returns></returns>
public static string GetVehiclePicPath(int iD)
{
var vehicleCfg = TableManager.Instance.Tables.VehicleConfig.GetOrDefault(iD);
if (vehicleCfg == null)
{
DebugUtil.LogError("载具配置表中没有id为{0}的配置", iD);
return null;
}
return CommonUtils.GetDefaultVehicleHeadPath((uint)iD);
}
/// <summary>
/// 获取载具高清图片路径
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string GetVehicleIconPath(int id)
{
var vehicleCfg = TableManager.Instance.Tables.VehicleConfig.GetOrDefault(id);
if (vehicleCfg == null)
{
DebugUtil.LogError("载具配置表中没有id为{0}的配置", id);
return null;
}
return vehicleCfg.Icon;
}
public static VehicleConfigData CombineConfigData(VehicleCultivateData infoData)
{
var rawConfig = infoData;
// 临时写死
var level = 1;
// 因为里面有-1
var skillLevel = 1;//infoData.SkillLevel() +
var configData = new VehicleConfigData();
configData.Init(rawConfig, level, skillLevel);
return configData;
}
public static VehicleConfigData CombineMonsterConfigData(LevelData.NPCInfo npcInfo)
{
var monsterConfig = TableManager.Instance.Tables.Monster.GetOrDefault(npcInfo.id);
var configData = new VehicleConfigData();
configData.Init(monsterConfig);
return configData;
}
public static string GetVehicleLocalizeName(int id)
{
var vehicleLocalNameKey = "vehicle_name_" + (id % 100).ToString("D2");
return CommonUtils.GetLocalizeText(vehicleLocalNameKey);
}
public static string GetVehicleOrganization(int id)
{
var vehicleCfg = TableManager.Instance.Tables.VehicleConfig.GetOrDefault(id);
if (vehicleCfg == null)
{
DebugUtil.LogError("载具配置表中没有id为{0}的配置", id);
return null;
}
return CommonUtils.GetLocalizeText("VehicleOrg_" + vehicleCfg.VehicleType);
}
public static string GetVehicleCategory(int id)
{
var vehicleCfg = TableManager.Instance.Tables.VehicleConfig.GetOrDefault(id);
if (vehicleCfg == null)
{
DebugUtil.LogError("载具配置表中没有id为{0}的配置", id);
return null;
}
return CommonUtils.GetLocalizeText("VehicleCategory_" + vehicleCfg.Category);
}
public static bool IsVehicleSkinUnlock(int skinID)
{
var table = TableManager.Instance.Tables.VehiclePaint;
var cfg = table.GetOrDefault(skinID);
if (cfg == null)
{
DebugUtil.LogError("VehiclePaint表中没有id为{0}的配置", skinID);
return false;
}
var itemID = cfg.ItemID;
return CategoryManager.Instance.GetItemCount(itemID) > 0;
}
public static string GetVehicleSkinName(int skinID)
{
var table = TableManager.Instance.Tables.VehiclePaint;
var cfg = table.GetOrDefault(skinID);
if (cfg == null)
{
DebugUtil.LogError("VehiclePaint表中没有id为{0}的配置", skinID);
return null;
}
return CommonUtils.GetLocalizeText("VehiclePaint_name_" + skinID);
}
/// <summary>
/// 从升级部件中找到最高等级的武器
/// </summary>
/// <param name="UpgradeComponent"></param>
/// <returns></returns>
public static long FindMaxLevelWeapon(List<uint> UpgradeComponent)
{
var MaxLevelFort = 0L;
var maxLevel = 0;
var compCfg = TableManager.Instance.Tables.VehicleComponent;
foreach (var fort in UpgradeComponent)
{
var cfg = compCfg.GetOrDefault(fort);
if(cfg == null)
{
DebugUtil.Log("VehicleComponent表中没有id为{0}的配置", fort);
continue;
}
if (cfg.ComponentType == ComponentType.Component_2)
{
var level = fort % 100;
if (level > maxLevel)
{
maxLevel = (int)level;
MaxLevelFort = fort;
}
}
}
return MaxLevelFort;
}
public static DataVehiclePaint GetVehiclePartPaint(int vehicleID, PaintType type)
{
var cfg = Actor.Instance.Character.GetVehicleDevelopment(vehicleID);
if (cfg == null)
{
DebugUtil.LogError("没有找到id为{0}的载具涂装配置", vehicleID);
return null;
}
var paintID = cfg.paint_set[(int)type];
var paintCfg = TableManager.Instance.Tables.VehiclePaint.GetOrDefault((int)paintID);
return paintCfg;
}
public static GameObject FindVehiclePartRoot(GameObject vehicleModel, int Vehicle, PaintType type)
{
var vehicleID = $"{Vehicle % 100:D2}";
string goName = "";
switch (type)
{
case PaintType.Entirety:
goName = string.Format("C000{0}/G_C000{0}_M", vehicleID);
break;
case PaintType.Fort:
var allTrans = vehicleModel.GetComponentsInChildren<Transform>();
var pointName = "Battery_point01";
var fireTrans = allTrans.First(t => t.name == pointName).GetChild(0);
if (fireTrans != null)
{
var renderers = fireTrans.GetComponentsInChildren<SkinnedMeshRenderer>();
if (renderers != null && renderers.Length > 0)
{
return renderers[0].gameObject;
}
}
break;
case PaintType.CaterpillarBelt:
goName = string.Format("C000{0}/G_C000{0}_D", vehicleID);
break;
default:
DebugUtil.Log("未知涂装类型");
break;
}
var body = CommonUtils.GetGameObject(vehicleModel, goName);
return body;
}
}