Beispiel #1
0
        public override void Excute()
        {
            MsgDispatcher.SendMsg((int)MessageType.AnnounceAttack);
            //根据伤害优先级对伤害请求排序
            DamageRequestList = DamageRequest.CaculateDamageRequestList(_Attacker, _AttackedUnit);

            for (int i = 0; i < DamageRequestList.Count; i++)
            {
                //优先级相同并且两方互打的伤害请求作为同时处理
                if (i != DamageRequestList.Count - 1 && DamageRequestList[i].priority == DamageRequestList[i + 1].priority &&
                    DamageRequestList[i]._attacker == DamageRequestList[i + 1]._attackedUnit &&
                    DamageRequestList[i]._attackedUnit == DamageRequestList[i + 1]._attacker)
                {
                    //判断被攻击者的反击距离
                    if (JudgeStrikeBack())
                    {
                        DamageRequestList[i].ExcuteSameTime();
                    }
                    else
                    {
                        DamageRequestList[i].Excute(); //距离不够,无法进行反击
                    }
                    i++;
                }
                else if (!_AttackedUnit.IsDead() && !_Attacker.IsDead() && JudgeStrikeBack()) //符合反击要求
                {
                    DamageRequestList[i].Excute();
                }
                else if (!_AttackedUnit.IsDead() && !_Attacker.IsDead() && !JudgeStrikeBack()) //距离不够,无法进行反击
                {
                    DamageRequestList[i].Excute();
                    i++;
                }
            }
        }
Beispiel #2
0
        private DamageResponse TakeDamage(DamageRequest request, ICommandCallerInfo callerInfo)
        {
            int newHealth = HealthWriter.Data.currentHealth - 1000;

            HealthWriter.Send(new Health.Update().SetCurrentHealth(newHealth));

            return(new DamageResponse(1000));
        }
Beispiel #3
0
 void Start()
 {
     mundo        = GameObject.FindWithTag("Player").GetComponent <Mundo>();
     damageReqest = GameObject.FindWithTag("UI").GetComponent <DamageRequest>();
     knife        = GetComponent <Rigidbody>();
     knife.AddRelativeForce(Vector3.forward * 12, ForceMode.Impulse);//设置发射技能的力
     m_Transform = GetComponent <Transform>();
     InvokeRepeating("Rotation", 0, 0.01f);
     Destroy(gameObject, 0.6f);
 }
Beispiel #4
0
 public void CreateSyncRequest()
 {
     PlayerSyncRequest = new GameObject("PlayerSyncRequest");
     PlayerSyncRequest.AddComponent <MoveRequest>().
     SetLocalPlayer(currentGameObject.transform, currentGameObject.GetComponent <PlayerMove>()).
     SetRemotePlayer(remotePlayerDict);
     shootRequest = PlayerSyncRequest.AddComponent <ShootRequest>();
     shootRequest.playerManager = this;
     damageRequest = PlayerSyncRequest.AddComponent <DamageRequest>();
     damageRequest.playerManager = this;
 }
Beispiel #5
0
 public void GameOver()
 {
     GameObject.Destroy(currentGameObject);
     GameObject.Destroy(PlayerSyncRequest);
     GameObject.Destroy(remoteGameObject);
     remotePlayerDict.Clear();
     //foreach (var item in remoteGameobject)
     //{
     //    GameObject.Destroy(item);
     //}
     //remoteGameobject.Clear();
     shootRequest  = null;
     damageRequest = null;
 }
Beispiel #6
0
        void Start()
        {
            // 释放资源
            UIManager.Instance.ClearAll();
            ResourcesManager.Instance.ReleaseAll();

            // 获取请求
            m_InitComplete        = GetComponent <InitCompleteRequest>();
            m_DamageRequest       = GetComponent <DamageRequest>();
            m_HeroMoveRequest     = GetComponent <HeroMoveRequest>();
            m_BuyRequest          = GetComponent <BuyItemRequest>();
            m_UpgradeSkillRequest = GetComponent <UpgradeSkillRequest>();
            m_UseSkillRequest     = GetComponent <UseSkillRequest>();
            m_EffectEndRequest    = GetComponent <EffectEndRequest>();

            // 加载资源
            ResourcesManager.Instance.Load(Paths.UI_BUY, typeof(AudioClip));

            // 发送进入游戏的请求
            GetComponent <EnterBattleRequest>().SendRequest();
        }
Beispiel #7
0
    public override void Excute()
    {
        MsgDispatcher.SendMsg((int)TriggerType.AnnounceAttack);
        //根据伤害优先级对伤害请求排序
        DamageRequestList = DamageRequest.CaculateDamageRequestList(_Attacker, _AttackedUnit);

        for (int i = 0; i < DamageRequestList.Count; i++)
        {
            //优先级相同并且两方互打的伤害请求作为同时处理
            if (i != DamageRequestList.Count - 1 && DamageRequestList[i].priority == DamageRequestList[i + 1].priority &&
                DamageRequestList[i]._attacker == DamageRequestList[i + 1]._attackedUnit &&
                DamageRequestList[i]._attackedUnit == DamageRequestList[i + 1]._attacker)
            {
                DamageRequestList[i].ExcuteSameTime();
                i++;
            }
            else
            {
                DamageRequestList[i].Excute();
            }
        }
    }