コード例 #1
0
ファイル: Damageable.cs プロジェクト: moto2002/DefenseGame
        public bool TakeCure(float damage, IAlignmentProvider damageAlignment, out HealthChangeInfo output)
        {
            output = new HealthChangeInfo
            {
                damageAlignment = damageAlignment,
                damageable      = this,
                newHealth       = currentHealth,
                oldHealth       = currentHealth
            };

            bool isFriend = damageAlignment == null || alignmentProvider == null ||
                            damageAlignment.IsFriend(alignmentProvider);

            if (isDead || !isFriend)
            {
                return(false);
            }

            ChangeHealth(damage, output);
            SafelyDoAction(damaged, output);
            if (isDead)
            {
                SafelyDoAction(died, output);
            }

            return(true);
        }
コード例 #2
0
        protected virtual bool IsLegalTarget(Transform targetable, SearchType searchType)
        {
            if (targetable == null)
            {
                return(false);
            }

            if (targetable.GetComponent <Targetable>() == null)
            {
                return(false);
            }

            bool isLegalTarget = true;
            IAlignmentProvider targetAlignment = targetable.GetComponent <Targetable>().configuration.alignmentProvider;

            IAlignmentProvider selfAlignment = alignment.GetInterface();

            if (searchType == SearchType.All)
            {
                isLegalTarget = true;
            }
            else if (searchType == SearchType.Enemy)
            {
                isLegalTarget = selfAlignment == null || targetAlignment == null ||
                                selfAlignment.CanHarm(targetAlignment);
            }
            else if (searchType == SearchType.Friend)
            {
                isLegalTarget = selfAlignment == null || targetAlignment == null ||
                                selfAlignment.IsFriend(targetAlignment);
            }

            return(isLegalTarget);
        }
コード例 #3
0
ファイル: LevelAgent.cs プロジェクト: moto2002/DefenseGame
 /// <summary>
 /// 治疗
 /// </summary>
 public void Cure(float addCureValue, Vector3 damagePoint, IAlignmentProvider alignment)
 {
     if (alignment.IsFriend(this.configuration.alignmentProvider))
     {
         this.TakeCure(addCureValue, damagePoint, alignment);
     }
     else
     {
         Debug.Log("不可治疗,因为是敌方单位");
     }
 }