static int IsSendService(IntPtr L) { int count = LuaDLL.lua_gettop(L); if (count == 1 && LuaScriptMgr.CheckTypes(L, 1, typeof(Games.Module.Wars.LegionData))) { Games.Module.Wars.LegionData arg0 = (Games.Module.Wars.LegionData)LuaScriptMgr.GetLuaObject(L, 1); bool o = Games.Module.Wars.War.IsSendService(arg0); LuaScriptMgr.Push(L, o); return(1); } else if (count == 1 && LuaScriptMgr.CheckTypes(L, 1, typeof(int))) { int arg0 = (int)LuaDLL.lua_tonumber(L, 1); bool o = Games.Module.Wars.War.IsSendService(arg0); LuaScriptMgr.Push(L, o); return(1); } else if (count == 2) { int arg0 = (int)LuaScriptMgr.GetNumber(L, 1); Games.Module.Wars.LegionType arg1 = (Games.Module.Wars.LegionType)LuaScriptMgr.GetNetObject(L, 2, typeof(Games.Module.Wars.LegionType)); bool o = Games.Module.Wars.War.IsSendService(arg0, arg1); LuaScriptMgr.Push(L, o); return(1); } else { LuaDLL.luaL_error(L, "invalid arguments to method: Games.Module.Wars.War.IsSendService"); } return(0); }
/** 反馈--战斗结束 */ void S_BattleEnd_0x830(S_BattleEnd_0x830 msg) { War.endProto = msg; WarOverData overData = new WarOverData(); foreach (ProtoRoleFightResult info in msg.fight_result) { LegionData legionData = War.GetLegionDataByRoleId(info.roleId); WarOverLegionData result = new WarOverLegionData(); result.roleId = info.roleId; result.legionId = legionData.legionId; result.starCount = info.star; result.buildCount = info.build_count; result.buildTotal = info.build_total; result.overType = (OverType)info.end_type; if (result.legionId == War.ownLegionID) { overData.overType = result.overType; } overData.legionDatas.Add(result); } War.S_Over(overData); }
void Update() { if (War.isGameing) { LegionData legionData = War.ownLegionData; icon.Progress = legionData.mage / legionData.maxMag; if (_produceSkillId != legionData.produceSkillUid) { _produceSkillId = legionData.produceSkillUid; if (_produceSkillId >= 0) { legionData.produceSkillData.LoadIcon(OnLoadSkillIcon); legionData.produceSkillData.LoadVSHeadIcon(OnLoadHeroIcon); icon.Visiable = true; nameText.text = legionData.produceSkillData.skillConfig.name; nameText.gameObject.SetActive(false); } else { icon.Visiable = false; nameText.gameObject.SetActive(false); } } countText.text = "×" + legionData.enableProduceSkillUids.Count; } }
/** 移除 */ public override void Revoke(int uid, UnitData unitData, bool calculate = false) { LegionData legionData = unitData.legionData; AttachPropData attachPropData = GetAttachPropData(uid); switch (unitType) { case UnitType.Player: legionData.legionPropContainer.Remove(attachPropData); legionData.buildPropContainer.Remove(attachPropData); legionData.soliderPropContainer.Remove(attachPropData); break; case UnitType.Build: legionData.buildPropContainer.Remove(attachPropData); break; case UnitType.Solider: legionData.soliderPropContainer.Remove(attachPropData); break; case UnitType.Hero: legionData.heroPropContainer.Remove(attachPropData); break; } }
void OnHPAdd(int legionId, int casterLegionId, float addHP) { LegionData legionData = War.GetLegionData(legionId); legionData.expeditionTotalHP += addHP; // legionData.expeditionLeftHP += addHP; }
/** 同步英雄下阵 */ public void ExeHeroBackstag(int heroUid, int targetLegionId) { UnitCtl heroUnit = War.scene.GetUnitForUID(heroUid); LegionData targetLegionData = War.GetLegionData(targetLegionId); War.scene.KillHero(heroUnit, targetLegionData); }
public void Show_KillHero(LegionData legionData, HeroData heroData) { GameObject go = GameObject.Instantiate(prefab_KillHero); MsgItem_KillHero item = go.GetComponent <MsgItem_KillHero>(); item.Set(legionData, heroData); Show(go, MsgPosType.Top); }
public void SetData(LegionData legionDta) { if (legionDta != null) { this.legionDta = legionDta; this.legionLevelData = legionDta.levelData; } }
/** 设置生产技能 */ public void ExeSetProduceSkill(int legionId, int skillUid, float speed) { LegionData legionData = War.GetLegionData(legionId); UnitCtl unitCtl = War.scene.GetUnitForUID(legionData.unitData.uid); BLegionSkillManager skillManager = unitCtl.GetComponent <BLegionSkillManager> (); skillManager.SetProduceSkill(skillUid, speed); }
void GenerationPlayers() { foreach (KeyValuePair <int, LegionData> kvp in sceneData.legionDict) { LegionData legionData = kvp.Value; legionData.legionInitPropContainer.UnitApp(legionData.unitData, true); War.factory.CreatePlayer(legionData.unitData); } }
static int GetLegionDataByRoleId(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 1); int arg0 = (int)LuaScriptMgr.GetNumber(L, 1); Games.Module.Wars.LegionData o = Games.Module.Wars.War.GetLegionDataByRoleId(arg0); LuaScriptMgr.PushObject(L, o); return(1); }
void OnHPConst(int legionId, int casterLegionId, float constHP) { LegionData legionData = War.GetLegionData(legionId); legionData.expeditionTotalHP -= constHP; if (legionData.expeditionTotalHP < 0) { legionData.expeditionTotalHP = 0; } }
void OnBuildComplete() { if (War.vsmode != VSMode.PVE_Expedition) { gameObject.SetActive(false); } attack = War.GetLegionData(1); defense = War.GetLegionData(2); }
public List <WarOverLegionData> GetOverData() { List <WarOverLegionData> list = new List <WarOverLegionData>(); int buildTotal = War.scene.GetBuilds().Count; foreach (var kvp in legionDict) { LegionData legionData = kvp.Value.legionData; int legionId = legionData.legionId; WarOverLegionData result = new WarOverLegionData(); result.legionId = legionData.legionId; result.roleId = legionData.roleId; result.starCount = kvp.Value.GetSuccessStars().Length; result.buildCount = War.scene.GetBuilds(legionId).Count; result.buildTotal = buildTotal; Debug.LogFormat("GetOverData legionId={0}, result.roleId={1}, type={2}, starCount={3}, buildCount={4}", legionId, result.roleId, legionData.type, result.starCount, result.buildCount); if (War.GetRelationType(kvp.Value.legionData.legionId) != RelationType.Enemy) { result.overType = War.overType; } else { OverType overType = OverType.Draw; switch (War.overType) { case OverType.Draw: overType = OverType.Draw; break; case OverType.Lose: overType = OverType.Win; break; case OverType.Win: overType = OverType.Lose; break; } result.overType = overType; } list.Add(result); //TODO Test //result.starCount = 3; } return(list); }
public List <ProtoRoleFightResult> GetServiceEndData() { List <ProtoRoleFightResult> list = new List <ProtoRoleFightResult>(); int buildTotal = War.scene.GetBuilds().Count; foreach (var kvp in legionDict) { LegionData legionData = kvp.Value.legionData; int legionId = legionData.legionId; ProtoRoleFightResult result = new ProtoRoleFightResult(); result.roleId = legionData.roleId; result.star = War.overType == OverType.Draw ? 1 : kvp.Value.GetSuccessStars().Length; result.build_count = War.scene.GetBuilds(legionId).Count; result.build_total = buildTotal; result.team_id = legionId; Debug.LogFormat("GetServiceEndData legionId={0}, result.roleId={1}, type={2}, star={3}, build_count={4}", legionId, result.roleId, legionData.type, result.star, result.build_count); if (War.GetRelationType(kvp.Value.legionData.legionId) != RelationType.Enemy) { result.end_type = (int)War.overType; } else { OverType overType = OverType.Draw; switch (War.overType) { case OverType.Draw: overType = OverType.Draw; break; case OverType.Lose: overType = OverType.Win; break; case OverType.Win: overType = OverType.Lose; break; } result.end_type = (int)overType; } list.Add(result); //TODO Test //result.star = 3; } return(list); }
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 void GenerationSoliders() { // 创建士兵UnitData foreach (KeyValuePair <int, StageLegionConfig> kvp in stageConfig.legionDict) { StageLegionConfig legionConfig = kvp.Value; UnitData unitData = new UnitData(); unitData.unitType = UnitType.Solider; unitData.legionId = legionConfig.legionId; unitData.avatarId = 30101; LegionData legionData = legionDict[legionConfig.legionId]; // 电脑士兵属性 if (!HasEnterLegionData(unitData.legionId)) { Prop[] soliderModuleProps = WarTestData.GetSoliderProps(); float[] props = soliderModuleProps.PropsToInit_Float(); props[PropId.HpAdd] = props[PropId.InitHp] = props[PropId.InitMaxHp]; legionData.soliderInitProp = props; // Debug.Log("Comupter soldierMonsterId= " + legionConfig.soldierMonsterId + " " + props.ToStrProp()); } // 玩家士兵属性 else { float[] props = GetSoliderProps(legionConfig.legionId).PropsToInit_Float(); props[PropId.HpAdd] = props[PropId.InitHp] = props[PropId.InitMaxHp]; legionData.soliderInitProp = props; unitData.level = GetSoliderLevel(unitData.legionId); unitData.avatarId = GetSoliderAvatarId(unitData.legionId); // Debug.Log("soliderProps=" + props.ToStrProp()); } // 把“士兵数据”保存到“势力数据"里 legionData.soliderData = unitData; // Debug.Log(string.Format("<color=green>legionId={0}</color>", legionConfig.legionId)); // 复制士兵斩将率到势力数据 legionData.legionInitProp[PropId.InitKillHero] = WarFormula.WF_Legion_KillHero(legionData.soliderInitProp[PropId.InitKillHero]); // Debug.Log(string.Format("<color=green>legionId={0}, legionData.legionInitProp[PropId.InitKillHero]={1}</color>", legionConfig.legionId, legionData.legionInitProp[PropId.InitKillHero])); } }
public Vector3 GetLegionPosition(int legionId) { if (_screenSize.x != Screen.width || _screenSize.y != Screen.height) { GenerationLegionPositionDict(); } LegionData legionData = War.GetLegionData(legionId); if (legionPositionDict.ContainsKey(legionData.colorId)) { return(legionPositionDict[legionData.colorId]); } return(new Vector3(0, 0, 30)); }
public void SetData(LegionData legionDta) { if (legionDta != null) { this.legionDta = legionDta; this.legionLevelData = legionDta.levelData; propPanel.data = this.legionLevelData; Show(); } else { Hide(); } }
void Init() { foreach (var kvp in War.sceneData.legionDict) { if (kvp.Key == 0) { continue; } LegionData legionData = kvp.Value; if (legionData.colorId <= items.Length) { TBLegionLevelItem view = items[legionData.colorId - 1]; view.SetData(legionData); } } }
void Init() { foreach (var kvp in War.sceneData.legionDict) { if (kvp.Key == 0) { continue; } LegionData legionData = kvp.Value; if (legionData.colorId <= items.Length) { Record_SendArmSettingPanel item = items[legionData.colorId - 1]; item.SetData(legionData.sendArmRate); } } }
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); } }
void Init() { foreach (var kvp in War.sceneData.legionDict) { if (kvp.Key == 0) { continue; } LegionData legionData = kvp.Value; if (legionData.colorId <= legionLevelViews.Length) { // Debug.Log(War.sceneData.stageConfig.id + " " + legionData.legionId + " " + legionData.colorId); LegionLevelView view = legionLevelViews[legionData.colorId - 1]; view.SetData(legionData); } } }
void SetSoliderAvatarInfo() { foreach (KeyValuePair <int, LegionData> kvp in sceneData.legionDict) { LegionData legionData = kvp.Value; string file = legionData.soliderData.prefabFile; GameObject prefab = WarRes.GetPrefab(file); if (prefab != null) { AvatarInfo avatarInfo = prefab.GetComponent <AvatarInfo>(); if (avatarInfo != null) { legionData.soliderData.armOnceWidth = avatarInfo.armOnceWidth; legionData.soliderData.radius = avatarInfo.armOnceWidth / avatarInfo.armOnceCount * 0.5f; legionData.soliderData.gapV = avatarInfo.gapV; } } } }
/** 反馈--战斗退出 */ void S_BattleLeave_0x813(S_BattleLeave_0x813 msg) { LegionData legionData = War.GetLegionDataByRoleId(msg.role_id); if (legionData != null) { if (War.textEffect != null) { War.textEffect.Play(TextEffectType.Normal, string.Format("{0}离开", legionData.name), Color.white, new Vector3(0, 0, 0), 0); } if (War.GetLegionDataByRoleId(msg.role_id).legionId == War.mainLegionID) { if (War.mainLegionID != War.ownLegionID) { War.mainLegionID = War.ownLegionID; } } } }
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 InitUseSkillBuildId() { Dictionary <int, int> legionMaxBuild = new Dictionary <int, int>(); Dictionary <int, int> legionMaxLevel = new Dictionary <int, int>(); foreach (var item in buildDict) { int legionId = item.Value.legionId; int buildId = item.Value.uid; int buildLevel = stageConfig.buildDict[buildId].settledPriority; if (legionMaxLevel.ContainsKey(legionId)) { if (legionMaxLevel[legionId] < buildLevel) { legionMaxLevel[legionId] = buildLevel; legionMaxBuild[legionId] = buildId; } } else { legionMaxBuild.Add(legionId, buildId); legionMaxLevel.Add(legionId, buildLevel); } } foreach (var item in legionMaxBuild) { LegionData legionData = legionDict[item.Key]; if (legionData.type != LegionType.Neutral) { legionData.initUseSkillBuildId = item.Value; } } }
bool Rescue() { // Debug.Log("--------------Rescue--------------"); // 救援,随机派部队数量 int sendCount = aiConfig.GetRescueSendCount(); // Debug.Log("救援,随机派部队数量 sendCount=" + sendCount); if (sendCount <= 0) { return(false); } UnitCtl rescueUnit = null; float minRescueScore = 9999999; foreach (UnitCtl build in ownBuilds) { build.unitData.GenerationFromLegionUnitTotalNum(); if (build.unitData.attackUnitNum > 0) { float distance = 0; foreach (UnitCtl buildB in ownBuilds) { if (build == buildB) { continue; } distance += War.scene.GetBuildDistance(build, buildB); } distance = ownBuilds.Count > 1 ? distance / (ownBuilds.Count - 1) : 0;; build.unitData.rescueScore = build.hp + distance * distanceScoreRate_Rescue; if (build.unitData.rescueScore < minRescueScore) { minRescueScore = build.unitData.rescueScore; rescueUnit = build; } } } if (rescueUnit == null) { return(false); } // 救援,生成派兵的建筑 List <UnitCtl> ownSelectBuilds = new List <UnitCtl>(); int index = 0; foreach (UnitCtl build in ownBuilds) { if (index < sendCount && build != rescueUnit) { ownSelectBuilds.Add(build); index++; if (index >= sendCount) { break; } } } if (ownSelectBuilds.Count <= 0) { return(false); } bool isSend = true; float rescueHP = 0; foreach (UnitCtl ownBuild in ownSelectBuilds) { rescueHP += ownBuild.unitData.hp * aiConfig.sendArmPercent; } float enemyHP = 0; foreach (KeyValuePair <int, int> kvp in rescueUnit.unitData.fromLegionUnitTotalNumDict) { if (kvp.Value > 0) { LegionData itemLegionData = War.GetLegionData(kvp.Key); if (unitData.GetRelation(itemLegionData.legionId) == RelationType.Enemy) { enemyHP += WarFormula.WD_Solider2Casern_Damage(rescueUnit.unitData.def, itemLegionData.soliderInitData.atk, kvp.Value * itemLegionData.soliderData.hp2UnitRate); } else { rescueHP += kvp.Value * itemLegionData.soliderData.hp2UnitRate; } } } isSend = rescueHP > enemyHP; if (isSend) { // Debug.Log("<color=blue>救援</color>"); foreach (UnitCtl ownBuild in ownSelectBuilds) { BSendArming bSendArming = ownBuild.GetComponent <BSendArming>(); bSendArming.Send(rescueUnit, aiConfig.sendArmPercent); } } return(isSend); }