using System.Collections.Generic; namespace Wizard; public class AIDamageModifierCollection { private List _modifierList; public AIDamageModifierCollection Clone(AIVirtualField field) { AIDamageModifierCollection aIDamageModifierCollection = new AIDamageModifierCollection(); if (_modifierList != null) { for (int i = 0; i < _modifierList.Count; i++) { AIDamageModifierInfo aIDamageModifierInfo = _modifierList[i]; AIVirtualCard aIVirtualCard = aIDamageModifierInfo.FindCloneTarget(field); if (aIVirtualCard != null) { aIDamageModifierCollection.AddDamageModifierInfo(aIDamageModifierInfo.Clone(field, aIVirtualCard)); } } } return aIDamageModifierCollection; } public int CalcModifiedDamage(AIVirtualField field, List playPtn, AISituationInfo situation, AIVirtualCard damageOwner, int baseDamage) { if (_modifierList == null || _modifierList.Count <= 0) { return baseDamage; } int num = baseDamage; for (int i = 0; i < _modifierList.Count; i++) { AIDamageModifierInfo aIDamageModifierInfo = _modifierList[i]; if (aIDamageModifierInfo.IsLegalDamageOwner(damageOwner, playPtn, situation)) { num = aIDamageModifierInfo.GetModifiedDamage(field, playPtn, situation, num); } } return num; } public void AddDamageModifierInfo(AIDamageModifierInfo info) { _modifierList = AIParamQuery.AddElementToList(info, _modifierList); } public void DepriveDamageModifierInfo(AIVirtualCard owner, int textHash) { if (_modifierList == null || _modifierList.Count <= 0) { return; } for (int i = 0; i < _modifierList.Count; i++) { if (_modifierList[i].IsMatch(owner, textHash)) { _modifierList.RemoveAt(i); break; } } } }