private void TryWalkerWalk(int x, int y, BaseEventData data) { if (this.gameFinished) { return; } // TODO: ignore collision between camera and walker if (this.mainWalker.IsWalking()) { return; } int destAddress = y * this.map.width + x; int[] currentFloorTerrain = this.map.terrains[this.CurrentFloor()]; List <int> route = Astar.Exec(this.mainWalker.data.address, destAddress, currentFloorTerrain, this.map.width); List <DirectionUtil.Direction> directions = DirectionUtil.AddressesToDirections(route, this.map.width, this.map.height); this.mainWalker.AppendWalkDirections(directions); switch (Rand.Next(10)) { case 0: this.mainWalker.PlaySe(Audio.GetSE(Audio.SE.Walk1)); break; case 1: this.mainWalker.PlaySe(Audio.GetSE(Audio.SE.Walk2)); break; default: break; } }