Beispiel #1
0
        /** 兵营改变势力 */
        public void OnBuildChangeLegion(UnitData buildUnitData, int preLegionId, int targetLegionId)
        {
            // 强制更新兵营所属势力
            updateBuildLegion.Execute();

            if (preLegionId == targetLegionId)
            {
                Debug.Log("<color=red>preLegionId == targetLegionId</color>");
            }

            // 攻占方势力数据
            LegionData targetLegionData = War.GetLegionData(targetLegionId);

            UnitCtl heroUnit = GetHeroByBuild(buildUnitData.unit);

            if (heroUnit != null)
            {
                // 英雄数据
                HeroData heroData = heroUnit.heroData;
                // 英雄行为
                BHero heroBehaviour = heroUnit.GetComponent <BHero>();
                //
                int legionId = heroUnit.unitData.legionId;

                // ---如果状态是幕前
                if (heroData.state == HeroState.Foregstage)
                {
//					KillHero(heroUnit, targetLegionData);

                    if (War.requireSynch)
                    {
                        if (War.IsSendService(targetLegionData.legionId, targetLegionData.type))
                        {
                            War.service.C_SyncHeroBackstage_0x828(heroUnit.unitData.uid, targetLegionId);
                        }
                    }
                    else
                    {
                        KillHero(heroUnit, targetLegionData);
                    }
                }
            }
            else
            {
//				// 添加经验--占领
//				targetLegionData.levelData.AddExp_Build();
            }

            War.signal.BuildChangeLegionComplete();
        }
Beispiel #2
0
        protected override void OnUpdate()
        {
            base.OnUpdate();

            if (!War.isGameing)
            {
                return;
            }
            if (War.isRecord)
            {
                return;
            }
            if (!unitData.build_turret)
            {
                return;
            }

            attackCD += Time.deltaTime;
            if (attackCD >= unitData.attackSpeed)
            {
                attackCD = 0;

                if (!War.IsSendService(legionData))
                {
                    return;
                }

                int unitType = 0;
                unitType = unitType.USolider(true);

                int relation = 0;
                relation = relation.REnemy(true);

                UnitCtl target = War.scene.SearchUnit_MinDistance(transform.position, unitData.attackRadius, unitType, unitData.legionId, relation);
                if (target != null)
                {
                    Atk(target);
                }
            }
        }
Beispiel #3
0
 public static bool IsSendService(LegionData legionData)
 {
     return(War.IsSendService(legionData.legionId, legionData.type));
 }
Beispiel #4
0
        public static bool IsSendService(int legionId)
        {
            LegionData legionData = War.GetLegionData(legionId);

            return(War.IsSendService(legionData));
        }