コード例 #1
0
ファイル: SampleScene.cs プロジェクト: dolow/taxi-manhattan
    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;
        }
    }
コード例 #2
0
ファイル: SampleScene.cs プロジェクト: dolow/taxi-manhattan
    private int GetDistance(int origin, int dest)
    {
        int[]      currentFloorTerrain = this.map.terrains[this.CurrentFloor()];
        List <int> route = Astar.Exec(origin, dest, currentFloorTerrain, this.map.width);

        return(route.Count);
    }
コード例 #3
0
ファイル: Astar.cs プロジェクト: dolow/taxi-manhattan
 public static List <int> Exec(int start, int goal, int[] map, int width)
 {
     return(Astar.Exec(start, goal, map, width, (int)Math.Ceiling((double)map.Length / (double)width)));
 }