Esempio n. 1
0
        //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!
        }
Esempio n. 2
0
 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]));
     }
 }
Esempio n. 3
0
    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;
            }
        }
Esempio n. 5
0
        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;

            }
        }
Esempio n. 6
0
    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;
    }