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