//another override. this one is overriding the method used to display an icon in the assets folder //i want the tile's texture to be visible from the assets folder for ease of use. //this code replaces the normal default icon with the tile's sprite texture. //the normal method in the "Editor" class just returns a boring generic icon. public override Texture2D RenderStaticPreview(string assetPath, Object[] subAssets, int width, int height) { OreTile tile = target as OreTile; if (tile == null || tile.sprite == null) { return(null); //use the default icon if no custom one is available } Texture2D cache = new Texture2D(width, height); //create a new texture variable EditorUtility.CopySerialized(AssetPreview.GetAssetPreview(tile.sprite.texture), cache); //write the tile's texture into it return(cache); //and display! }
public override void OnPlaced(Tile t, int pMoneyCost, int pIronCost) { base.OnPlaced(t, pMoneyCost, pIronCost); if (Tile.tileMap[x, y] is OreTile) { Debug.Log("tower placed on ore at" + Tile.TileToVector3(Tile.tileMap[x, y])); OreTile ore = Tile.tileMap[x, y] as OreTile; // super janky way of doing this, will revisit later resource = ore.resource; } else { Debug.Log("tower NOT placed on ore" + Tile.TileToVector3(Tile.tileMap[x, y])); } }
public void SetFormation() { /* formation offset, indicating how far the neighbor ore tile is from its lead tile. * Depending on their density they will have a minor offset(more density) or major offset (less density) */ int minorOffset = Random.Range(1, 4); int majorOffset = Random.Range(4, 6); switch (density) { case 1: // This patch only has one rock or mineral neighborOreTiles = null; break; case 2: // This patch contains two, so neighbor ore array = 1 neighborOreTiles = new OreTile[1]; // This is the position the neighbor ore can be placed on neighborOreTiles[0] = new OreTile(leadPositionX + majorOffset, leadPositionY - majorOffset); break; case 3: neighborOreTiles = new OreTile[2]; neighborOreTiles[0] = new OreTile(leadPositionX + minorOffset, leadPositionY - majorOffset); neighborOreTiles[1] = new OreTile(leadPositionX - minorOffset, leadPositionY - majorOffset); break; case 4: neighborOreTiles = new OreTile[3]; neighborOreTiles[0] = new OreTile(leadPositionX, leadPositionY + minorOffset); neighborOreTiles[1] = new OreTile(leadPositionX, leadPositionY - minorOffset); neighborOreTiles[2] = new OreTile(leadPositionX - minorOffset, leadPositionY); break; case 5: neighborOreTiles = new OreTile[4]; neighborOreTiles[0] = new OreTile(leadPositionX - minorOffset, leadPositionY); neighborOreTiles[1] = new OreTile(leadPositionX + minorOffset, leadPositionY); neighborOreTiles[2] = new OreTile(leadPositionX + minorOffset, leadPositionY + minorOffset); neighborOreTiles[3] = new OreTile(leadPositionX, leadPositionY + minorOffset); break; default: neighborOreTiles = new OreTile[1]; neighborOreTiles[0] = new OreTile(leadPositionX + minorOffset, leadPositionY - minorOffset); break; } }
// Update is called once per frame void Update() { Tile t = Tile.tileMap[x, y]; if (t is OreTile) { OreTile o = t as OreTile; tileObject = o.tileObject; towerObject = o.towerObject; isWalkable = o.isWalkable; resource = o.resource; } else { tileObject = t.tileObject; towerObject = t.towerObject; isWalkable = t.isWalkable; } }
public void SetFormation() { switch (density) { case 1: // This patch only has one rock or mineral break; case 2: // This patch contains two, so neighbor ore array = 1 neighborOreTiles = new OreTile[1]; // This is the position the neighbor ore can be placed on neighborOreTiles[0] = new OreTile(leadPositionX + 1, leadPositionY - 1); break; case 3: neighborOreTiles = new OreTile[2]; neighborOreTiles[0] = new OreTile(leadPositionX + 2, leadPositionY - 1); neighborOreTiles[1] = new OreTile(leadPositionX, leadPositionY - 1); break; case 4: neighborOreTiles = new OreTile[3]; neighborOreTiles[0] = new OreTile(leadPositionX, leadPositionY + 1); neighborOreTiles[1] = new OreTile(leadPositionX, leadPositionY - 1); neighborOreTiles[2] = new OreTile(leadPositionX -1 , leadPositionY); break; case 5: neighborOreTiles = new OreTile[4]; neighborOreTiles[0] = new OreTile(leadPositionX -1, leadPositionY); neighborOreTiles[1] = new OreTile(leadPositionX + 1, leadPositionY); neighborOreTiles[2] = new OreTile(leadPositionX + 1 , leadPositionY + 1); neighborOreTiles[3] = new OreTile(leadPositionX , leadPositionY + 1); break; default: neighborOreTiles = new OreTile[1]; neighborOreTiles[0] = new OreTile(leadPositionX + 1, leadPositionY - 1); break; } }
private void FixedUpdate() { digDir = new Vector2(x, y).normalized; //Debug.Log("new: " + digDir + " old: " +oldDir); changed = false; if (digDir != oldDir) { changed = true; } if (!(digProgress > 0) && !rocket) { sound.Stop(0); body.position += new Vector2(x, 0); if (x < 0) { animator.Play("Walk_Left"); } if (x > 0) { animator.Play("Walk_Right"); } if (x == 0) { animator.Play("Idle"); } } if (rocket && !(digProgress > 0)) { sound.Stop(0); body.position += new Vector2(x, 0); body.AddForce(new Vector2(0, 20), ForceMode2D.Force); animator.Play("Fly_Up"); jetpack.emissionRate = 100; } else { jetpack.emissionRate = 0; } if (digDir.magnitude > 0 && !rocket && !changed) { try { if (digDir.y > 0 || Mathf.Abs(digDir.x) > 0) { digDir.y = 0; } RaycastHit2D hit = Physics2D.CircleCast(this.transform.position, 0.3f, digDir, 0.35f); if (hit.collider.CompareTag("Blocks")) { sound.Play(0); if (x > 0) { animator.Play("Drill_Right"); } if (x < 0) { animator.Play("Drill_Left"); } if (y < 0) { animator.Play("Drill_Down"); } Vector3Int gridPos = grid.WorldToCell(hit.point + (digDir * 0.1f)); Vector2 particlePos = new Vector2(gridPos.x + 0.5f, gridPos.y + 0.5f); digParticles.transform.position = particlePos; shaker.ShakeCameraContinuous(0.2f, 0.02f); StoneTile stone = (StoneTile)stoneMap.GetTile(gridPos); OreTile ore = (OreTile)oreMap.GetTile(gridPos); bool inBounds = !(gridPos.x >= 7 || gridPos.x < -7); if (inBounds) { if (stone.hardness <= (GlobalVars.level + 1)) { digProgress += Time.deltaTime; try { digParticleRenderer.material = particleMats[stone.hardness - 1]; } catch { } } else { digParticleRenderer.material = sparkMat; } digParticles.emissionRate = 25; if (digProgress >= 0.75f) { stoneMap.SetTile(gridPos, null); oreMap.SetTile(gridPos, null); digProgress = 0; digParticles.emissionRate = 0; if (ore.dropItem != null) { Instantiate(ore.dropItem, particlePos, Quaternion.identity); } } } } } catch//(System.NullReferenceException n) { //Debug.Log("drill hit air"); } } else { digProgress = 0; digParticles.emissionRate = 0; } oldDir = digDir; }