Esempio n. 1
0
 //添加teamInfoPlayer
 public void addTeamInfoPlayer(TeamInfoPlayer player)
 {
     if (!isSameCamp(player.camp))
     {
         return;
     }
     list.Add(player);
 }
Esempio n. 2
0
 //设置召唤兽编号
 public void setGuardianForce(TeamInfoPlayer gf)
 {
     if (gf.camp != teamCamp)
     {
         return;
     }
     this.guardianForce = gf;
 }
    private void addCard(BattleSkillMsg msg, ErlArray array)
    {
        TeamInfoPlayer card = new TeamInfoPlayer();

        if (array.Value [0] is ErlArray)                                            //剧情npc
        {
            string str1 = (array.Value [0] as ErlArray).Value [0].getValueString(); //camp 阵营
            card.camp = StringKit.toInt(str1);
        }
        else
        {
            //替补
            string str1 = array.Value [0].getValueString();             //camp 阵营
            card.camp = StringKit.toInt(str1);
        }

        string str2 = array.Value [1].getValueString();         //sid 模板

        card.sid = StringKit.toInt(str2);
        string str3 = array.Value [2].getValueString();         //id 唯一标示

        card.id = StringKit.toInt(str3);
        string strUid = array.Value [3].getValueString();         //uid 卡片唯一id 可能为空

        card.uid = strUid;
        string str4 = array.Value [4].getValueString();         //hp

        card.hp = StringKit.toInt(str4);
        string str5 = array.Value [5].getValueString();         //maxhp int

        card.maxHp = StringKit.toInt(str5);
        string str6 = array.Value [6].getValueString();         //master 拥有者名字

        card.master = str6;
        string str7 = array.Value [7].getValueString();         //embattle 阵位 编号

        card.embattle = StringKit.toInt(str7);
        card.evoLevel = BattleManager.battleData.getCardEvoLevel(card.uid);         //卡片进化等级

        card.isAlternate = true;
        msg.card         = card;

        if (card.camp == TeamInfo.OWN_CAMP)
        {
            BattleManager.battleData.playerTeamInfo.addTeamInfoSub(card);
        }
        else
        {
            BattleManager.battleData.enemyTeamInfo.addTeamInfoSub(card);
        }

        msg.skillSID = SkillSampleManager.SID_ADD_CARD;
    }
Esempio n. 4
0
    //添加替补的逻辑数据
    public void addTeamInfoSub(TeamInfoPlayer player)
    {
        if (!isSameCamp(player.camp))
        {
            return;
        }
        if (subList == null)
        {
            subList = new List <TeamInfoPlayer> ();
        }

        subList.Add(player);
    }
Esempio n. 5
0
    void switchPlayerInSkillBattle(CharacterData characterData)
    {
        //队伍管理器里的队伍逻辑数据中找出对应替补
        BattleTeamManager teamM = characterData.parentTeam;
        TeamInfoPlayer    sub   = teamM.teamInfo.getSubstitute(characterData.TeamPosIndex);

        //替补战的情况,主力死了换替补上来显示
        if (sub != null)
        {
            //主力下场
            characterData.characterCtrl.outBattleField();
            teamM.players.Remove(characterData);

            for (int i = 0; i < teamM.players.Count; i++)
            {
                if (teamM.players[i].serverID == sub.id)
                {
                    return;
                }
            }
            //创建替补的战斗用数据
            CharacterData subData = BattleCharacterManager.Instance.CreateBattleCharacterData(sub, teamM, BattleManager.battleData.battleType);
            teamM.players.Add(subData);
            teamM.CreateCharacterInstance(subData);             //创建图像实例

            //计算新上来的替补的最终血量
            if (battleData.hpMap != null && subData != null && battleData.hpMap.ContainsKey(subData.serverID))
            {
                BattleHpInfo info = battleData.hpMap [subData.serverID];
                int          hp   = Mathf.Max(subData.fixedServer_hp + info.hp, 0);
                subData.server_hp = hp;
                subData.characterCtrl.HpBar.updateValue(subData.server_hp, subData.server_max_hp);
                subData.characterCtrl.HpBar.lockBar();
            }
        }
    }
Esempio n. 6
0
 protected void ProcessTeamInfo(TeamInfoDTO info)
 {
     this.teamInfo = info;
     goalKeeper    = this.teamInfo.players.Where(p => p.playerType == "G").First();
 }
    //构建战报队伍信息
    private void createTeamInfo(BattleDataErlang battleData, ErlList el)
    {
        //战斗双方
        battleData.playerTeamInfo = new TeamInfo(TeamInfo.OWN_CAMP);
        battleData.enemyTeamInfo  = new TeamInfo(TeamInfo.ENEMY_CAMP);
//								[{"4",{2,15,30,3000,3000,"npc",15}},
//                                {"4",{2,15,27,3000,3000,"npc",11}},
//                                {"4",{2,12,24,2986,2986,"npc",9}},
//                                {"4",{2,12,21,2986,2986,"npc",7}},
//                                {"4",{2,17,18,3000,3000,"npc",3}},
//                                {"4",{1,10,15,4168,4168,"role",10}},
//                                {"4",{1,9,12,3307,3307,"role",8}},`
//                                {"4",{1,8,9,3188,3188,"role",6}},
//                                {"4",{1,7,6,3188,3188,"role",4}},
//                                {"4",{1,6,3,3098,3098,"role",2}},
//                                {"4",{{1,1},29,1,1,1,"role",0}}]
        TeamInfoPlayer card;
        ErlArray       array;

        for (int i = 0; i < el.Value.Length; i++)
        {
            card  = new TeamInfoPlayer();
            array = (el.Value [i] as ErlArray).Value [1] as ErlArray;
            if (array.Value [0] is ErlArray)
            {
                //召唤兽
                string str1 = (array.Value [0] as ErlArray).Value [0].getValueString(); //camp 阵营
                card.camp = StringKit.toInt(str1);
                string str2 = array.Value [1].getValueString();                         //sid 模板
                card.sid = StringKit.toInt(str2);
                string str3 = array.Value [2].getValueString();                         //id 唯一标示
                card.id = StringKit.toInt(str3);
                string strUid = array.Value [3].getValueString();                       //uid 卡片唯一id 可能为空
                card.uid = strUid;
                string str4 = array.Value [4].getValueString();                         //hp
                card.hp = StringKit.toInt(str4);
                string str5 = array.Value [5].getValueString();                         //maxhp int
                card.maxHp = StringKit.toInt(str5);
                string str6 = array.Value [6].getValueString();                         //master 拥有者名字
                card.master = str6;
                string str7 = array.Value [7].getValueString();                         //embattle 阵位 编号
                card.embattle        = StringKit.toInt(str7);
                card.isGuardianForce = true;

                battleData.playerTeamInfo.setGuardianForce(card);
                battleData.enemyTeamInfo.setGuardianForce(card);
            }
            else                                                      //普通卡片
            {
                string str1 = array.Value [0].getValueString();       //camp 阵营
                card.camp = StringKit.toInt(str1);
                string str2 = array.Value [1].getValueString();       //sid 模板
                card.sid = StringKit.toInt(str2);
                string str3 = array.Value [2].getValueString();       //id 唯一标示
                card.id = StringKit.toInt(str3);
                string strUid = array.Value [3].getValueString();     //uid 卡片唯一id 可能为空
                card.uid = strUid;
                string str4 = array.Value [4].getValueString();       //hp
                card.hp = StringKit.toInt(str4);
                string str5 = array.Value [5].getValueString();       //maxhp int
                card.maxHp = StringKit.toInt(str5);
                string str6 = array.Value [6].getValueString();       //master 拥有者名字
                card.master = str6;
                string str7 = array.Value [7].getValueString();       //embattle 阵位 编号
                card.embattle = StringKit.toInt(str7);
                card.evoLevel = battleData.getCardEvoLevel(card.uid); //卡片进化等级
                if (array.Value.Length > 9)
                {
                    string str8 = array.Value [8].getValueString();                     // 卡片进化等级//
                    card.evoLevel = StringKit.toInt(str8);
                    string str9 = array.Value [9].getValueString();                     // 卡片突破等级//
                    card.surLevel = StringKit.toInt(str9);
                }

                //在添加卡片的时候进行判断
                battleData.playerTeamInfo.addTeamInfoPlayer(card);
                battleData.enemyTeamInfo.addTeamInfoPlayer(card);
            }
        }
    }
Esempio n. 8
0
    private void smartTips()
    {
        ////设置数据
        string         key      = UserManager.Instance.self.uid + PlayerPrefsComm.BATTLE_SMART_TIPS + BattleManager.battleSid;//BattleManager.lastMissionEvent.sid;
        TeamInfoPlayer bossCard = null;

        for (int i = 0; i < BattleManager.battleData.enemyTeamInfo.list.Count; i++)
        {
            if (CardSampleManager.Instance.getRoleSampleBySid(BattleManager.battleData.enemyTeamInfo.list [i].sid).cardType == 3)
            {
                bossCard = BattleManager.battleData.enemyTeamInfo.list [i];
                break;
            }
        }


        int type = 0;

        //可能有挂机的情况
        if (MissionInfoManager.Instance.mission == null || BattleManager.battleData.isPvP)
        {
            type = -1;
        }
        else
        {
            type = MissionInfoManager.Instance.mission.getChapterType();
        }

        string str = "";

        /////显示相应提示
        if (type == ChapterType.WAR && !BattleManager.battleData.isHeroRoad)
        {
            if (bossCard == null)
            {
                str = LanguageConfigManager.Instance.getLanguage("smartTips_01");
            }
            else
            {
                if (bossCard.hp / bossCard.maxHp < 0.35f)
                {
                    str = LanguageConfigManager.Instance.getLanguage("smartTips_02");
                }
                else
                {
                    str = bossCard != null?smartFirstBattleTips(key) : LanguageConfigManager.Instance.getLanguage("smartTips_01");
                }
            }
        }
        else if (type == ChapterType.STORY && !BattleManager.battleData.isHeroRoad)
        {
            int recommendedCombat = MissionSampleManager.Instance.getMissionSampleBySid(MissionInfoManager.Instance.mission.sid).getRecommendCombat(MissionInfoManager.Instance.mission.starLevel);
            if (bossCard != null)
            {
                str = LanguageConfigManager.Instance.getLanguage("smartTips_03");
            }
            else
            {
                if ((recommendedCombat * 0.85f) > ArmyManager.Instance.getTeamCombat(ArmyManager.PVE_TEAMID))
                {
                    str = LanguageConfigManager.Instance.getLanguage("smartTips_01");
                }
                else
                {
                    str = smartFirstBattleTips(key);
                }
            }
        }

        if (str.Length > 0)
        {
            PlayerPrefs.SetString(key, ServerTimeKit.getSecondTime().ToString());
            //讨伐 英雄之章不需要战败放弃副本友善指引
            if (type != ChapterType.WAR && type != ChapterType.HERO_ROAD)
            {
                UiManager.Instance.openDialogWindow <SmartTipsWindow> ((win) => {
                    win.UI_Arrow1.SetActive(str == LanguageConfigManager.Instance.getLanguage("smartTips_01"));
                    win.UI_Arrow2.SetActive(!win.UI_Arrow1.activeSelf);
                    win.init(str);
                });
            }
        }
    }
    //创建战斗用的角色数据实例,列表管理在battleManager
    public CharacterData CreateBattleCharacterData(TeamInfoPlayer playerData, BattleTeamManager parentTeam, int battleType)
    {
        CharacterData _data = new CharacterData();

        _data.serverID       = playerData.id;
        _data.storeID        = playerData.uid;
        _data.TeamPosIndex   = playerData.embattle;      //临时用
        _data.server_hp      = playerData.hp;
        _data.fixedServer_hp = playerData.hp;
        _data.server_max_hp  = playerData.maxHp;
        _data.parentTeam     = parentTeam;
        _data.orgScale       = Vector3.one;
        _data.camp           = playerData.camp;
        _data.EvoLevel       = playerData.evoLevel;
        //是否是npc
        if (playerData.master == BattleReportService.NPC)
        {
            _data.isNPC = true;
        }
        else
        {
            _data.isNPC = false;
        }

        if (playerData.camp == TeamInfo.OWN_CAMP)
        {
            if (playerData.isGuardianForce)
            {
//				if (BattleManager.battleData.isArenaFinal ||
//					BattleManager.battleData.isArenaMass ||
//					BattleManager.battleData.isGuide ||
//				    BattleManager.battleData.isLadders ||
//					BattleManager.battleData.isGuildBoss||
//				    BattleManager.battleData.isPvP||
//                    BattleManager.battleData.isMineralFightRecord) //公会boss在选择队伍的时候保存了一次活动队伍,看需求可能不能保存
                _data.role = CardManagerment.Instance.createCard(playerData.sid);
//				else
//					_data.role = StorageManagerment.Instance.getBeast (ArmyManager.Instance.getActiveArmy ().beastid);
            }
            else
            {
                if (_data.isNPC)
                {
                    //npc
                    _data.orgScale = BattleManager.SACLEOFNPC;
                    _data.role     = CardManagerment.Instance.createCard("", playerData.sid, 0, 0);
                }
                else
                {
                    //人
                    if (battleType == BattleType.BATTLE_TEN)
                    {
                        //十人战大小不同
                        _data.orgScale = BattleManager.SACLEOF10V10;

                        if (BattleManager.battleData.isArenaFinal || BattleManager.battleData.isGuide || BattleManager.battleData.isLadders || BattleManager.battleData.isGodsWarGroupFight)
                        {
                            //_data.role = CardManagerment.Instance.createCard ("", playerData.sid, 0, 0);
                            _data.role = CardManagerment.Instance.createCard(playerData.sid, playerData.surLevel);
                        }
                        else
                        {
                            //bugfix 竞技场固定用3
                            int armyID;
                            if (BattleManager.battleData.isArenaMass || BattleManager.battleData.isArenaFinal || BattleManager.battleData.isLadders || BattleManager.battleData.isGodsWarGroupFight)
                            {
                                armyID = ArmyManager.PVP_TEAMID;
                            }
                            else if (BattleManager.battleData.isGuildFight)
                            {
                                armyID = ArmyManager.PVP_GUILD;
                            }
                            else
                            {
                                armyID = ArmyManager.Instance.getActiveArmy().armyid;
                            }
                            //十人战本方卡片获取方式不一样  站位 主力固定1 2 3 4 5,替补固定11 12 13 14 15
                            if (_data.TeamPosIndex < 6)
                            {
                                string id;
                                if (BattleManager.battleData.isOneOnOneBossFight)
                                {
                                    id = playerData.uid;
                                }
                                else
                                {
                                    id = ArmyManager.Instance.getArmy(armyID).players [_data.TeamPosIndex - 1];
                                }
                                _data.role = StorageManagerment.Instance.getRole(id);
                            }
                            else
                            {
                                string id;
                                if (BattleManager.battleData.isOneOnOneBossFight)
                                {
                                    id = playerData.uid;
                                }
                                else
                                {
                                    id = ArmyManager.Instance.getArmy(armyID).alternate [_data.TeamPosIndex - 11];
                                }
                                _data.role = StorageManagerment.Instance.getRole(id);
                            }
                        }
                    }
                    else
                    {
                        if (BattleManager.battleData.playerFormationID == 1)
                        {
                            _data.orgScale = BattleManager.SACLEOF3V3;
                        }
                        else if (BattleManager.battleData.playerFormationID == 2)
                        {
                            //todo 4人阵放大不
                        }
                        if (BattleManager.battleData.isArenaFinal || BattleManager.battleData.isGuide || BattleManager.battleData.isLadders || BattleManager.battleData.isMineralFightRecord || BattleManager.battleData.isGodsWarFinal || BattleManager.battleData.isGodsWarGroupFight)
                        {
                            //_data.role = CardManagerment.Instance.createCard ("", playerData.sid, 0, 0);
                            _data.role = CardManagerment.Instance.createCard(playerData.sid, playerData.surLevel);
                        }
                        else if (BattleManager.battleData.isOneOnOneBossFight)                            //恶魔挑战(只有一个人)很危险的操作
                        {
                            _data.role = StorageManagerment.Instance.getRole(playerData.uid);
                            //return _data;
                        }
                        else
                        {
                            _data.role = StorageManagerment.Instance.getRole(_data.storeID);
                        }
                    }
                }
            }
        }
        else
        {
            //敌人

            //todo pvp单独处理,下面是pve的情况

            if (playerData.isGuardianForce)
            {
                _data.role = CardManagerment.Instance.createCard(playerData.sid);
            }
            else
            {
                if (BattleManager.battleData.battleType == BattleType.BATTLE_TEN)
                {
                    //十人战大小不同
                    _data.orgScale = BattleManager.SACLEOF10V10;
                }

                //_data.role = CardManagerment.Instance.createCard ("", playerData.sid, 0, 0);
                _data.role = CardManagerment.Instance.createCard(playerData.sid, playerData.surLevel);
            }
        }

        if (playerData.isGuardianForce)
        {
            if (playerData.camp == TeamInfo.OWN_CAMP)
            {
                _data.orgPosition = new Vector3(0, 0, -3);
            }
            else
            {
                _data.orgPosition = new Vector3(0, 0, 3);
            }
        }
        else
        {
            if (_data.isNPC)
            {
                _data.orgPosition = BattleManager.Instance.npcPoint.FindChild(_data.TeamPosIndex.ToString()).position;
            }
            else if (_data.isBoss)
            {
                _data.orgPosition = parentTeam.TeamHitPoint.position;
            }
            else
            {
                //如果是人
                _data.orgPosition = parentTeam.formation.getPosition(_data.TeamPosIndex);
            }
            if (_data.role != null)
            {
                _data.isBoss = _data.role.isBoss();
            }
        }

        if (_data.role == null)
        {
            MonoBase.print("role is null  sid=" + playerData.sid);
            return(null);
        }

        return(_data);
    }