public BoardMeta()
    {
        board = new TileMeta[Sizes.BOARD, Sizes.BOARD];

        // init empty tiles
        for (int row = Rows.WHITE_PAWN + 1; row < Rows.BLACK_PAWN; row++) {
            for(int column = 0; column < Sizes.BOARD; column++){
                board[row, column] = new TileMeta();
            }
        }

        // init all tiles with pieces
        for(int column = 0; column < Sizes.BOARD; column++){
            // init black pieces
            board[Rows.BLACK_HOME, column] = new TileMeta(new PieceMeta(PlayerId.Black, ORDER[column]));
            board[Rows.BLACK_PAWN, column] = new TileMeta(new PieceMeta(PlayerId.Black, PieceId.Pawn));

            // init white pieces
            board[Rows.WHITE_PAWN, column] = new TileMeta(new PieceMeta(PlayerId.White, PieceId.Pawn));
            board[Rows.WHITE_HOME, column] = new TileMeta(new PieceMeta(PlayerId.White, ORDER[ORDER.Length - (column + 1)]));
        }

        for (int row = 0; row <= Rows.BLACK_HOME; row = (row == Rows.WHITE_PAWN)? Rows.BLACK_PAWN: ++row) {
            for(int column = 0; column < Sizes.BOARD; column++){
                foreach(Direction direction in Enum.GetValues(typeof(Direction))){
                    fillBoard(row, column, direction);
                }
            }
        }
    }
Пример #2
0
    public IEnumerator AnimateGemFall2(GameObject lower, GameObject upper, float delay)
    {
        if (GameObject.Find("BoardManager") != null)
        {
            GameObject temp = Instantiate(upper, upper.transform.position, upper.transform.rotation, GameObject.Find("BoardManager").transform);
            temp.GetComponent <BoxCollider2D>().enabled = false;
            Color sprA = upper.GetComponent <SpriteRenderer>().color;
            sprA.a = 0;
            upper.GetComponent <SpriteRenderer>().color = sprA;
            lower.GetComponent <SpriteRenderer>().color = sprA;
            iTween.MoveTo(temp, lower.transform.position, delay);
            lower.GetComponent <SpriteRenderer>().sprite = upper.GetComponent <SpriteRenderer>().sprite;
            TileMeta metaA = new TileMeta();
            metaA.type = upper.GetComponent <Tile>().type.type;
            lower.GetComponent <Tile>().type             = metaA;
            upper.GetComponent <SpriteRenderer>().sprite = null;
            upper.GetComponent <Tile>().type.type        = TileMeta.GemType.None;
            yield return(new WaitForSeconds(delay));

            sprA.a = 1;
            upper.GetComponent <SpriteRenderer>().color = sprA;
            lower.GetComponent <SpriteRenderer>().color = sprA;
            Destroy(temp);
        }
        yield return(null);
    }
Пример #3
0
    //public IEnumerator AnimateGemFall(Vector3 dest, GameObject prev, GameObject curr, int x)
    //{
    //  if (GameObject.Find("BoardManager") != null)
    //  {
    //    GameObject temp = Instantiate(prev, prev.transform.position, prev.transform.rotation, GameObject.Find("BoardManager").transform);



    //    temp.GetComponent<BoxCollider2D>().enabled = false;
    //    iTween.MoveTo(temp, dest, .1f);

    //    Color sprA = curr.GetComponent<SpriteRenderer>().color;
    //    Color sprB = prev.GetComponent<SpriteRenderer>().color;
    //    sprA.a = 0;
    //    sprB.a = 0;
    //    curr.GetComponent<SpriteRenderer>().color = sprA;
    //    prev.GetComponent<SpriteRenderer>().color = sprB;

    //    curr.GetComponent<SpriteRenderer>().sprite = prev.GetComponent<SpriteRenderer>().sprite;
    //    prev.GetComponent<SpriteRenderer>().sprite = GetNewSprite(x, ySize - 1);
    //    //end

    //    TileMeta metaA = new TileMeta();
    //    int idxA = characters.IndexOf(curr.GetComponent<SpriteRenderer>().sprite);
    //    metaA.type = gemTypes[idxA > -1 ? idxA : 0];

    //    TileMeta metaB = new TileMeta();
    //    int idxB = characters.IndexOf(prev.GetComponent<SpriteRenderer>().sprite);
    //    metaB.type = gemTypes[idxB > -1 ? idxB : 0];

    //    curr.GetComponent<Tile>().type = metaB;
    //    prev.GetComponent<Tile>().type = metaB;

    //    yield return new WaitForSeconds(.1f);

    //    sprA.a = 1;
    //    sprB.a = 1;
    //    curr.GetComponent<SpriteRenderer>().color = sprA;
    //    prev.GetComponent<SpriteRenderer>().color = sprB;
    //    Destroy(temp);
    //  }

    //  yield return null;
    //}

    public IEnumerator AnimateGemFall2(GameObject lower, Sprite newGem, float delay)
    {
        if (GameObject.Find("BoardManager") != null)
        {
            Vector3 fallStart = lower.transform.position;
            fallStart.y += newGem.rect.height + 10;
            GameObject temp = Instantiate(lower, fallStart, lower.transform.rotation, GameObject.Find("BoardManager").transform);
            temp.GetComponent <SpriteRenderer>().sprite = newGem;
            temp.GetComponent <BoxCollider2D>().enabled = false;

            Color sprA = lower.GetComponent <SpriteRenderer>().color;
            sprA.a = 0;
            lower.GetComponent <SpriteRenderer>().color  = sprA;
            lower.GetComponent <SpriteRenderer>().sprite = newGem;

            TileMeta metaA = new TileMeta();
            int      idxA  = characters.IndexOf(newGem);
            metaA.type = gemTypes[idxA > -1 ? idxA : 0];
            lower.GetComponent <Tile>().type = metaA;

            iTween.MoveTo(temp, lower.transform.position, delay);
            yield return(new WaitForSeconds(delay));

            sprA.a = 1;
            lower.GetComponent <SpriteRenderer>().color = sprA;
            Destroy(temp);
        }
        yield return(null);
    }
    public BoardTest()
    {
        board = new TileMeta[Sizes.BOARD, Sizes.BOARD];

        for (int row = 0; row < Sizes.BOARD; row++) {
            for(int column = 0; column < Sizes.BOARD; column++){
                board[row, column] = new TileMeta();
            }
        }
    }
Пример #5
0
    //public bool isShifting(){
    //  return IsShifting;
    //}

    public IEnumerator AnimateGemSwap(GameObject prev, GameObject curr)
    {
        GameObject tempA = Instantiate(prev, prev.transform.position, prev.transform.rotation, GameObject.Find("BoardManager").transform);

        tempA.GetComponent <BoxCollider2D>().enabled = false;
        iTween.MoveTo(tempA, curr.transform.position, .1f);

        GameObject tempB = Instantiate(curr, curr.transform.position, curr.transform.rotation, GameObject.Find("BoardManager").transform);

        tempB.GetComponent <BoxCollider2D>().enabled = false;
        iTween.MoveTo(tempB, prev.transform.position, .1f);

        Color sprA = Color.white;

        sprA.a = 0;
        curr.GetComponent <SpriteRenderer>().color = sprA;
        prev.GetComponent <SpriteRenderer>().color = sprA;


        Sprite tempSprite = curr.GetComponent <SpriteRenderer>().sprite;

        curr.GetComponent <SpriteRenderer>().sprite = prev.GetComponent <SpriteRenderer>().sprite;
        prev.GetComponent <SpriteRenderer>().sprite = tempSprite;
        //end

        TileMeta metaA = new TileMeta();
        int      idxA  = characters.IndexOf(curr.GetComponent <SpriteRenderer>().sprite);

        metaA.type = gemTypes[idxA > -1 ? idxA : 0];

        TileMeta metaB = new TileMeta();
        int      idxB  = characters.IndexOf(prev.GetComponent <SpriteRenderer>().sprite);

        metaB.type = gemTypes[idxB > -1 ? idxB : 0];

        curr.GetComponent <Tile>().type = metaA;
        prev.GetComponent <Tile>().type = metaB;

        yield return(new WaitForSeconds(.1f));

        sprA.a = 1;
        curr.GetComponent <SpriteRenderer>().color = sprA;
        prev.GetComponent <SpriteRenderer>().color = sprA;

        Destroy(tempA);
        Destroy(tempB);

        yield return(null);
    }
Пример #6
0
    private void CreateBoard(float xOffset, float yOffset)
    {
        tiles = new GameObject[xSize, ySize];

        float startX = transform.position.x;
        float startY = transform.position.y;

        Sprite[] previousLeft  = new Sprite[ySize];
        Sprite   previousBelow = null;

        for (int x = 0; x < xSize; x++)
        {
            for (int y = 0; y < ySize; y++)
            {
                GameObject newTile = Instantiate(tile, new Vector3(startX + (xOffset * x), startY + (yOffset * y), 0), tile.transform.rotation);
                tiles[x, y] = newTile;

                newTile.transform.SetParent(transform);
                List <TileMeta.GemType> possibleGems       = new List <TileMeta.GemType>(gemTypes);
                List <Sprite>           possibleCharacters = new List <Sprite>(characters);

                possibleCharacters.Remove(previousLeft[y]);
                possibleCharacters.Remove(previousBelow);

                TileMeta meta      = new TileMeta();
                Sprite   newSprite = possibleCharacters[UnityEngine.Random.Range(0, possibleCharacters.Count)];
                meta.type = gemTypes[characters.IndexOf(newSprite)];
                newTile.GetComponent <Tile>().type             = meta;
                newTile.GetComponent <SpriteRenderer>().sprite = newSprite;
                previousLeft[y] = newSprite;
                previousBelow   = newSprite;
            }
        }
        float ratio  = (float)Screen.width / (float)Screen.height;
        float adjust = (ratio - 1.75f) / 2;

        Debug.Log("Screen.width / Screen.height: " + Screen.width.ToString() + "-" + Screen.height.ToString());
        Debug.Log("Ratio: " + ratio.ToString());
        Debug.Log("Adjust: " + adjust.ToString());

        //16:9 = perfect = 1.7
        //2340:1080 = too small = 2.15
        //16:10 = too big = 1.6

        transform.localScale = new Vector3(1f + adjust, 1f + adjust, 0f);
    }
Пример #7
0
    public List <Tile> FindReachableTiles(Unit unit, Tile center, int ap)
    {
        List <Tile> tiles = new List <Tile>();

        Dictionary <Tile, FibonacciHeapNode <TileMeta> > tileMap = new Dictionary <Tile, FibonacciHeapNode <TileMeta> >();
        FibonacciHeap <TileMeta> heap = new FibonacciHeap <TileMeta>();

        tileMap.Add(center, heap.Push(new TileMeta(center, 0)));

        while (!heap.IsEmpty())
        {
            TileMeta tileMeta = heap.Pop().Value;
            Tile     tile     = tileMeta.tile;

            tiles.Add(tile);

            int previousCost = tileMeta.value;

            foreach (Vector2Int gridPosition in GetAdjacentGridPositions(tile.x, tile.y))
            {
                tile = GetTile(gridPosition);

                if (IsAccessible(unit, tile))
                {
                    int cost = previousCost + unit.Statistics.CalculateEffectiveFatigue(tile.Cost, FatigueType.Movement);

                    if (tileMap.ContainsKey(tile))
                    {
                        FibonacciHeapNode <TileMeta> node = tileMap[tile];
                        if (cost < node.Value.value)
                        {
                            heap.Decrement(node, new TileMeta(tile, cost));
                        }
                    }
                    else if (cost <= ap)
                    {
                        tileMap.Add(tile, heap.Push(new TileMeta(tile, cost)));
                    }
                }
            }
        }

        return(tiles);
    }
Пример #8
0
    public void SwapSprite(SpriteRenderer render1, SpriteRenderer render2, bool sound, bool testing = false)
    {
        if (render1.sprite == render2.sprite)
        {
            return;
        }

        if (!testing)
        {
            SFXManager.instance.PlaySFX(Clip.Swap);
            StartCoroutine(BoardManager.instance.AnimateGemSwap(render1.gameObject, render2.gameObject));
        }
        else
        {
            TileMeta type1 = render1.gameObject.GetComponent <Tile>().type;
            TileMeta type2 = render2.gameObject.GetComponent <Tile>().type;

            //Sprite tempSprite = render2.sprite;
            //render2.sprite = render.sprite;
            render2.gameObject.GetComponent <Tile>().type = type1;
            //render1.sprite = tempSprite;
            render1.gameObject.GetComponent <Tile>().type = type2;
        }
    }
 public BoardMeta(TileMeta[,] board)
 {
     this.board = board;
 }
        public static void GetCityData(int addressID)
        {
            try
            {
                using (SqlConnection cn = new SqlConnection("context connection=true"))
                {
                    cn.Open();
                    string     selectQuery = @"SELECT a.City, s.Name As State, c.Name As Country
                                      FROM Person.Address a
                                      INNER JOIN Person.StateProvince s
                                      ON a.StateProvinceID = s.StateProvinceID
                                         INNER JOIN Person.CountryRegion c
                                         ON s.CountryRegionCode = c.CountryRegionCode
                                      WHERE a.AddressID = @addressID";
                    SqlCommand selectCmd   = new SqlCommand(selectQuery, cn);
                    selectCmd.Parameters.AddWithValue("@addressID", addressID);
                    SqlDataReader reader = selectCmd.ExecuteReader();
                    if (reader.HasRows)
                    {
                        reader.Read();
                        string city    = (string)reader[0];
                        string state   = (string)reader[1];
                        string country = (string)reader[2];
                        reader.Close();
                        string placeName = city + ", " + state + ", " + country;

                        string       insertQuery    = "INSERT INTO Person.CityDetails VALUES (@addressID, @name, @longitude, @latitude, @population, @image)";
                        SqlCommand   insertCmd      = new SqlCommand(insertQuery, cn);
                        SqlParameter addressIDParam = new SqlParameter("@addressID", SqlDbType.Int);
                        SqlParameter nameParam      = new SqlParameter("@name", SqlDbType.NVarChar, 256);
                        SqlParameter longParam      = new SqlParameter("@longitude", SqlDbType.Float);
                        SqlParameter latParam       = new SqlParameter("@latitude", SqlDbType.Float);
                        SqlParameter popParam       = new SqlParameter("@population", SqlDbType.Int);
                        SqlParameter imgParam       = new SqlParameter("@image", SqlDbType.Image);
                        insertCmd.Parameters.AddRange(new SqlParameter[] { addressIDParam, nameParam, longParam, latParam, popParam, imgParam });
                        addressIDParam.Value = addressID;

                        TerraService terraService = new TerraService();
                        PlaceFacts[] places       = terraService.GetPlaceList(placeName, 100, false);
                        foreach (PlaceFacts facts in places)
                        {
                            LonLatPt coords   = facts.Center;
                            TileMeta metadata = terraService.GetTileMetaFromLonLatPt(coords, 1, Scale.Scale8m);
                            byte[]   image    = terraService.GetTile(metadata.Id);
                            nameParam.Value = facts.Place.City;
                            longParam.Value = coords.Lon;
                            latParam.Value  = coords.Lat;
                            popParam.Value  = facts.Population;
                            imgParam.Value  = image;
                            try
                            {
                                insertCmd.ExecuteNonQuery();
                            }
                            catch (Exception e)
                            {
                                SqlContext.Pipe.Send("Cannot insert row for place " + facts.Place.City);
                                SqlContext.Pipe.Send(e.Message);
                            }
                        }
                        cn.Close();

                        SqlContext.Pipe.Send("Command executed successfully.");
                        terraService.Dispose();
                    }
                    else
                    {
                        reader.Close();
                        cn.Close();
                        SqlContext.Pipe.Send("No addresses in the database match the specified ID.");
                    }
                }
            }
            catch (Exception e)
            {
                SqlContext.Pipe.Send("An error occurred executing the GetCityData stored procedure:");
                SqlContext.Pipe.Send(e.Message);
            }
        }
Пример #11
0
 public int CompareTo(TileMeta other)
 {
     return(value.CompareTo(other.value));
 }