Exemple #1
0
 void GenerationHeros()
 {
     foreach (KeyValuePair <int, LegionData> kvp in sceneData.legionDict)
     {
         LegionData legionData = kvp.Value;
         foreach (KeyValuePair <int, HeroData> kv in legionData.heroDatas)
         {
             HeroData heroData = kv.Value;
             UnitData unitData = legionData.heroUnitDatas[heroData.heroId];
             War.factory.CreateHero(unitData, heroData);
         }
     }
 }
Exemple #2
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();
        }
Exemple #3
0
        public void Set(LegionData legionData, HeroData heroData)
        {
            playerNameText.text  = legionData.name;
            playerNameText.color = WarColor.GetHeroHeadColor(legionData.colorId);

            heroNameText.text     = heroData.name;
            heroNameText.color    = WarColor.GetHeroHeadColor(heroData.legionData.colorId);
            heroColorImage.color  = WarColor.GetHeroHeadColor(heroData.legionData.colorId);
            heroColorImage2.color = heroColorImage.color;

            heroColorImage.gameObject.SetActive(!heroData.isRole);
            heroColorImage2.gameObject.SetActive(heroData.isRole);

            heroData.avatar.LoadVSIcon(OnLoadIcon);
        }
Exemple #4
0
        public GameObject CreateHero(UnitData unitData, HeroData heroData)
        {
            GameObject prefab = WarRes.GetPrefab(WarRes.Unit_Hero);
            GameObject go     = GameObject.Instantiate(prefab);

            go.name = go.name.Replace("(Clone)", "") + "_" + unitData.legionId + "-" + heroData.heroId;
            go.AddEComponent(unitData);
            go.AddEComponent(heroData);
            unitData.Init();
            heroData.isInstance = true;

            go.transform.SetParent(War.scene.rootHeros);
            go.SetActive(true);
            return(go);
        }
Exemple #5
0
        void CreateHero(int itemLegionId, int itemHeroId, int avatarId, string name, int quality, int skillId, int skillLevel, float[] hero2BuildProps, float[] props)
        {
            // 创建英雄单位数据UnitData
            UnitData unitData = new UnitData();

            unitData.unitType = UnitType.Hero;
            unitData.id       = GetHeroUID(itemHeroId, itemLegionId);

            // 将“英雄单位数据UnitData”保存到”势力数据LegionData“里
            LegionData legionData = legionDict[itemLegionId];

            legionData.heroUnitDatas.Add(itemHeroId, unitData);

            unitData.legionId = legionData.legionId;

            // 创建英雄数据HeroData
            HeroData heroData = new HeroData();

            heroData.heroUid        = unitData.id;
            heroData.heroId         = itemHeroId;
            heroData.name           = name;
            heroData.quality        = quality;
            heroData.avatarId       = avatarId;
            heroData.originalLegion = legionData.legionId;
            legionData.heroDatas.Add(heroData.heroId, heroData);
            legionData.heroInitProp.Add(heroData.heroId, props);
            legionData.hero2BuildProp.Add(heroData.heroId, hero2BuildProps);



            // 如果英雄技能激活了,生成英雄技能操作数据
            if (skillId > 0)
            {
                SkillOperateData skillData = new SkillOperateData();
                skillData.skillId     = skillId;
                skillData.uid         = GetSkillUID(skillData.skillId, legionData.legionId, heroData.heroId);
                skillData.skillLevel  = skillLevel;
                skillData.heroData    = heroData;
                skillData.skillConfig = enterData.GetSkillConfig(skillData.skillId);
                skillData.Init();
                heroData.skillOperateData = skillData;
                legionData.skillDatas.Add(skillData.uid, skillData);
                skillOperateDataForUID.Add(skillData.uid, skillData);
            }
        }
Exemple #6
0
        public void KillHero(UnitCtl heroUnit, LegionData targetLegionData)
        {
            // 英雄数据
            HeroData heroData = heroUnit.heroData;
            // 英雄行为
            BHero heroBehaviour = heroUnit.GetComponent <BHero>();

            // ---如果状态是幕前
            if (heroData.state == HeroState.Foregstage)
            {
                // 添加经验--击杀英雄
                targetLegionData.levelData.AddExp_KillHero(heroUnit);
                // 幕后
                heroBehaviour.Backstage();

                War.msgBox.Show_KillHero(targetLegionData, heroData);


                Coo.soundManager.PlaySound("effect_hero_dead");

                War.signal.DoHeroBackstage(heroUnit.unitData.uid, targetLegionData.legionId);
            }
        }
		/** 英雄--幕后事件 */
		void OnBackstage(HeroData heroData)
		{
			// 移除英雄回到幕后事件
			heroData.sBackstage -= OnBackstage;
			if(onlyUseOnce == false)
			{
				if(heroData.skillOperateData.enableProduce)
				{

					if(heroData.skillOperateData.skillConfig.cd > 0)
					{
						StartCoroutine(SkillCD(heroData.skillOperateData));
					}
					else
					{
						// 添加到生产列表
						legionData.enableProduceSkillUids.Add(heroData.skillOperateData.uid);
						// 检测是否需要设置生成技能
						CheckProduceSkill();
					}
				}
			}
		}
		/** 英雄--幕前事件 */
		void OnForegstage(HeroData heroData)
		{

		}