GetMapSelectedFloor() public method

public GetMapSelectedFloor ( ) : int
return int
示例#1
0
        protected int GetTileBy(int x, int y, PluginManager manager, Func<int,bool> checker)
        {
            Map map = manager.GetActiveMap();

            // g takes x/y, corrects for room wrapping, returns the tile to check
            Func<int,int,int> g = (a,b) =>
            {
                int roomX = manager.GetMapSelectedX();
                int roomY = manager.GetMapSelectedY();
                int floor = manager.GetMapSelectedFloor();

                if (a < 0) {
                    if (roomX == 0)
                        return -1;
                    roomX--;
                    a += map.RoomWidth;
                }
                else if (a >= map.RoomWidth) {
                    if (roomX == map.MapWidth-1)
                        return -1;
                    roomX++;
                    a -= map.RoomWidth;
                }
                if (b < 0) {
                    if (roomY == 0)
                        return -1;
                    roomY--;
                    b += map.RoomHeight;
                }
                else if (b >= map.RoomHeight) {
                    if (roomY == map.MapHeight-1)
                        return -1;
                    roomY++;
                    b -= map.RoomHeight;
                }
                return map.GetRoom(roomX,roomY,floor).GetTile(a,b);
            };

            Func<int,bool> fx = (a) => checker(g(a,y));
            Func<int,bool> fy = (b) => checker(g(x,b));

            int xi;
            if (fx(x-1) && fx(x+1))
                xi = 1;
            else if (fx(x-1))
                xi = 2;
            else if (fx(x+1))
                xi = 0;
            else
                xi = -1;

            int yi;
            if (fy(y-1) && fy(y+1))
                yi = 1;
            else if (fy(y-1))
                yi = 2;
            else if (fy(y+1))
                yi = 0;
            else
                yi = -1;

            if (xi == -1 && yi == -1)
                return baseTiles[1,1];
            if (xi == -1) {
                return vTiles[yi == 2 ? 1 : 0];
            }
            else if (yi == -1) {
                return hTiles[xi == 2 ? 1 : 0];
            }
            return baseTiles[yi,xi];
        }