Ejemplo n.º 1
0
        public void collideTouching(Tile tile)
        {
            Tile.type tileType = tile.tileType;

            if (tileType == Tile.type.CrackedBrick)
            {
                ((FallingBlock)tile).startFall();
            }
        }
Ejemplo n.º 2
0
        public void checkOclusion()
        {
            Camera  camera = Runner.camera;
            Vector2 diff   = dimen / 2 * camera.scaleAt(zPos);
            Vector2 tl     = camera.toScreen(pos, zPos) - diff;
            Vector2 br     = tl + diff * 2;

            frontPercentOcluded = 0;
            midPercentOcluded   = 0;

            if (getLayer() == 2)
            {
                return;
            }

            Point from = ChunkMap.blockIndices(camera.toWorld(tl, 0));
            Point to   = ChunkMap.blockIndices(camera.toWorld(br, 0));

            int blockCount = (to.X - from.X + 1) * (to.Y - from.Y + 1);

            for (int i = from.X; i <= to.X; i++)
            {
                for (int j = from.Y; j <= to.Y; j++)
                {
                    Tile.type tileType = Runner.map.getTile(new Point(i, j), 2).tileType;

                    if (!Tile.nonFullBlock.Contains(tileType) && !Tile.transparent.Contains(tileType))
                    {
                        frontPercentOcluded += 1F / blockCount;
                    }
                }
            }

            if (getLayer() == 1)
            {
                return;
            }
            from       = ChunkMap.blockIndices(camera.toWorld(tl, -1));
            to         = ChunkMap.blockIndices(camera.toWorld(br, -1));
            blockCount = (to.X - from.X + 1) * (to.Y - from.Y + 1);

            for (int i = from.X; i <= to.X; i++)
            {
                for (int j = from.Y; j <= to.Y; j++)
                {
                    Tile.type tileType = Runner.map.getTile(new Point(i, j), 1).tileType;

                    if (!Tile.nonFullBlock.Contains(tileType) && !Tile.transparent.Contains(tileType))
                    {
                        midPercentOcluded += 1F / blockCount;
                    }
                }
            }
        }
Ejemplo n.º 3
0
    //Spawns a tile and destroys the predecessor
    private Tile spawnTile(int x, int y, Transform prefab, Tile.type type)
    {
        Vector3   tilePos    = CoordToVector(x, y);
        Transform tilePrefab = Instantiate(prefab, tilePos, Quaternion.Euler(0, 0, 0)) as Transform;

        tilePrefab.parent = mapHolder;
        tilePrefab.transform.localScale *= scale;
        Tile newTile = new Tile(this, tilePrefab, x, y);

        newTile.tileType = type;
        DestroyImmediate(tileArr[x, y].transform.gameObject);
        tileArr[x, y] = newTile;
        return(newTile);
    }
Ejemplo n.º 4
0
        private Tile genTile(int x, int y, int layer)
        {
            const int airID = (int)Tile.type.Air;
            int       ID    = airID;

            int[,] layerData = mapData[layer];
            if (x >= 0 && x < layerData.GetLength(0) && y >= 0 && y < layerData.GetLength(1))
            {
                ID = layerData[x, y];
            }

            //ID = (int) ((y > 5) ? Tile.type.StoneBrick : Tile.type.Air);

            Tile.type tileType = (Tile.type)ID;

            if (tileType == Tile.type.CrackedBrick)
            {
                return(new FallingBlock(tileType, new Vector2(x, y), layer));
            }

            if (tileType == Tile.type.Button)
            {
                return(new ButtonTile(tileType, new Vector2(x, y), layer));
            }

            if (tileType == Tile.type.GravityButton)
            {
                return(new GravitySwitcher(tileType, new Vector2(x, y), layer));
            }

            if (tileType == Tile.type.Door)
            {
                return(new Door(tileType, new Vector2(x, y), layer));
            }


            return(new Tile(tileType, new Vector2(x, y), layer));
        }
Ejemplo n.º 5
0
    void CheckAttackPos(Vector2 checkVector, Tile.type tileType, Tile tile)
    {
        switch (tileType)
        {
        case Tile.type.paper:
            if (currentType == activeType.paper)
            {
                KillPlayer();
            }
            else if (currentType == activeType.rock)
            {
                KillPlayer();
            }
            else if (currentType == activeType.scissors)
            {
                tile.ClearTile();
                transform.position = checkVector;
                currentTile        = tile.gameObject;
                NextType();
                //CheckNewPos();
            }
            break;

        case Tile.type.rock:
            if (currentType == activeType.paper)
            {
                tile.ClearTile();
                transform.position = checkVector;
                currentTile        = tile.gameObject;
                NextType();
                //CheckNewPos();
            }
            else if (currentType == activeType.rock)
            {
                KillPlayer();
            }
            else if (currentType == activeType.scissors)
            {
                KillPlayer();
            }
            break;

        case Tile.type.scissors:
            if (currentType == activeType.paper)
            {
                KillPlayer();
            }
            else if (currentType == activeType.rock)
            {
                tile.ClearTile();
                transform.position = checkVector;
                currentTile        = tile.gameObject;
                NextType();
                //CheckNewPos();
            }
            else if (currentType == activeType.scissors)
            {
                KillPlayer();
            }
            break;
        }
    }