using cfg.ActorCfg; using cfg.VehicleCfg; using cfg.VihecleCultivateCfg; using Framework; using PhxhSDK; using System.Collections.Generic; using Gameplay; using DG.Tweening; using NLDPB; public class VehicleCultivateDataManager : Singlenton, IInitable { public List DataList; public Dictionary DataDic; void IInitable.Init() { DataList = new List(); DataDic = new Dictionary(); } void IInitable.Release() { DataList.Clear(); DataDic.Clear(); } public void Add(Gameplay.Net.VehicleInfo info) { VehicleCultivateData info2; if (DataDic.TryGetValue(info.nID, out info2)) { DataDic[info.nID].Refresh(info); } else { info2 = new VehicleCultivateData(); info2.Refresh(info); DataList.Add(info2); DataDic[info.nID] = info2; } } public void AddAllCfgVehicles() { var allConfigList = TableManager.Instance.Tables.VehicleConfig.DataList; for (int i = 0; i < allConfigList.Count; i++) { var configItem = allConfigList[i]; var isAvailable = _CheckVehicleCfgAvailable(configItem); if (!isAvailable) { DebugUtil.LogError($"载具配置不可用:{configItem.ID}"); continue; } var nId = (uint)configItem.ID; if (DataDic.ContainsKey(nId)) { continue; } var info2 = new VehicleCultivateData(); info2.Cfg = configItem; info2.nID = nId; DataList.Add(info2); DataDic[nId] = info2; } } private bool _CheckVehicleCfgAvailable(DataVehicle checkCfg) { if (checkCfg == null) { DebugUtil.LogError("载具配置为空"); return false; } if (checkCfg.ID == 0) { DebugUtil.LogError("载具配置ID为0"); return false; } var upgradeAttack = TableManager.Instance.Tables.VehicleUpgrade.Get(checkCfg.ID, VihecleUpgradeType.Damage); if (upgradeAttack == null) { DebugUtil.LogError("载具配置ID为{0}的攻击升级配置为空", checkCfg.ID); return false; } var skillCfg = TableManager.Instance.Tables.VehicleSkllUpgrade.Get(checkCfg.ID); if (skillCfg == null) { DebugUtil.LogError("载具配置ID为{0}的技能升级配置为空", checkCfg.ID); return false; } return true; } public VehicleCultivateData GetVehicleCultivateData(uint selectID) { VehicleCultivateData info; if (DataDic.TryGetValue(selectID, out info)) { return info; } else { DebugUtil.LogError("该角色找不到没有Id为 {0}的载具", selectID); return null; } } } public class VehicleCultivateData : Gameplay.Net.VehicleInfo { public DataVehicle Cfg; public VehicleCultivateData(uint ID,ushort[] UpgradeCountParam) { nID = ID; for (ushort i = 0; i < UpgradeCount.Length; i++) { UpgradeCount[i] = UpgradeCountParam[i]; } } public VehicleCultivateData() { } public string Name => CommonUtils.GetLocalizeText(Cfg.NameLocal); public int Hp() { //if(Cfg.Hps.Count<= UpgradeCount[(int)cfg.ActorCfg.VihecleUpgradeType.HP]) //{ // DebugUtil.LogError("载具id为{0}的hp没有配到{1}位", Cfg.ID, UpgradeCount[(int)cfg.ActorCfg.VihecleUpgradeType.HP]); // return 0; //} //return Cfg.Hps[UpgradeCount[(int)cfg.ActorCfg.VihecleUpgradeType.HP]]+(int)SumBonus(BonusType.Hp); return Cfg.HP + (int)SumBonus(BonusType.Hp)+(int)SumUpgrades(VihecleUpgradeType.HP); } public float SumUpgrades(VihecleUpgradeType viType) { DataVehicleUpgrade dataVehicleUpgrade = VehicleUpgradeTableHelper.Get(Cfg.ID, viType); return dataVehicleUpgrade.PowerUpAmount * UpgradeCount[(int)viType]; } public float MaxUpgrades(VihecleUpgradeType viType) { DataVehicleUpgrade dataVehicleUpgrade = VehicleUpgradeTableHelper.Get(Cfg.ID, viType); return dataVehicleUpgrade.PowerUpAmount * dataVehicleUpgrade.MaxCount; } public float SumBonus(BonusType bType) { float count = 0; VehicleUpgradeBonusAttri vTable = TableManager.Instance.Tables.VehicleUpgradeBonusAttri; for (int i = 0; i < vTable.DataList.Count; i++) { if ((vTable.DataList[i].BonusType == bType) && (vTable.DataList[i].SumCount= TableManager.Instance.Tables.VehicleUpgrade.Get((int)nID, cfg.ActorCfg.VihecleUpgradeType.HP).MaxCount; } public bool IsMaxDamageLv() { return UpgradeCount[(int)cfg.ActorCfg.VihecleUpgradeType.Damage] >= TableManager.Instance.Tables.VehicleUpgrade.Get((int)nID, cfg.ActorCfg.VihecleUpgradeType.Damage).MaxCount; } public bool IsMaxMoveSpeedLv() { return UpgradeCount[(int)cfg.ActorCfg.VihecleUpgradeType.MoveSpeed - 1] >= TableManager.Instance.Tables.VehicleUpgrade.Get((int)nID, cfg.ActorCfg.VihecleUpgradeType.MoveSpeed).MaxCount; } public bool IsMaxBulletCountLv() { return UpgradeCount[(int)cfg.ActorCfg.VihecleUpgradeType.BulletCount - 1] >= TableManager.Instance.Tables.VehicleUpgrade.Get((int)nID, cfg.ActorCfg.VihecleUpgradeType.BulletCount).MaxCount; } public bool IsMaxDefenseCountLv() { return UpgradeCount[(int)cfg.ActorCfg.VihecleUpgradeType.Defense - 1] >= TableManager.Instance.Tables.VehicleUpgrade.Get((int)nID, cfg.ActorCfg.VihecleUpgradeType.Defense).MaxCount; } public string GetTerrainAdapt(BonusType terrainType)//仅供地形使用 { VehicleUpgradeBonusAttri vTable = TableManager.Instance.Tables.VehicleUpgradeBonusAttri; int terrinBonusVal=Cfg.TerrainPlain; for (int i = 0; i