Ejemplo n.º 1
0
    //构建改变属性
    private void createAttrChange(BattleDataErlang battleData, BattleSkillMsg msg, ErlArray array)
    {
        //被改变者id
        string str1 = array.Value [0].getValueString();

        int[] arrInt1 = new int[1] {
            StringKit.toInt(str1)
        };
        msg.targets = arrInt1;

        //改变的具体属性 数字代替
        string str2 = array.Value [1].getValueString();

        msg.valueType = StringKit.toInt(str2);

        //具体数值
        string str3 = array.Value [2].getValueString();

        msg.damage = StringKit.toInt(str3);
        if (msg.valueType == 1)
        {
            BattleHpInfo info = null;
            if (battleData.hpMap.ContainsKey(msg.targets [0]))
            {
                info = battleData.hpMap [msg.targets [0]];
            }
            else
            {
                info = new BattleHpInfo();
                battleData.hpMap.Add(msg.targets [0], info);
            }
            info.hp += msg.damage;
        }
    }
Ejemplo n.º 2
0
    public void skipBattle()
    {
        List <CharacterData> ctrlList = getActionCharacters();

        foreach (CharacterData characterData in ctrlList)
        {
            if (battleData.hpMap.ContainsKey(characterData.serverID))
            {
                if (characterData == null || characterData.characterCtrl == null || characterData.characterCtrl.HpBar == null)
                {
                    continue;
                }
                BattleHpInfo info = battleData.hpMap [characterData.serverID];
                int          hp   = Mathf.Max(characterData.fixedServer_hp + info.hp, 0);
                characterData.server_hp = hp;
                characterData.characterCtrl.HpBar.updateValue(characterData.server_hp, characterData.server_max_hp);
                characterData.characterCtrl.HpBar.lockBar();

                //替补战中 主力死了激活替补
                //battleData.battleType =BattleType.BATTLE_SUBSTITUTE;
                if (characterData.server_hp <= 0 && battleData.battleType == BattleType.BATTLE_SUBSTITUTE)
                {
                    switchPlayerInSkillBattle(characterData);
                }
            }
        }
        battleOver();
    }
Ejemplo n.º 3
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();
            }
        }
    }
Ejemplo n.º 4
0
    private void createRoundBuffer(BattleDataErlang battleData, ErlList el, int frame)
    {
        // 处理回合开始buffer
//		[{"15",{9,27003,34}},
//                                        {"5",{9,1,-258}},
//                                        {"15",{15,27003,33}},
//                                        {"5",{15,1,-266}},
//                                        {"14",{15,27003,33}}]
        //建立每一个战斗回合
        BattleClipErlang battleClip = new BattleClipErlang();

        battleClip.frame = frame;
        battleData.battleClip.Add(battleClip);
        //建立每个战斗条目
        BattleInfoErlang battleInfo = new BattleInfoErlang();

        battleClip.battleInfo.Add(battleInfo);

        BattleSkillErlang skillerlang = new BattleSkillErlang();

        battleInfo.battleSkill.Add(skillerlang);

        BattleSkillMsg msg = new BattleSkillMsg();

        skillerlang.skillMsg = msg;
        msg.operationType    = BUFFER_CHECK;

        List <BuffAttrChange>   bcs = new List <BuffAttrChange> ();
        BuffAttrChange          bc;
        List <BattleAttrChange> acs;
        BattleAttrChange        ac;
        ErlArray ea1;
        ErlArray ea2;
        string   type;       //类型
        int      length = el.Value.Length;

        for (int i = 0; i < length; i++)
        {
            ea1  = el.Value [i] as ErlArray;
            type = (ea1.Value [0] as ErlString).Value;
            if (type == BUFFER_ABILITY)              //buffer生效
            {
                bc  = new BuffAttrChange();
                ea2 = ea1.Value [1] as ErlArray;
                bc.operationType = type;
                bc.skillSID      = StringKit.toInt(ea2.Value [1].getValueString());
//				MonoBase. print("bc.skillID "+bc.skillID );
                bc.skillID = StringKit.toInt(ea2.Value [2].getValueString());
                acs        = new List <BattleAttrChange> ();        //装在效果
                do
                {
                    ea1           = el.Value [++i] as ErlArray;
                    ea2           = ea1.Value [1] as ErlArray;
                    ac            = new BattleAttrChange();
                    ac.damageType = StringKit.toInt(ea2.Value [1].getValueString());
                    ac.damage     = StringKit.toInt(ea2.Value [2].getValueString());
                    //BattleDataErlang battleDate=BattleManager.battleData;
                    BattleHpInfo info = null;
                    if (battleData.hpMap.ContainsKey(StringKit.toInt(ea2.Value [0].getValueString())))
                    {
                        info = battleData.hpMap [StringKit.toInt(ea2.Value [0].getValueString())];
                    }
                    else
                    {
                        info = new BattleHpInfo();
                        battleData.hpMap.Add(StringKit.toInt(ea2.Value [0].getValueString()), info);
                    }
                    info.hp += ac.damage;
                    acs.Add(ac);
                } while(i < length - 1 &&
                        ((el.Value[i + 1] as ErlArray).Value[0] as ErlString).Value != BUFFER_ABILITY &&
                        ((el.Value[i + 1] as ErlArray).Value[0] as ErlString).Value != BUFFER_REMOVE);
                bc.changes = acs.ToArray();
                bcs.Add(bc);
            }
            else if (type == BUFFER_REMOVE)                //移除buffer
            {
                bc  = new BuffAttrChange();
                ea2 = ea1.Value [1] as ErlArray;
                bc.operationType = type;
                bc.skillSID      = StringKit.toInt(ea2.Value [1].getValueString());
                bc.skillID       = StringKit.toInt(ea2.Value [2].getValueString());
                bcs.Add(bc);
            }
            else
            {
            }
        }
        msg.changes = bcs.ToArray();
    }