Esempio n. 1
0
        public void SetToPosition(string type, int step)
        {
            if (Avatar.MonsterConfig.IsBuilding)
            {
                BattleManager.Instance.FlowWordQueue.Add(new FlowWord("抵抗", Position, 0, "Gold", 26, 0, 0, 1, 15), false);
                return;
            }

            Point dest = MonsterPositionHelper.GetAvailPoint(Position, type, IsLeft, step);

            if (dest.X != Position.X || dest.Y != Position.Y)
            {
                BattleLocationManager.SetToPosition(this, dest);
            }
        }
Esempio n. 2
0
        private void CheckMove(LiveMonster nearestEnemy)
        {
            var   moveDis = BattleManager.Instance.MemMap.CardSize;
            Point aimPos; //决定想去的目标点
            bool  goX;

            if (nearestEnemy.Position.X != monster.Position.X)
            {
                var x = monster.Position.X + (nearestEnemy.Position.X > monster.Position.X ? moveDis : -moveDis);
                aimPos = new Point(x, monster.Position.Y);
                goX    = true;
            }
            else
            {
                var y = monster.Position.Y + (nearestEnemy.Position.Y > monster.Position.Y ? moveDis : -moveDis);
                aimPos = new Point(monster.Position.X, y);
                goX    = false;
            }

            if (!BattleLocationManager.IsPlaceCanMove(aimPos.X, aimPos.Y))
            {
                if (goX)//绕过不可行走区域
                {
                    aimPos = MonsterPositionHelper.GetAvailPoint(monster.Position, "side", monster.IsLeft, 1);
                }
                else//往前走
                {
                    aimPos = MonsterPositionHelper.GetAvailPoint(monster.Position, "come", monster.IsLeft, 1);
                }
            }

            if (aimPos.X != monster.Position.X || aimPos.Y != monster.Position.Y)
            {
                BattleLocationManager.SetToPosition(monster, aimPos);
            }

            if (monster.ReadMov > 10) //会返回一些ats
            {
                monster.AddActionRate((float)(monster.ReadMov - 10) / monster.ReadMov);
            }
            monster.MovRound++;
        }