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 }
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); }
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; } }
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]; } } } } } }