public void collideTouching(Tile tile) { Tile.type tileType = tile.tileType; if (tileType == Tile.type.CrackedBrick) { ((FallingBlock)tile).startFall(); } }
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; } } } }
//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); }
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)); }
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; } }