Exemple #1
0
        public void Fight(Character Player, Character Enemy)
        {
            FightRound fightRound = new FightRound();

            while (Player.IsAlive && Enemy.IsAlive)
            {
                Random    rnd       = new Random();
                DiceRound diceRound = new DiceRound(Player.Strength + rnd.Next(1, 6), Enemy.Strength + rnd.Next(1, 6));
                MyDebugWriteStatusWriter(Player, Enemy, diceRound);
                fightRound.AddDiceRound(diceRound); //Logging
                if ((diceRound.PlayerDiceRoll) > (diceRound.EnemyDiceRoll))
                {
                    Enemy.Health -= 1;
                    if (Enemy.Health <= 0)
                    {
                        Enemy.IsAlive = false;
                    }
                }
                else
                {
                    Player.Health -= 1;
                    if (Player.Health <= 0)
                    {
                        Player.IsAlive = false;
                    }
                }
            }
            if (Player.IsAlive)
            {
                fightRound.SetWinner(Player);
                fightRound.SetLooser(Enemy);
            }
            else
            {
                fightRound.SetWinner(Enemy);
                fightRound.SetLooser(Player);
            }
            FightRounds.Add(fightRound); //Logging
        }
Exemple #2
0
        public override string test()
        {
            string s = "";

            s = "战斗协议数据解析\n";
            TextAsset   ta      = Resources.Load("battleRecord") as TextAsset;
            FightAnswer fanswer = ProtoBufHelper.DeSerialize <FightAnswer>(ta.bytes);
            //FightAnswer fanswer = fightData;
            uint             ret   = fanswer.result;
            uint             id    = fanswer.res;
            List <FightData> datas = fanswer.fightdatas;

            for (int i = 0; i < datas.Count; i++)
            {
                Debug.Log("战斗场数:" + i);
                s += "战斗场数:" + i;
                FightData  da = datas[i];
                FightArray fa = da.FightsArray;
                for (int ii = 0; ii < fa.positions.Count; ii++)
                {
                    uint roleId   = fa.roleids[ii];
                    uint position = fa.positions[ii];
                    Debug.Log("roleId :" + roleId + " position :" + position);
                    s += "roleId :" + roleId + " position :" + position;
                }

                Debug.Log("初始状态");
                s += "初始状态";
                FighterStatu fStatu = null;
                for (int ii = 0; ii < da.fightersstatu.Count; ii++)
                {
                    fStatu = da.fightersstatu[ii];
                    uint        position = fStatu.position;
                    uint        anger    = fStatu.anger;
                    U64Type     hpTotal  = fStatu.hptotal;
                    U64Type     hp       = fStatu.hp;
                    List <uint> buffs    = fStatu.buffs;
                    Debug.Log("position:" + position + " anger:" + anger + " hpTotal:" + StringHelper.makeStrGUID(hpTotal) + " hp:" + StringHelper.makeStrGUID(hp));
                    s += "position:" + position + " anger:" + anger + " hpTotal:" + StringHelper.makeStrGUID(hpTotal) + " hp:" + StringHelper.makeStrGUID(hp);
                    for (int iii = 0; iii < buffs.Count; iii++)
                    {
                        uint buffId = buffs[iii];
                    }
                }

                List <FightRound> fightRound = da.round;
                for (int iRound = 0; iRound < fightRound.Count; iRound++)
                {
                    Debug.Log("当前回合" + iRound);
                    s += "当前回合" + iRound;
                    FightRound        currRound = fightRound[iRound];
                    List <AttackData> attackPre = currRound.attackPre;
                    List <AttackData> attack    = currRound.attack;

                    for (int iAttack = 0; iAttack < attackPre.Count; iAttack++)
                    {
                        Debug.Log("第" + iAttack + "手攻击");
                        s += "第" + iAttack + "手攻击";
                        AttackData atPre = attackPre[iAttack];
                        Debug.Log("技能id" + attack[iAttack].skillid);
                        s += "技能id" + attack[iAttack].skillid;
                        Debug.Log("攻击前attacks:");
                        s += "攻击前attacks:";
                        for (int j = 0; j < atPre.attackers.Count; j++)
                        {
                            Debug.Log("\tidx:" + j + "attackId:" + atPre.attackers[j]);
                            s += "\tidx:" + j + "attackId:" + atPre.attackers[j];
                        }

                        Debug.Log("\n攻击前beattacks:");
                        s += "\n攻击前beattacks:";

                        for (int j = 0; j < atPre.beattackers.Count; j++)
                        {
                            Debug.Log("\tidx:" + j + "beattackId:" + atPre.beattackers[j]);
                            s += "\tidx:" + j + "beattackId:" + atPre.beattackers[j];
                        }

                        for (int ii = 0; ii < atPre.newstatus.Count; ii++)
                        {
                            FighterStatu fStatu0  = atPre.newstatus[ii];
                            uint         position = fStatu0.position;
                            uint         anger    = fStatu0.anger;
                            U64Type      hpTotal  = fStatu0.hptotal;
                            U64Type      hp       = fStatu0.hp;
                            List <uint>  buffs    = fStatu0.buffs;
                            Debug.Log("position:" + position + " anger:" + anger + " hpTotal:" + StringHelper.makeStrGUID(hpTotal) + " hp:" + StringHelper.makeStrGUID(hp));
                            s += "position:" + position + " anger:" + anger + " hpTotal:" + StringHelper.makeStrGUID(hpTotal) + " hp:" + StringHelper.makeStrGUID(hp);
                            for (int iii = 0; iii < buffs.Count; iii++)
                            {
                                uint buffId = buffs[iii];
                            }
                        }

                        AttackData at = attack[iAttack];
                        Debug.Log("攻击attacks:");
                        s += "攻击attacks:";
                        for (int j = 0; j < at.attackers.Count; j++)
                        {
                            Debug.Log("\tidx:" + j + " attackId:" + atPre.attackers[j]);
                            s += "\tidx:" + j + " attackId:" + atPre.attackers[j];
                        }

                        Debug.Log("\n攻击beattacks:");
                        s += "\n攻击beattacks:";
                        for (int j = 0; j < at.beattackers.Count; j++)
                        {
                            Debug.Log("\tidx:" + j + " beattackId:" + at.beattackers[j]);
                            s += "\tidx:" + j + " beattackId:" + at.beattackers[j];
                        }

                        for (int ii = 0; ii < at.newstatus.Count; ii++)
                        {
                            FighterStatu fStatu0  = at.newstatus[ii];
                            uint         position = fStatu0.position;
                            uint         anger    = fStatu0.anger;
                            U64Type      hpTotal  = fStatu0.hptotal;
                            U64Type      hp       = fStatu0.hp;
                            StringHelper.makeStrGUID(hpTotal);
                            List <uint> buffs = fStatu0.buffs;
                            Debug.Log("position:" + position + " anger:" + anger + " hpTotal:" + StringHelper.makeStrGUID(hpTotal) + " hp:" + StringHelper.makeStrGUID(hp));
                            s += "position:" + position + " anger:" + anger + " hpTotal:" + StringHelper.makeStrGUID(hpTotal) + " hp:" + StringHelper.makeStrGUID(hp);
                            for (int iii = 0; iii < buffs.Count; iii++)
                            {
                                uint buffId = buffs[iii];
                            }
                        }
                    }
                }
            }
            return(s);
        }
Exemple #3
0
    public void Fight(ref Role snake, ref Role firebird, ref Text NumofSnakeblood, ref Text NumofBirdblood)
    {
        fightcurrenttime += Time.deltaTime;
        switch (currentFightState)
        {
        case FightRound.birdfight:
        {
            if (fightcurrenttime > 3.0f)
            {
                if (firebird.blood >= 0 && snake.blood >= 0)
                {
                    Debug.Log("烈焰火鸟开始攻击");
                    if (Random.Range(0, 100) <= 30)
                    {
                        snake.blood = snake.blood - firebird.criticaldamage;
                        if (snake.blood >= 0)
                        {
                            Debug.Log("八岐大蛇血量还剩" + snake.blood);
                            //用label显示八岐大蛇与烈焰火鸟的当前的血量,要一直显示。
                            NumofSnakeblood.text = "血量" + snake.blood.ToString();
                            Debug.Log("烈焰火鸟触发暴伤产生伤害" + firebird.criticaldamage);
                            NumofSnakeAttack.text = " ";
                            //snakebloodbar.value = snake.blood;
                            NumofBirdblood.text = "血量" + firebird.blood.ToString();
                        }
                    }
                    else
                    {
                        snake.blood = snake.blood - firebird.attack;
                        if (snake.blood >= 0)
                        {
                            Debug.Log("烈焰火鸟产生伤害" + firebird.attack);
                            //用label显示八岐大蛇与烈焰火鸟的当前的血量,要一直显示。
                            NumofSnakeblood.text = "血量" + snake.blood.ToString();
                            Debug.Log("八岐大蛇血量还剩" + snake.blood);
                            //snakebloodbar.value = snake.blood; 血条会变,但是这里报错,还应该要怎么实例化呢
                            NumofBirdblood.text   = "血量" + firebird.blood.ToString();
                            NumofSnakeAttack.text = " ";
                        }
                    }
                    currentFightState = FightRound.snakefight;
                    fightcurrenttime  = 0.0f;
                }
            }
        }
        break;

        case FightRound.snakefight:
        {
            if (fightcurrenttime > 3.0f)
            {
                if (firebird.blood >= 0 && snake.blood >= 0)
                {
                    Debug.Log("八岐大蛇开始攻击");
                    if (Random.Range(0, 100) <= 50)
                    {
                        firebird.blood = firebird.blood - snake.criticaldamage;
                        if (firebird.blood >= 0)
                        {
                            Debug.Log("八岐大蛇触发暴击产生伤害" + snake.criticaldamage);
                            //用label显示八岐大蛇与烈焰火鸟的当前受到的攻击伤害,显示完之后要消失。
                            NumofSnakeAttack.text = "受到伤害" + snake.criticaldamage.ToString();
                            //snakebloodbar.value = snake.blood;
                            Debug.Log("烈焰火鸟血量还剩" + firebird.blood);
                            NumofBirdblood.text = "血量" + firebird.blood.ToString();
                        }
                    }
                    else
                    {
                        firebird.blood = firebird.blood - snake.attack;
                        if (firebird.blood >= 0)
                        {
                            //用label显示八岐大蛇与烈焰火鸟的当前受到的攻击伤害,显示完之后要消失。还不知道怎么消失
                            Debug.Log("八岐大蛇产生伤害" + snake.attack);
                            NumofSnakeAttack.text = "受到伤害" + snake.attack.ToString();
                            Debug.Log("烈焰火鸟血量还剩" + firebird.blood);
                            //snakebloodbar.value = snake.blood;
                            NumofBirdblood.text = "血量" + firebird.blood.ToString();
                        }
                    }
                    currentFightState = FightRound.birdfight;
                    fightcurrenttime  = 0.0f;
                }
            }
        }
        break;
        }
    }
Exemple #4
0
    void dumpFightData(FightAnswer fightData)
    {
        FightAnswer      fanswer = fightData;
        uint             ret     = fanswer.result;
        uint             id      = fanswer.res;
        List <FightData> datas   = fanswer.fightdatas;

        for (int i = 0; i < datas.Count; i++)
        {
            Debug.Log("战斗场数:" + i);
            FightData  da = datas[i];
            FightArray fa = da.FightsArray;
            for (int ii = 0; ii < fa.positions.Count; ii++)
            {
                uint roleId   = fa.roleids[ii];
                uint position = fa.positions[ii];
                Debug.Log("roleId :" + roleId + " position :" + position);
            }

            Debug.Log("初始状态");
            FighterStatu fStatu = null;
            for (int ii = 0; ii < da.fightersstatu.Count; ii++)
            {
                fStatu = da.fightersstatu[ii];
                uint        position = fStatu.position;
                uint        anger    = fStatu.anger;
                U64Type     hpTotal  = fStatu.hptotal;
                U64Type     hp       = fStatu.hp;
                List <uint> buffs    = fStatu.buffs;
                Debug.Log("position:" + position + " anger:" + anger + " hpTotal:" + StringHelper.makeStrGUID(hpTotal) + " hp:" + StringHelper.makeStrGUID(hp));
                for (int iii = 0; iii < buffs.Count; iii++)
                {
                    uint buffId = buffs[iii];
                }
            }

            List <FightRound> fightRound = da.round;
            for (int iRound = 0; iRound < fightRound.Count; iRound++)
            {
                Debug.Log("当前回合" + iRound);
                FightRound        currRound = fightRound[iRound];
                List <AttackData> attackPre = currRound.attackPre;
                List <AttackData> attack    = currRound.attack;

                for (int iAttack = 0; iAttack < attackPre.Count; iAttack++)
                {
                    Debug.Log("第" + iAttack + "手攻击");
                    AttackData atPre = attackPre[iAttack];
                    Debug.Log("技能id" + attack[iAttack].skillid);
                    Debug.Log("攻击前attacks:");
                    for (int j = 0; j < atPre.attackers.Count; j++)
                    {
                        Debug.Log("\tidx:" + j + "attackId:" + atPre.attackers[j]);
                    }

                    Debug.Log("\n攻击前beattacks:");
                    for (int j = 0; j < atPre.beattackers.Count; j++)
                    {
                        Debug.Log("\tidx:" + j + "beattackId:" + atPre.beattackers[j]);
                    }

                    for (int ii = 0; ii < atPre.newstatus.Count; ii++)
                    {
                        FighterStatu fStatu0  = atPre.newstatus[ii];
                        uint         position = fStatu0.position;
                        uint         anger    = fStatu0.anger;
                        U64Type      hpTotal  = fStatu0.hptotal;
                        U64Type      hp       = fStatu0.hp;
                        List <uint>  buffs    = fStatu0.buffs;
                        Debug.Log("position:" + position + " anger:" + anger + " hpTotal:" + StringHelper.makeStrGUID(hpTotal) + " hp:" + StringHelper.makeStrGUID(hp));
                        for (int iii = 0; iii < buffs.Count; iii++)
                        {
                            uint buffId = buffs[iii];
                        }
                    }

                    AttackData at = attack[iAttack];
                    Debug.Log("攻击attacks:");
                    for (int j = 0; j < at.attackers.Count; j++)
                    {
                        Debug.Log("\tidx:" + j + " attackId:" + atPre.attackers[j]);
                    }

                    Debug.Log("\n攻击beattacks:");
                    for (int j = 0; j < at.beattackers.Count; j++)
                    {
                        Debug.Log("\tidx:" + j + " beattackId:" + at.beattackers[j]);
                    }

                    for (int ii = 0; ii < at.newstatus.Count; ii++)
                    {
                        FighterStatu fStatu0  = at.newstatus[ii];
                        uint         position = fStatu0.position;
                        uint         anger    = fStatu0.anger;
                        U64Type      hpTotal  = fStatu0.hptotal;
                        U64Type      hp       = fStatu0.hp;
                        StringHelper.makeStrGUID(hpTotal);
                        List <uint> buffs = fStatu0.buffs;
                        Debug.Log("position:" + position + " anger:" + anger + " hpTotal:" + StringHelper.makeStrGUID(hpTotal) + " hp:" + StringHelper.makeStrGUID(hp));
                        for (int iii = 0; iii < buffs.Count; iii++)
                        {
                            uint buffId = buffs[iii];
                        }
                    }
                }
            }
        }
    }