Пример #1
0
        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;
            }
        }
Пример #2
0
    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);
    }
Пример #3
0
        /** 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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        /** 生成数据--势力 */
        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();
        }