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); } } }
/** 兵营改变势力 */ 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(); }
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); }
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); }
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); } }
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) { }