feat(gameplay): 添加水晶矿资源产出系统和改进AI卡组管理

- 实现水晶矿占领后的能量资源产出功能,包括manaInterval和manaAmount配置
- 添加敌方AI的能量管理系统,支持通过AddMana方法增加能量
- 实现AI卡组轮转机制,包含手牌管理和抽卡队列功能
- 优化单位AI的目标选择和战斗逻辑,修复目标切换问题

- 水晶矿现在可以按设定间隔为所属阵营提供能量资源
-
This commit is contained in:
huadexuan committed 2026-09-21 18:17:05 +08:00
1 parent b185e5768b
commit 06940a849c
21 files changed
+555 -520

No files matched your search

+33 -1
View File
@@ -10,7 +10,12 @@ public class CrystalMineCapture : MonoBehaviour
[Tooltip("是否自动添加中立阵营(teamId=2)。拆家版关闭以避免单位自动锁敌水晶矿")]
public bool autoSetNeutralTeam = true;
[Header("水晶矿光球")]
[Header("资源产出")]
[Tooltip("占领后是否按固定间隔给所属阵营增加能量")]
public bool producesMana = true;
[Min(1f)] public float manaInterval = 8f;
[Min(1)] public int manaAmount = 1;
[SerializeField] private AdjustableGlowOrb glowOrb;
[Tooltip("混沌裂缝传送门(随机出兵点),随争夺进度同步变色,可留空")]
[SerializeField] private RiftPortalVisual riftVisual;
@@ -31,6 +36,7 @@ public class CrystalMineCapture : MonoBehaviour
private Image redFill;
private RectTransform marker;
private UnitTeam unitTeam;
private float manaTimer;
private static Sprite roundedSprite;
private static readonly int BaseColorId = Shader.PropertyToID("_Color");
@@ -76,6 +82,8 @@ public class CrystalMineCapture : MonoBehaviour
private void LateUpdate()
{
UpdateManaProduction();
if (barRect == null) return;
barRect.position = transform.position + Vector3.up * GetBarHeight();
@@ -109,6 +117,30 @@ public class CrystalMineCapture : MonoBehaviour
return barHeightCache.Value;
}
private void UpdateManaProduction()
{
if (!producesMana || unitTeam == null || (unitTeam.teamId != 0 && unitTeam.teamId != 1))
{
manaTimer = 0f;
return;
}
manaTimer += Time.deltaTime;
while (manaTimer >= manaInterval)
{
manaTimer -= manaInterval;
if (unitTeam.teamId == 0)
{
ManaSystem.Instance?.AddMana(manaAmount);
}
else
{
EnemyCastleAI enemyAI = FindObjectOfType<EnemyCastleAI>();
enemyAI?.AddMana(manaAmount);
}
}
}
public bool ReceiveCaptureDamage(float damage, GameObject attacker)
{
if (damage <= 0f || attacker == null) return false;