public void CheckWatchRole(int watchRoleId) { if (watchRoleId == ownRoleId) { return; } Init(); Dictionary <int, WarEnterLegionData> roleDict = new Dictionary <int, WarEnterLegionData> (); foreach (WarEnterLegionData item in legionList) { if (!roleDict.ContainsKey(item.roleId)) { roleDict.Add(item.roleId, item); } } if (roleDict.ContainsKey(watchRoleId)) { if (rivalRoleId == watchRoleId) { rivalRoleId = ownRoleId; } WarEnterLegionData watchLegionData = roleDict[watchRoleId]; ownRoleId = watchRoleId; ownLegionId = watchLegionData.legionId; } }
static int GetEnterLegionData(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 2); Games.Module.Wars.WarEnterData obj = (Games.Module.Wars.WarEnterData)LuaScriptMgr.GetNetObjectSelf(L, 1, "Games.Module.Wars.WarEnterData"); int arg0 = (int)LuaScriptMgr.GetNumber(L, 2); Games.Module.Wars.WarEnterLegionData o = obj.GetEnterLegionData(arg0); LuaScriptMgr.PushObject(L, o); return(1); }
/** heroSkill=[buildIndx, heroId, skillId, skillLevel, skillId2, skillLevel2] */ public static WarEnterData CreateTest(int stageId, int ownLegionId, int[][] heroSkills, int[][] completeHeroSkills) { int ownRoleId = 1; WarEnterData enterData = new WarEnterData(); enterData.stageId = stageId; enterData.ownRoleId = ownRoleId; enterData.ownLegionId = ownLegionId; enterData.mainLegionId = ownLegionId; WarEnterLegionData legionData = new WarEnterLegionData(); legionData.legionId = ownLegionId; legionData.name = "赵信他爷"; legionData.maxAtk = 100; legionData.maxMovespeed = 100; legionData.maxProduceSpeed = 100; legionData.totalAtk = 64.925f; legionData.totalMoveSpeed = 2f; // legionData.totalMoveSpeed = 1f; legionData.totalProduceSpeed = 0.34f; legionData.initHP = 20; legionData.solider = new WarEnterSoliderData(); legionData.solider.level = 1; legionData.solider.props = new Prop[] { Prop.CreateInstance(PropId.AtkAdd, 362), Prop.CreateInstance(PropId.DefAdd, 221), Prop.CreateInstance(PropId.MaxHpAdd, 1), Prop.CreateInstance(PropId.MoveSpeedAdd, 3f), Prop.CreateInstance(PropId.KillHeroAdd, 50) }; foreach (int[] heroSkill in heroSkills) { WarEnterHeroData heroData = new WarEnterHeroData(); heroData.heroId = heroSkill[0]; heroData.skillId = heroSkill[1]; heroData.level = heroSkill[2]; heroData.props = new Prop[] { Prop.CreateInstance(PropId.AtkAdd, 10), Prop.CreateInstance(PropId.DefAdd, 20), Prop.CreateInstance(PropId.ProduceSpeedAdd, 0.065f), Prop.CreateInstance(PropId.MaxHpAdd, 3.32f), Prop.CreateInstance(PropId.DefKillHeroAdd, 90) }; legionData.heroList.Add(heroData); } enterData.legionList.Add(legionData); CreateTestCompleteLegion(enterData, completeHeroSkills); return(enterData); }
static void CreateTestCompleteLegion(WarEnterData enterData, int[][] heroSkills) { WarEnterLegionData legionData = new WarEnterLegionData(); legionData.legionId = 2; legionData.name = "Computer"; legionData.maxAtk = 100; legionData.maxMovespeed = 100; legionData.maxProduceSpeed = 100; legionData.totalAtk = 20; legionData.totalMoveSpeed = 3; legionData.totalProduceSpeed = 4; legionData.initHP = 20; legionData.solider = new WarEnterSoliderData(); legionData.solider.level = 1; legionData.solider.props = new Prop[] { Prop.CreateInstance(PropId.AtkAdd, 362), Prop.CreateInstance(PropId.DefAdd, 221), Prop.CreateInstance(PropId.MaxHpAdd, 1), Prop.CreateInstance(PropId.MoveSpeedAdd, 3f), Prop.CreateInstance(PropId.KillHeroAdd, 50) }; foreach (int[] heroSkill in heroSkills) { WarEnterHeroData heroData = new WarEnterHeroData(); heroData.heroId = heroSkill[0]; heroData.skillId = heroSkill[1]; heroData.level = heroSkill[2]; heroData.props = new Prop[] { Prop.CreateInstance(PropId.AtkAdd, 140), Prop.CreateInstance(PropId.DefAdd, 20), Prop.CreateInstance(PropId.ProduceSpeedAdd, 0.065f), Prop.CreateInstance(PropId.MaxHpAdd, 3.32f), Prop.CreateInstance(PropId.DefKillHeroAdd, 90) }; legionData.heroList.Add(heroData); } enterData.legionList.Add(legionData); }
void GenerateProtoBattleVideoRoleInfoList(WarOverData overData, List <ProtoBattleVideoRoleInfo> fight_roles) { Dictionary <int, ProtoFightRoleInfo> fightRoleInfoDict = new Dictionary <int, ProtoFightRoleInfo> (); int ownChangePrize = 0; if (War.endProto != null) { foreach (ProtoFightRoleInfo roleInfo in War.endProto.fight_roles) { Debug.Log("roleInfo.role_info.roleId=" + roleInfo.role_info.roleId); fightRoleInfoDict.Add(roleInfo.role_info.roleId, roleInfo); } ownChangePrize = War.endProto.prize - fightRoleInfoDict [War.ownLegionData.roleId].role_info.prize; } foreach (WarOverLegionData overLegionData in overData.legionDatas) { WarEnterLegionData enterLegionData = overData.enterData.GetEnterLegionData(overLegionData.legionId); if (enterLegionData == null) { Debug.LogFormat("<color=red>生成录像信息时 legionId={0} enterLegionData=null</color>", overLegionData.legionId); continue; } ProtoBattleVideoRoleInfo videoRole = new ProtoBattleVideoRoleInfo(); videoRole.end_type = (int)overLegionData.overType; videoRole.final_house = overLegionData.buildCount; videoRole.final_star = overLegionData.starCount; videoRole.change_prize = enterLegionData.legionId == War.ownLegionID ? ownChangePrize : -ownChangePrize; if (fightRoleInfoDict.ContainsKey(enterLegionData.roleId)) { ProtoFightRoleInfo protoFightRoleInfo = fightRoleInfoDict [enterLegionData.roleId]; videoRole.role_info = protoFightRoleInfo.role_info; videoRole.battle_info = protoFightRoleInfo.battle_info; videoRole.league_info = protoFightRoleInfo.league_info; videoRole.rank = protoFightRoleInfo.rank; protoFightRoleInfo.role_info.name = enterLegionData.name; } else { ProtoRoleBaseInfo roleBase = videoRole.role_info = new ProtoRoleBaseInfo(); roleBase.roleId = enterLegionData.roleId; roleBase.name = enterLegionData.name; roleBase.icon = enterLegionData.headAvatarId; ProtoRoleBattleInfo roleBattle = videoRole.battle_info = new ProtoRoleBattleInfo(); roleBattle.battle_soldier = enterLegionData.solider.avatarId; foreach (WarEnterHeroData enterHeroData in enterLegionData.heroList) { ProtoCardInfo card = new ProtoCardInfo(); card.card_id = enterHeroData.heroId; card.level = enterHeroData.level; roleBattle.battle_cards.Add(card); } } fight_roles.Add(videoRole); } }
/** 生成数据--势力 */ public void GenerationLegions() { // 占用自己颜色的势力 LegionData occupyMainLegionData = null; War.realPlayerCount = 0; // 创建势力数据LegionData foreach (KeyValuePair <int, StageLegionConfig> kvp in stageConfig.legionDict) { StageLegionConfig legionConfig = kvp.Value; LegionData legionData; if (legionConfig.type == LegionType.Player) { legionData = new LegionData(legionConfig.legionId, "Player-" + legionConfig.legionId, LegionType.Player, legionConfig.aiSendArm, legionConfig.aiUplevel, legionConfig.aiSkill, legionConfig.produce); if (enterData.vsmode == VSMode.PVP && legionData.legionId != ownLegionID) { legionData.aiSendArm = false; legionData.aiSkill = false; legionData.aiUplevel = false; } } else if (legionConfig.type == LegionType.Computer) { legionData = new LegionData(legionConfig.legionId, "Player-" + legionConfig.legionId, LegionType.Computer, legionConfig.aiSendArm, legionConfig.aiUplevel, legionConfig.aiSkill, legionConfig.produce); if (enterData.vsmode == VSMode.PVP && !War.isMainLegion) { legionData.aiSendArm = false; legionData.aiSkill = false; legionData.aiUplevel = false; } } else { legionData = new LegionData(legionConfig.legionId, "Player-" + legionConfig.legionId, LegionType.Neutral, legionConfig.aiSendArm, legionConfig.aiUplevel, legionConfig.aiSkill, legionConfig.produce); if (enterData.vsmode == VSMode.PVP && !War.isMainLegion) { legionData.aiSendArm = false; legionData.aiSkill = false; legionData.aiUplevel = false; } } legionData.produceLimit = legionConfig.produceLimit; legionData.colorId = legionConfig.color; legionDict.Add(legionData.legionId, legionData); if (legionData.colorId == War.config.ownDefaultColor) { occupyMainLegionData = legionData; } legionData.roleId = enterData.GetRoleId(legionData.legionId); if (!roleDict.ContainsKey(legionData.roleId)) { roleDict.Add(legionData.roleId, legionData); } legionData.expeditionTotalMaxHP = enterData.GetTotalMaxHP(legionData.legionId); legionData.expeditionTotalHP = enterData.GetTotalHP(legionData.legionId); legionData.expeditionInitHP = legionData.expeditionTotalHP; legionData.expeditionLeftHP = legionData.expeditionTotalHP; WarEnterLegionData enterLegionData = enterData.GetEnterLegionData(legionData.legionId); if (enterLegionData != null) { legionData.name = enterLegionData.name; legionData.headAvatarId = enterLegionData.headAvatarId; legionData.levelData.intBattleForce = enterLegionData.totalAtk; legionData.levelData.intProduceSpeed = enterLegionData.totalProduceSpeed; legionData.levelData.intMoveSpeed = enterLegionData.totalMoveSpeed; legionData.levelData.initHP = enterLegionData.initHP; legionData.levelData.maxBattleForce = enterLegionData.maxAtk; legionData.levelData.maxProduceSpeed = enterLegionData.maxProduceSpeed; legionData.levelData.maxMoveSpeed = enterLegionData.maxMovespeed; legionData.levelData.subBattleForce = enterLegionData.subAtk; legionData.levelData.subProduceSpeed = enterLegionData.subProduceSpeed; legionData.levelData.subMoveSpeed = enterLegionData.subMoveSpeed; legionData.sendArmRate = enterLegionData.sendArmRate; if (enterLegionData.isRobot) { if (enterData.vsmode == VSMode.PVP && War.isMainLegion && legionData.colorId != 0) { legionData.aiSendArm = true; legionData.aiSkill = true; legionData.aiUplevel = true; } legionData.type = LegionType.Computer; if (legionData.colorId == 0) { legionData.type = LegionType.Neutral; } } else { legionData.type = LegionType.Player; legionData.aiSendArm = false; legionData.aiSkill = false; legionData.aiUplevel = false; } if (enterLegionData.ai > 0) { legionData.aiConfig = War.model.GetAIConfig(enterLegionData.ai);; } } else { NeutralExpConfig roleExpConfig = War.model.GetNeutralExpConfig(stageConfig.neutralRoleLevel); legionData.levelData.intBattleForce = roleExpConfig.props[PropId.BattleForceAdd]; legionData.levelData.intProduceSpeed = roleExpConfig.props[PropId.ProduceSpeedAdd]; legionData.levelData.intMoveSpeed = roleExpConfig.props[PropId.MoveSpeedAdd]; legionData.levelData.initHP = roleExpConfig.props[PropId.HpAdd]; if (legionData.colorId == 0) { legionData.type = LegionType.Neutral; } else { legionData.type = LegionType.Computer; } } if (legionConfig.type == LegionType.Player) { War.realPlayerCount++; } if (War.isEditor) { legionData.aiSendArm = false; legionData.aiSkill = false; legionData.produce = false; legionData.aiUplevel = false; } if (War.isTest) { if (legionData.type == LegionType.Computer || (legionData.type == LegionType.Player && legionData.legionId != War.ownLegionID)) { legionData.aiSendArm = true; legionData.aiSkill = true; legionData.produce = true; legionData.aiUplevel = true; legionData.aiConfig = stageConfig.id >= 71 && stageConfig.id <= 80 ? War.model.GetAIConfig(102) : War.model.GetAIConfig(302); } } if (War.isRecord) { legionData.aiSendArm = false; legionData.aiSkill = false; legionData.aiUplevel = false; } int id = GetPlayerUID(legionData.legionId); // 势力单位数据 UnitData unitData = new UnitData(); unitData.id = id; unitData.legionId = legionData.legionId; unitData.unitType = UnitType.Player; float x = 5 * Mathf.FloorToInt((legionData.legionId + 1) / 2) * (legionData.legionId % 2 == 0 ? 1 : -1); unitData.position = new Vector3(x, 0f, -11F); legionData.unitData = unitData; /** 战前势力--怒气上限 */ legionData.legionInitProp[PropId.InitMaxMage] = WarFormula.WF_Legion_MaxMage(); /** 战前势力--怒气 */ legionData.legionInitProp[PropId.MagAdd] = legionData.legionInitProp[PropId.InitMag] = enterData.vsmode != VSMode.PVE_Expedition ? WarFormula.WF_Legion_Mage() : enterData.GetMag(legionData.legionId); /** 战前势力--怒气 */ legionData.legionInitProp[PropId.InitMageSpeed] = ConstConfig.GetFloat(ConstConfig.ID.War_DV_Mag_Recovery_Ratio); //TODO Test //legionData.aiSendArm = true; //legionData.aiSkill = true; //legionData.aiConfig = War.model.GetAIConfig(302); } // 获取自己势力数据 ownLegion = legionDict[ownLegionID]; // 交换势力颜色 if (occupyMainLegionData != null && occupyMainLegionData != ownLegion) { int tempColorId = ownLegion.colorId; ownLegion.colorId = occupyMainLegionData.colorId; occupyMainLegionData.colorId = tempColorId; } else { ownLegion.colorId = War.config.ownDefaultColor; } // 创建势力联盟数据LegionGroupData foreach (StageLegionGroupConfig groupConfig in stageConfig.legionGroups) { LegionGroupData groupData = new LegionGroupData(groupConfig.id); legionGroupDict.Add(groupData.id, groupData); foreach (StageLegionConfig legionConfig in groupConfig.list) { groupData.AddLegion(legionDict[legionConfig.legionId]); } } List <int> colorIdList = new List <int>(); foreach (KeyValuePair <int, LegionData> legionKVP in War.sceneData.legionDict) { colorIdList.Add(legionKVP.Value.colorId); } colorIds = colorIdList.ToArray(); }