TH1/Unity/Assets/Scripts/TH1_Logic/AI/AIConfigAsset.cs
2025-08-18 23:16:13 +08:00

104 lines
2.6 KiB
C#

/*
* @Author: 白哉
* @Description: AI 配置数据 (序列化)
* @Date: 2025年04月18日 星期五 15:04:06
* @Modify:
*/
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Logic.AI
{
public class AIConfigAsset : ScriptableObject
{
public float MoneyScore;
public float UnitScore;
public float CityScore;
public float CityDefendScore;
public float OneCanMoveGridMaxScore;
public float OneSightGridMaxScore;
public float UnitAttackScore;
public float UnitDefendScore;
public float UnitExploreScore;
public float UnitExploreCityCenterScore;
public float UnitExploreTreasureScore;
public float UnitExploreStarfishScore;
public float FutureScoreTransformValue;
public float MilitaryConstructionRatioValue;
public List<AICalculatorTechInfo> TechInfoList = new List<AICalculatorTechInfo>();
public List<AIDiffInfo> AidiffInfos = new List<AIDiffInfo>();
public AICalculatorTechInfo GetTechInfo(TechType techType)
{
foreach (var techInfo in TechInfoList)
{
if (techInfo.TechType != techType) continue;
return techInfo;
}
return null;
}
public AIDiffInfo GetAIDiffInfo(AIDifficult level)
{
foreach (var diffInfo in AidiffInfos)
{
if (diffInfo.Level != level) continue;
return diffInfo;
}
return null;
}
}
[Serializable]
public class AICalculatorTechInfo
{
public TechType TechType;
public float Ratio;
public AICalculatorTechInfo(TechType techType, float ratio)
{
TechType = techType;
Ratio = ratio;
}
}
[Serializable]
public class AIDiffInfo
{
public AIDifficult Level;
public float FreeUnitRetreat;
public float FreeUnitOther;
public float LegionUnitDefend;
public float LegionUnitAttack;
public float LegionUnitDevelopment;
public float UnitInCity;
public AIDiffInfo(AIDifficult level)
{
Level = level;
FreeUnitRetreat = 1f;
FreeUnitOther = 2.5f;
LegionUnitDefend = 1f;
LegionUnitAttack = 3.5f;
LegionUnitDevelopment = 2.5f;
UnitInCity = 0.5f;
}
}
}