Пример #1
0
 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);
 }
Пример #2
0
 void InstantiateArray(SingleTile[] savedTiles, int size)
 {
     for (int i = 0; i < size; i++)
     {
         savedTiles[i] = new SingleTile();
     }
 }
Пример #3
0
    /**
     * 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++;
            }
        }
    }
Пример #4
0
 public void RemoveFromTile()
 {
     if (currentTile != null)
     {
         currentTile.RemoveObject();
         currentTile = null;
     }
 }
Пример #5
0
    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);
        }
    }
Пример #6
0
 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;
     }
 }
Пример #7
0
 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);
 }
Пример #8
0
    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);
    }
Пример #9
0
 public void AddTile(int x, int z, TileType tileType)
 {
     tiles[tileCountX * z + x] = new SingleTile(x, z, tileType);
 }