Beispiel #1
0
    //    TODO: Make more variations based on the sprites we have
    void Build(int width, int height, int ID)
    {
        for (int x = 0; x < width; x++)
        {
            for (int y = 0; y < height; y++)
            {                                                        //Writes the identity of wall-tiles to the main grid
                tile.IdTile(entity.currentPosition.X + x, entity.currentPosition.Y + y, 4);
            }
        }
        switch (ID)
        {
        case 0:
            doorPosition = new Tile.Position(entity.currentPosition.X + 2, entity.currentPosition.Y + 0);
            break;

        case 1:
            doorPosition = new Tile.Position(entity.currentPosition.X + 3, entity.currentPosition.Y + 4);
            break;

        case 2:
            doorPosition = new Tile.Position(entity.currentPosition.X + 5, entity.currentPosition.Y + 4);
            break;

        default:
            break;
        }
        tile.IdTile(doorPosition.X, doorPosition.Y, 5);
    }
Beispiel #2
0
    void Update()
    {
        //Debug.Log(isTalking);

        if (coolDownTimer > 0)
        {
            coolDownTimer -= Time.deltaTime;
        }
        else if (coolDownTimer <= 0)
        {
            coolDownTimer = 0;
        }

        if (character.Direction == 0 || character.Direction == 2)
        {
            interactPosition = new Tile.Position(entity.currentPosition.X, entity.currentPosition.Y - 1 + character.Direction);    //If the direction is down, the target will be below. If the direction is up, the target will be above
        }
        else
        {
            interactPosition = new Tile.Position(entity.currentPosition.X - 2 + character.Direction, entity.currentPosition.Y);    //If the direction is left, the target will be left. If the direction is right, the target will be right.
        }
        interactTarget = grid.OfType(interactPosition.X, interactPosition.Y);

        HandleInput();
        tile.IdTile(entity.currentPosition.X, entity.currentPosition.Y, 1);
    }
Beispiel #3
0
 private void ChangeTower()
 {
     Tile.Position pos = target.Pos;
     target.DestoryTower();
     TileManager.Instance.CanBuild(pos);
     ShopManager.Instance.OnUpdateGold(-data.Cost);
     TowerManager.Instance.BuildTower(pos, data.TowerType);
     ShopManager.Instance.InitShop(E_TowerType.BasicTower);
 }
Beispiel #4
0
    public Vector3 GetTIleRealPosision(Tile.Position pos)
    {
        if (tileDic.ContainsKey(pos))
        {
            return(tileDic[pos].transform.position);
        }

        return(Vector3.one * 999);
    }
Beispiel #5
0
    public bool CanUpgrade(E_TileSize before, E_TileSize after, Tile.Position pos)
    {
        if (before == after)
        {
            return(true);
        }

        if (before == E_TileSize.Tile1 && after == E_TileSize.Tile4)
        {
            if (!tileDic[new Tile.Position(pos.x - 1, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x + 1, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y - 1)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y + 1)].Built)
            {
                return(true);
            }
        }
        else if (before == E_TileSize.Tile1 && after == E_TileSize.Tile9)
        {
            if (!tileDic[new Tile.Position(pos.x - 1, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x + 1, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y - 1)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y + 1)].Built &&
                !tileDic[new Tile.Position(pos.x - 2, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x + 2, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y - 2)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y + 2)].Built &&
                !tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built &&
                !tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built &&
                !tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built &&
                !tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built)
            {
                return(true);
            }
        }
        else if (before == E_TileSize.Tile4 && after == E_TileSize.Tile9)
        {
            if (!tileDic[new Tile.Position(pos.x - 2, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x + 2, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y - 2)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y + 2)].Built &&
                !tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built &&
                !tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built &&
                !tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built &&
                !tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built)
            {
                return(true);
            }
        }

        return(false);
    }
Beispiel #6
0
    private void TIleHover(Tile.Position pos, bool isHover, bool built)
    {
        if (tileDic.ContainsKey(pos))
        {
            tileDic[pos].GoHoverActive(isHover);
            tileDic[pos].InitHoverColor(built);

            if (isHover)
            {
                hoveredTIlePosList.Add(pos);
            }
            else
            {
                hoveredTIlePosList.Remove(pos);
            }
        }
    }
Beispiel #7
0
    public void BuildTower(Tile.Position pos, E_TowerType type)
    {
        Tower tower = ObjectPoolManager.Instance.GetTower(type);

        if (tower.Type == E_TowerType.BasicTower)
        {
            return;
        }

        if (tower.Type == E_TowerType.MainTower)
        {
            MainTower = tower;
        }

        tower.transform.parent        = transform;
        tower.transform.localPosition = TileManager.Instance.GetTIleRealPosision(pos);
        tower.SetData(TowerDataManager.Instance.GetTowerBasicData(type), pos);
        tower.OnDestroyTower  = TileManager.Instance.OnDestroyTower;
        tower.OnDestroyTower += (p) => { ObjectPoolManager.Instance.SetTower(tower); };
        tower.SetActive(true);
    }
Beispiel #8
0
    public void SetData(TowerBasicData data, Tile.Position pos)
    {
        Data  = data;
        Hp    = Data.Hp;
        Atk   = Data.Atk;
        Speed = Data.Speed;
        Range = Data.Range;
        Area  = Data.Area;
        Size  = Data.Size;

        colliderAttack.SetData(Data);
        Pos = pos;

        if (skltAnimation != null)
        {
            skltAnimation.GetComponent <Renderer>().sortingOrder = GetSortingtOrder(Pos);
        }
        else if (spRenderer != null)
        {
            spRenderer.sortingOrder = GetSortingtOrder(Pos);
        }
    }
Beispiel #9
0
    public void OnDestroyTower(Tile.Position pos)
    {
        switch (tileSize)
        {
        case E_TileSize.Tile1:
        {
            tileDic[pos].Built = false;
        }
        break;

        case E_TileSize.Tile4:
        {
            tileDic[new Tile.Position(pos.x, pos.y - 1)].Built = false;
            tileDic[new Tile.Position(pos.x - 1, pos.y)].Built = false;
            tileDic[new Tile.Position(pos.x, pos.y)].Built     = false;
            tileDic[new Tile.Position(pos.x + 1, pos.y)].Built = false;
            tileDic[new Tile.Position(pos.x, pos.y + 1)].Built = false;
        }
        break;

        case E_TileSize.Tile9:
        {
            tileDic[new Tile.Position(pos.x, pos.y - 2)].Built     = false;
            tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built = false;
            tileDic[new Tile.Position(pos.x, pos.y - 1)].Built     = false;
            tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built = false;
            tileDic[new Tile.Position(pos.x - 2, pos.y)].Built     = false;
            tileDic[new Tile.Position(pos.x - 1, pos.y)].Built     = false;
            tileDic[new Tile.Position(pos.x, pos.y)].Built         = false;
            tileDic[new Tile.Position(pos.x + 1, pos.y)].Built     = false;
            tileDic[new Tile.Position(pos.x + 2, pos.y)].Built     = false;
            tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built = false;
            tileDic[new Tile.Position(pos.x, pos.y + 1)].Built     = false;
            tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built = false;
            tileDic[new Tile.Position(pos.x, pos.y + 2)].Built     = false;
        }
        break;
        }
    }
Beispiel #10
0
 private int GetSortingtOrder(Tile.Position pos)
 {
     return(pos.x + pos.y * 100);
 }
Beispiel #11
0
 void Start()
 {
     Tile.Position pos = new Tile.Position(12, 18);
     TileManager.Instance.CanBuild(pos);
     BuildTower(pos, E_TowerType.MainTower);
 }
Beispiel #12
0
    private void onHoverTile(Tile.Position pos, bool isHover)
    {
        switch (tileSize)
        {
        case E_TileSize.Tile1:
        {
            bool built = tileDic[pos].Built;
            TIleHover(new Tile.Position(pos.x, pos.y), isHover, built);
        }
        break;

        case E_TileSize.Tile4:
        {
            //System.Text.StringBuilder sb = new System.Text.StringBuilder();
            //sb.AppendLine("hover");
            //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[__,__]", pos.x, pos.y - 1));
            //sb.AppendLine(string.Format("[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]", pos.x - 1, pos.y, pos.x, pos.y, pos.x + 1, pos.y));
            //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[__,__]", pos.x, pos.y + 1));
            //Debug.Log(sb.ToString());

            bool built = tileDic[new Tile.Position(pos.x, pos.y - 1)].Built ||
                         tileDic[new Tile.Position(pos.x - 1, pos.y)].Built ||
                         tileDic[new Tile.Position(pos.x, pos.y)].Built ||
                         tileDic[new Tile.Position(pos.x + 1, pos.y)].Built ||
                         tileDic[new Tile.Position(pos.x, pos.y + 1)].Built;

            TIleHover(new Tile.Position(pos.x, pos.y), isHover, built);
        }
        break;

        case E_TileSize.Tile9:
        {
            //System.Text.StringBuilder sb = new System.Text.StringBuilder();
            //sb.AppendLine("hover");
            //sb.AppendLine(string.Format("[__,__]/[__,__]/[{0:D2},{1:D2}]/[__,__]/[__,__]", pos.x, pos.y - 2));
            //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[__,__]", pos.x - 1, pos.y - 1, pos.x, pos.y - 1, pos.x + 1, pos.y - 1));
            //sb.AppendLine(string.Format("[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[{6:D2},{7:D2}]/[{8:D2},{9:D2}]", pos.x - 2, pos.y, pos.x - 1, pos.y, pos.x, pos.y, pos.x + 1, pos.y, pos.x + 2, pos.y));
            //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[__,__]", pos.x - 1, pos.y + 1, pos.x, pos.y + 1, pos.x + 1, pos.y + 1));
            //sb.AppendLine(string.Format("[__,__]/[__,__]/[{0:D2},{1:D2}]/[__,__]/[__,__]", pos.x, pos.y + 2));
            //Debug.Log(sb.ToString());

            bool built = tileDic[new Tile.Position(pos.x, pos.y - 2)].Built ||
                         tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built ||
                         tileDic[new Tile.Position(pos.x, pos.y - 1)].Built ||
                         tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built ||
                         tileDic[new Tile.Position(pos.x - 2, pos.y)].Built ||
                         tileDic[new Tile.Position(pos.x - 1, pos.y)].Built ||
                         tileDic[new Tile.Position(pos.x, pos.y)].Built ||
                         tileDic[new Tile.Position(pos.x + 1, pos.y)].Built ||
                         tileDic[new Tile.Position(pos.x + 2, pos.y)].Built ||
                         tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built ||
                         tileDic[new Tile.Position(pos.x, pos.y + 1)].Built ||
                         tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built ||
                         tileDic[new Tile.Position(pos.x, pos.y + 2)].Built;

            TIleHover(new Tile.Position(pos.x, pos.y - 2), isHover, built);
            TIleHover(new Tile.Position(pos.x - 1, pos.y - 1), isHover, built);
            TIleHover(new Tile.Position(pos.x + 1, pos.y - 1), isHover, built);
            TIleHover(new Tile.Position(pos.x - 2, pos.y), isHover, built);
            TIleHover(new Tile.Position(pos.x, pos.y), isHover, built);
            TIleHover(new Tile.Position(pos.x + 2, pos.y), isHover, built);
            TIleHover(new Tile.Position(pos.x - 1, pos.y + 1), isHover, built);
            TIleHover(new Tile.Position(pos.x + 1, pos.y + 1), isHover, built);
            TIleHover(new Tile.Position(pos.x, pos.y + 2), isHover, built);
        }
        break;
        }
    }
Beispiel #13
0
    public bool CanBuild(Tile.Position pos)
    {
        switch (tileSize)
        {
        case E_TileSize.Tile1:
        {
            if (!tileDic[pos].Built)
            {
                tileDic[pos].Built = true;
                return(true);
            }
        }
        break;

        case E_TileSize.Tile4:
        {
            //System.Text.StringBuilder sb = new System.Text.StringBuilder();
            //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[__,__]", pos.x, pos.y - 1));
            //sb.AppendLine(string.Format("[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]", pos.x - 1, pos.y, pos.x, pos.y, pos.x + 1, pos.y));
            //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[__,__]", pos.x, pos.y + 1));
            //Debug.Log(sb.ToString());

            if (!tileDic[new Tile.Position(pos.x, pos.y - 1)].Built &&
                !tileDic[new Tile.Position(pos.x - 1, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x + 1, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y + 1)].Built)
            {
                tileDic[new Tile.Position(pos.x, pos.y - 1)].Built = true;
                tileDic[new Tile.Position(pos.x - 1, pos.y)].Built = true;
                tileDic[new Tile.Position(pos.x, pos.y)].Built     = true;
                tileDic[new Tile.Position(pos.x + 1, pos.y)].Built = true;
                tileDic[new Tile.Position(pos.x, pos.y + 1)].Built = true;
                return(true);
            }
        }
        break;

        case E_TileSize.Tile9:
        {
            //System.Text.StringBuilder sb = new System.Text.StringBuilder();
            //sb.AppendLine(string.Format("[__,__]/[__,__]/[{0:D2},{1:D2}]/[__,__]/[__,__]", pos.x, pos.y - 2));
            //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[__,__]", pos.x - 1, pos.y - 1, pos.x, pos.y - 1, pos.x + 1, pos.y - 1));
            //sb.AppendLine(string.Format("[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[{6:D2},{7:D2}]/[{8:D2},{9:D2}]", pos.x - 2, pos.y, pos.x - 1, pos.y, pos.x, pos.y, pos.x + 1, pos.y, pos.x + 2, pos.y));
            //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[__,__]", pos.x - 1, pos.y + 1, pos.x, pos.y + 1, pos.x + 1, pos.y + 1));
            //sb.AppendLine(string.Format("[__,__]/[__,__]/[{0:D2},{1:D2}]/[__,__]/[__,__]", pos.x, pos.y + 2));
            //Debug.Log(sb.ToString());

            if (!tileDic[new Tile.Position(pos.x, pos.y - 2)].Built &&
                !tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y - 1)].Built &&
                !tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built &&
                !tileDic[new Tile.Position(pos.x - 2, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x - 1, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x + 1, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x + 2, pos.y)].Built &&
                !tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y + 1)].Built &&
                !tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built &&
                !tileDic[new Tile.Position(pos.x, pos.y + 2)].Built)
            {
                tileDic[new Tile.Position(pos.x, pos.y - 2)].Built     = true;
                tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built = true;
                tileDic[new Tile.Position(pos.x, pos.y - 1)].Built     = true;
                tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built = true;
                tileDic[new Tile.Position(pos.x - 2, pos.y)].Built     = true;
                tileDic[new Tile.Position(pos.x - 1, pos.y)].Built     = true;
                tileDic[new Tile.Position(pos.x, pos.y)].Built         = true;
                tileDic[new Tile.Position(pos.x + 1, pos.y)].Built     = true;
                tileDic[new Tile.Position(pos.x + 2, pos.y)].Built     = true;
                tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built = true;
                tileDic[new Tile.Position(pos.x, pos.y + 1)].Built     = true;
                tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built = true;
                tileDic[new Tile.Position(pos.x, pos.y + 2)].Built     = true;
                return(true);
            }
        }
        break;
        }

        Debug.Log("CanBuild is false");
        return(false);
    }