public bool Move(int x, int z) { if (movable && !falling) { int newXPos = (int)transform.position.x + x; int newZPos = (int)transform.position.z + z; SingleTile tile = TileManager.main.GetTile(newXPos, newZPos); if (tile != null) { if (tile.TileType == TileType.Wall) { Debug.Log("<b>blockmove:</b> [" + newXPos + ", " + newZPos + "] <color=red>WALL</color>"); return(false); } if (tile.TileObject != null) { Debug.Log("<b>blockmove:</b> [" + newXPos + ", " + newZPos + "] <color=red>ANOTHER OBJECT</color>"); return(false); } if (tile.TileType == TileType.Hole) { falling = true; transform.rotation = originalRotation; } tile.AddObject(this); currentTile.RemoveObject(); currentTile = tile; transform.position = new Vector3(transform.position.x + x, transform.position.y, transform.position.z + z); xPos = (int)transform.position.x; zPos = (int)transform.position.z; return(true); } } return(false); }
void InstantiateArray(SingleTile[] savedTiles, int size) { for (int i = 0; i < size; i++) { savedTiles[i] = new SingleTile(); } }
/** * Draws the gridTile for the game */ void drawTile(Transform T) { float scaleW = defaultTile.transform.localScale.x; float scaleH = defaultTile.transform.localScale.y; SpriteRenderer s = defaultTile.GetComponent <SpriteRenderer>(); float width = s.sprite.bounds.size.x * scaleW; float height = s.sprite.bounds.size.y * scaleH; float offsetX = Screen.width / 10; float offsetY = Screen.height / 5; Vector3 v = Camera.main.ScreenToWorldPoint(new Vector3(offsetX, offsetY, 0)); //Debug.Log("Width: " + offsetX + "height:" + offsetY); //Debug.Log("X: " + v.x + " Y " + v.y); int i = 0; for (int r = 0; r < basePlate.GetLength(0); r++) { for (int c = 0; c < basePlate.GetLength(1); c++) { GameObject g = Instantiate(defaultTile, new Vector2(c * width + v.x, r * -height - v.y), Quaternion.identity, T); SingleTile st = new SingleTile(Random.Range(0, 10), g, i); basePlate[r, c] = st; i++; } } }
public void RemoveFromTile() { if (currentTile != null) { currentTile.RemoveObject(); currentTile = null; } }
void Check() { SingleTile singleTile = TileManager.main.GetTile((int)transform.position.x, (int)transform.position.z); if (singleTile.TileObject != null && singleTile.TileObject.ObjectType == ObjectType.MovableBlock) { Debug.Log("Projectile killed by check!"); SoundManager.main.PlaySound(SoundClip.ArrowHit); Destroy(gameObject); } }
void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Hole") { gameObject.layer = LayerMask.GetMask("Default"); if (currentTile != null) { currentTile.RemoveObject(); } falling = false; currentTile = null; transform.rotation = originalRotation; } else if (collision.gameObject.tag == "MovableBlock") { falling = false; } }
public void Init(int xPos, float yPos, int zPos, ObjectType objectType, PropertyDict properties) { originalRotation = transform.rotation; this.objectType = objectType; this.xPos = xPos; this.zPos = zPos; if (this.objectType == ObjectType.ProjectileShooter) { ProjectileShooter projectileShooter = GetComponent <ProjectileShooter>(); projectileShooter.Init((ProjectileHeading)GameManager.IntParseFast(properties["ObjectRotation"])); } else if (properties.ContainsKey("ObjectRotation")) { transform.eulerAngles = new Vector3(transform.eulerAngles.x, GameManager.Rotations[GameManager.IntParseFast(properties["ObjectRotation"])], transform.eulerAngles.z); } transform.position = new Vector3(xPos, yPos, zPos); currentTile = TileManager.main.GetTile(xPos, zPos); currentTile.AddObject(this); }
bool Move(int x, int z) { if (Time.timeScale < 1f) { return(false); } if (!falling) { int newXPos = (int)transform.position.x + x; int newZPos = (int)transform.position.z + z; SingleTile tile = TileManager.main.GetTile(newXPos, newZPos); if (tile != null) { if (tile.TileType == TileType.Wall) { //Debug.Log("<b>move:</b> [" + newXPos + ", " + newZPos + "] <color=red>WALL</color>"); return(false); } GenericObject tileObject = tile.TileObject; if (tileObject != null) { if (tileObject.Movable) { if (!tileObject.Move(x, z)) { return(false); } if (tileObject.ObjectType == ObjectType.MovableBlock) { SoundManager.main.PlaySound(SoundClip.MoveBlock); } else { SoundManager.main.PlaySound(SoundClip.MoveTreasure); } } else if ( tileObject.ObjectType == ObjectType.MovableTreasureRed || tileObject.ObjectType == ObjectType.MovableTreasureBlue || tileObject.ObjectType == ObjectType.MovableTreasureGreen ) { GameManager.main.GainItem(tileObject.GetComponent <MovableTreasure>().GetItem()); SoundManager.main.PlaySound(SoundClip.GainItem); tileObject.RemoveFromTile(); Destroy(tileObject.gameObject); } else if ( tileObject.ObjectType == ObjectType.LockedDoorRed || tileObject.ObjectType == ObjectType.LockedDoorGreen || tileObject.ObjectType == ObjectType.LockedDoorBlue) { if (!tileObject.GetComponent <LockedDoor>().UnlockDoor(GameManager.main.Items)) { return(false); } SoundManager.main.PlaySound(SoundClip.UnlockDoor); tileObject.RemoveFromTile(); } else if (tileObject.ObjectType == ObjectType.ProjectileShooter) { return(false); } else if (tileObject.ObjectType == ObjectType.LevelEnd) { SoundManager.main.PlaySound(SoundClip.LevelEnd); GameManager.main.FinishLevel(); } } } if (tile.TileType == TileType.Hole) { falling = true; } //Debug.Log("<b>move:</b> [" + newXPos + ", " + newZPos + "] <color=green>EMPTY</color>"); transform.position = new Vector3(transform.position.x + x, transform.position.y, transform.position.z + z); xPos = (int)transform.position.x; zPos = (int)transform.position.z; return(true); } return(false); }
public void AddTile(int x, int z, TileType tileType) { tiles[tileCountX * z + x] = new SingleTile(x, z, tileType); }