Exemple #1
0
        public void AttackActionTestProbability()
        {
            var map = new SmallMap().BuildMap();

            var attackingUnitLoses = 0;
            var defendingUnitLoses = 0;

            for (var i = 0; i < 10000; i++)
            {
                var attackingUnit = new EqualPowerWarrior(Position.ZERO);
                var defendingUnit = new EqualPowerWarrior(new Position(1, 1));

                var action = new AttackAction(map, attackingUnit, defendingUnit);
                action.Do();
                if (action.Loser == attackingUnit)
                {
                    attackingUnitLoses++;
                }
                else
                {
                    defendingUnitLoses++;
                }
            }

            var attackerWin = attackingUnitLoses / (double)(attackingUnitLoses + defendingUnitLoses);
            var defenderWin = defendingUnitLoses / (double)(attackingUnitLoses + defendingUnitLoses);

            var epsilon = 0.01;

            Assert.IsTrue(attackerWin <0.5 + epsilon && attackerWin> 0.5 - epsilon);
            Assert.IsTrue(defenderWin <0.5 + epsilon && defenderWin> 0.5 - epsilon);
        }
Exemple #2
0
    private void Start()
    {
        Observable.EveryUpdate().Where(_ => Input.GetMouseButtonDown(0))
        .ThrottleFirst(TimeSpan.FromSeconds(attackCooldown.Value))
        .Subscribe(_ =>
        {
            var pos = Input.mousePosition;
            pos.z   = 10;
            pos     = Camera.main.ScreenToWorldPoint(pos);

            _attackAction.Do(gameObject, pos - transform.position);
            punchEvent.Raise();
        });
    }
Exemple #3
0
        public void DoTest()
        {
            var          map      = new SmallMap().BuildMap();
            var          attacker = new CerberusWarrior(Position.ZERO);
            var          defender = new CentaurWarrior(new Position(1, 1));
            AttackAction action   = new AttackAction(map, attacker, defender);

            action.Do();
            var movePointsLost = 2;

            Assert.AreEqual(action.Loser.HealthPoints, action.Loser.InitialHealthPoints - action.HealthPointsLost);
            Assert.AreEqual(action.MovePointsLost, movePointsLost);
            Assert.AreEqual(attacker.MovePoints, Unit.MAX_MOVE_POINTS - movePointsLost);
        }
Exemple #4
0
    void Start()
    {
        attackEvent = new VoidEvent();
        _animationHandler.CreateAnimationUnit("Punch", AnimatorControllerParameterType.Trigger, atomEvent: attackEvent);

        Transform player = AtomTags.FindByTag(playerTag.Value).transform;

        Observable.EveryUpdate().Buffer(TimeSpan.FromSeconds(eachXSeconds))
        .Where(_ => attackAtThisDistance.Value >= Vector2.Distance(player.position, transform.position))
        .Subscribe(_ =>
        {
            _attackAction.Do(gameObject, player.position - transform.position);
            attackEvent.Raise();
        });
    }
Exemple #5
0
 public void onAttackBtnClick()
 {
     attackAction.Do(this, enemy);
 }