コード例 #1
0
        public ArenaResponse Fight(CombatUnit leader, CombatUnit attacker)
        {
            ArenaResponse resp = new ArenaResponse();

            Player1 = leader;
            Player2 = attacker;

            hp1 = Player1.Hp;
            hp2 = Player2.Hp;

            def1 = (int)(Player1.Def * 0.33);
            def2 = (int)(Player2.Def * 0.33);

            int round   = 1;
            int allDmg1 = 0;
            int allDmg2 = 0;

            resp.CombatLog.Title = Player1.Name + " vs. " + Player2.Name;
            resp.CombatLog.Rounds.Add(new CombatLogUnit(0, 0, 0, hp1, hp2));

            while (hp1 >= 0 && hp2 >= 0)
            {
                var player1hit = Hit(Player1, def2);
                var player2hit = Hit(Player2, def1);

                player1hit = IsDodge(Player2) ? 0 : player1hit;
                player2hit = IsDodge(Player1) ? 0 : player2hit;

                player1hit = IsCrit(Player1) ? player1hit * 2 : player1hit;
                player2hit = IsCrit(Player2) ? player2hit * 2 : player2hit;

                hp1 -= player2hit;
                hp2 -= player1hit;

                allDmg1 += player1hit;
                allDmg2 += player2hit;

                resp.CombatLog.Rounds.Add(new CombatLogUnit(round, player1hit, player2hit, hp1, hp2));

                round++;
            }

            resp.CombatLog.DpsText = "Dps: " + Math.Round((allDmg1 / (double)round - 1), 2) + " - " + Math.Round((allDmg2 / (double)round - 1), 2);

            if (hp1 >= 0)
            {
                resp.IsWin = false;
                resp.CombatLog.ResultText = Player1.Name + " a győztes.";
            }
            else if (hp2 >= 0)
            {
                resp.IsWin = true;
                resp.CombatLog.ResultText = Player2.Name + " a győztes.";
            }

            resp.Money = SetMoney(leader.Hp, hp1);

            return(resp);
        }
コード例 #2
0
        public void CreateArenaLog(ArenaResponse enemyTeam)
        {
            var logs    = _dataRepository.GetLogs();
            var logText = enemyTeam.GetResoult();
            var newLog  = new Log(LogTypeEnum.Arena, logText);

            logs.Insert(0, newLog);
            _dataRepository.SaveToFile(logs);
        }
コード例 #3
0
        private static void AssertSingleAliceSuccessfullyRegistered(Round round, DateTimeOffset minAliceDeadline, ArenaResponse <Guid> resp)
        {
            var alice = Assert.Single(round.Alices);

            Assert.NotNull(resp);
            Assert.NotNull(resp.IssuedAmountCredentials);
            Assert.NotNull(resp.IssuedVsizeCredentials);
            Assert.True(minAliceDeadline <= alice.Deadline);
        }