public void StartFighting(World world)
        {
            var          playerPos = world.Get <PlayerPosition>();
            var          monsters  = world.Get <MonsterMoveController[]>();
            MonsterStats monster   = null;

            foreach (var monsterMove in monsters)
            {
                if (playerPos.NumberOfArrayPlayerIsIn == monsterMove.MonsterPosition.NumberOfArrayMonsterIsIn)
                {
                    monster = monsterMove.MonsterStats;
                    break;
                }
            }

            if (monster == null)
            {
                MoveMessages message = new MoveMessages(world);
                message.NoMonsterToFightMessage();
                world.WrongDirectionCount++;
            }
            else
            {
                PlayerStats player = world.Get <PlayerStats>();
                player.InCombat  = true;
                monster.InCombat = true;
                CombatHandler handler = world.Get <CombatHandler>();
                handler.ExchangeBlowsTillDeath(monster, player);
            }
        }
        public void MoveTo(int movement)
        {
            DirectionChecker checker = new DirectionChecker(_world);

            if (checker.CanPlayerMoveInDirection(Map.Map[NumberOfArrayPlayerIsIn + movement]))
            {
                Changed = true;
                OldNumberOfArrayPlayerIsIn = NumberOfArrayPlayerIsIn;
                NumberOfArrayPlayerIsIn   += movement;
                MonsterMoveController[] monsters;
                if (_world.Has <MonsterMoveController[]>())
                {
                    monsters = _world.Get <MonsterMoveController[]>();
                }
                else
                {
                    monsters = new MonsterMoveController[1];
                }

                if (monsters.Length > 1)
                {
                    foreach (var monster in monsters)
                    {
                        if (monster.MonsterPosition.NumberOfArrayMonsterIsIn == NumberOfArrayPlayerIsIn)
                        {
                            _world.LinesTypedInMessageBox++;
                            MoveMessages message = new MoveMessages(_world);
                            message.MonstersInRoomMessage(monster.MonsterStats.Name);
                        }
                    }
                }
            }
        }
        public void MakeMove_WhenPlayerMakesFirstMove_ReturnMoveMessageIsOnlyHitOrMiss()
        {
            var availableReturnMessages = new MoveMessages[] { MoveMessages.Hit, MoveMessages.Miss };

            MoveHelper.MakeMove(_player, _board);

            Assert.IsTrue(availableReturnMessages.Contains(_board.Message));
        }
Esempio n. 4
0
 public DirectionChecker(World world)
 {
     _world   = world;
     _message = new MoveMessages(_world);
 }