From e36f2a3ac098d6e89d3882f3354ec69c07e71e16 Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Tue, 01 Dec 2020 15:55:40 +0800
Subject: [PATCH] 代码结构修改

---
 Assets/Scripts/TowerDefense/Towers/Projectiles/HitscanAttack.cs |   81 +---------------------------------------
 1 files changed, 3 insertions(+), 78 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Towers/Projectiles/HitscanAttack.cs b/Assets/Scripts/TowerDefense/Towers/Projectiles/HitscanAttack.cs
index 334c95d..d12ccff 100644
--- a/Assets/Scripts/TowerDefense/Towers/Projectiles/HitscanAttack.cs
+++ b/Assets/Scripts/TowerDefense/Towers/Projectiles/HitscanAttack.cs
@@ -1,12 +1,9 @@
 using ActionGameFramework.Health;
 using Core.Utilities;
-using DG.Tweening;
 using System;
-using System.Net.Http.Headers;
 using TowerDefense.Agents;
 using TowerDefense.UI.HUD;
 using UnityEngine;
-using System.Collections;
 
 namespace TowerDefense.Towers.Projectiles
 {
@@ -108,15 +105,10 @@
             switch (id)
             {
                 case 2:  // 减速.
-                    enemy.addSpeedSlowRate(0.15f);
-                    enemy.SetTargetableMatColor(Color.blue);
+                    (enemy as Agent).addSpeedSlowRate(0.15f);
                     break;
                 case 3:  // 中毒
-                    enemy.poisonAgent(damage, attid);
-                    enemy.SetTargetableMatColor(Color.green);
-                    break;
-                case 5:  // 破甲
-                    enemy.bShieldBreak = true;
+                    (enemy as Agent).poisonAgent(damage, attid);
                     break;
             }
             return;
@@ -138,58 +130,17 @@
             // 攻击目标已经经历过了Pool了,不能再攻击了。
             if (mLiveID != m_Enemy.liveID) return;
 
-            // effects
-            // ParticleSystem pfxPrefab = m_Damager.collisionParticles;
-            // var attackEffect = Poolable.TryGetPoolable<ParticleSystem>(pfxPrefab.gameObject);
-            // attackEffect.transform.position = m_Enemy.position;
-            // attackEffect.Play();
-
-            // GameObject hitObj = Poolable.TryGetPoolable(m_Damager.collisionObj);
-            // ParticleSystem ps = hitObj.GetComponent<ParticleSystem>();
-            // if (ps == null)
-            //     ps = hitObj.transform.GetChild(0).GetComponent<ParticleSystem>();
-            // ps.Play();
-            // // StartCoroutine(RecycleParticle(hitObj, ps.main.duration));
-
-            // var hitVFX = Instantiate(m_Damager.collisionObj, m_Enemy.position, Quaternion.identity);
-            // var ps = hitVFX.GetComponent<ParticleSystem>();
-            // if (ps == null)
-            // {
-            //     var psChild = hitVFX.transform.GetChild(0).GetComponent<ParticleSystem>();
-            //     psChild.Play();
-            //     Destroy(hitVFX, psChild.main.duration);
-            // }
-            // else
-            // {
-            //     ps.Play();
-            //     Destroy(hitVFX, ps.main.duration);
-            // }
-
             float finalDamage = m_Damager.finalDamage;
             bool crit = m_Damager.isCrit;
             if (crit)
             {
                 finalDamage += finalDamage;
-
-                // 暂时去掉这个ShakePosition的功能:
-                //m_Enemy.transform.DOShakePosition(0.5f);
-            }
-            // 精英怪和Boss双倍攻击.
-            bool doubleHit = m_Damager.doubleHit && m_Enemy.bElit;
-            if (doubleHit)
-            {
-                finalDamage *= 2;
             }
 
-            // 
             // 处理光塔对应的攻击增加:
             if (attackRise > 0)
                 finalDamage += (finalDamage * attackRise);
-            // 破甲状态
-            if (m_Enemy.bShieldBreak)
-                finalDamage += (finalDamage * 0.1f);
 
-            // 
             // 提前处理非当前Enemy的爆炸攻击:
             if (chainAttackRate > 0)
                 AgentInsManager.instance.StartExplodeAttack(m_Enemy as Agent, finalDamage);
@@ -202,37 +153,11 @@
             ProcessTowerAttributeAttack(m_Enemy, finalDamage, attributeId);
 
             if (!m_Enemy.opponentAgent)
-                GameUI.instance.generateBloodText(backPos, finalDamage, crit, doubleHit);
+                GameUI.instance.generateBloodText(backPos, finalDamage, crit);
 
             // 播放受击动画:
             if ((!m_Enemy.isDead) && (m_Enemy.liveID == tid))
                 (m_Enemy as Agent).PlayOnHit();
-
-            // 重设到开始位置的处理. liveID必须要等于tid.
-            /*if( (resetStartPosRate > 0)&&(!m_Enemy.isDead)&& (m_Enemy.liveID == tid))
-            {
-				if (mRand.NextDouble() < resetStartPosRate)
-                {
-					Agent ag = m_Enemy as Agent;
-					if( ag.bBoss)
-                    {
-						// 如果是Boss,更低的概率重设位置.
-						if (mRand.NextDouble() < resetStartPosRate / 20.0f)
-							ag.execAgentPosResetAction();
-					}
-					else
-						ag.execAgentPosResetAction();
-				}
-					
-            }*/
-
-            /*// 链式攻击的测试处理: 需要确保是同一个敌人,ID相同.
-			if( (chainAttackRate > 0)&& (!m_Enemy.isDead) && (m_Enemy.liveID == tid) )
-            {
-				if (mRand.NextDouble() < chainAttackRate)
-					AgentInsManager.instance.StartChainAttack(m_Enemy as Agent,m_Damager.alignmentProvider,(float)Math.Floor(finalDamage/2.0f ));
-
-			}*/
 
             m_PauseTimer = true;
         }

--
Gitblit v1.9.1