Beispiel #1
0
    public NeighbourProp GetProp2(Block gem, int rw, int cl)
    {
        NeighbourProp       neighbour = new NeighbourProp();
        IEnumerable <Block> nhMatch   = MatchesHorrizontally(gem, rw, cl);
        IEnumerable <Block> nvMatch   = MatchesVertically(gem, rw, cl);

        if (GetBonusType1(nhMatch))
        {
            if (neighbour.bt == 0)
            {
                neighbour.MatchType = 1; neighbour.bt = 1;
            }
        }
        if (GetBonusType1(nvMatch))
        {
            if (neighbour.bt == 0)
            {
                neighbour.MatchType = 2; neighbour.bt = 1;
            }
        }
        //if (GetBonusType2(nhMatch))
        //{
        //    nhMatch = GetEntireCol(gem);
        //}
        //if (GetBonusType2(nvMatch))
        //{
        //    nvMatch = GetEntireRow(gem);
        //}
        //if (GetSwirlType1(nhMatch))
        //{
        //    nhMatch = GetEntire5Match(gem);
        //}
        //if (GetSwirlType1(nvMatch))
        //{
        //    nvMatch = GetEntire5Match(gem);
        //}
        foreach (var g in nhMatch)
        {
            neighbour.gemms.Add(g);
            OpenAppLevel.THIS.printScores += g.addScore;
        }
        foreach (var g in nvMatch)
        {
            neighbour.gemms.Add(g);
            OpenAppLevel.THIS.printScores += g.addScore;
        }
        return(neighbour);
    }
    /// <summary>
    /// совпадения по вертикали и горизонтали
    /// </summary>
    /// <param name="gem"></param>
    /// <returns></returns>
    public NeighbourProp GetProp(Gem gem)
    {
        NeighbourProp     neighbour = new NeighbourProp();
        IEnumerable <Gem> nhMatch   = MatchesHorrizontally(gem);
        IEnumerable <Gem> nvMatch   = MatchesVertically(gem);

        if (GetBonusType1(nhMatch))
        {
            if (neighbour.bt == 0)
            {
                neighbour.MatchType = 1; neighbour.bt = 1;
            }
        }
        if (GetBonusType1(nvMatch))
        {
            if (neighbour.bt == 0)
            {
                neighbour.MatchType = 2; neighbour.bt = 1;
            }
        }
        if (GetBonusType2(nhMatch))
        {
            nhMatch = GetEntireCol(gem);
        }
        if (GetBonusType2(nvMatch))
        {
            nvMatch = GetEntireRow(gem);
        }
        if (GetSwirlType1(nhMatch))
        {
            nhMatch = GetEntire5Match(gem);
        }
        if (GetSwirlType1(nvMatch))
        {
            nvMatch = GetEntire5Match(gem);
        }
        foreach (var g in nhMatch)
        {
            neighbour.gemms.Add(g);
        }
        foreach (var g in nvMatch)
        {
            neighbour.gemms.Add(g); //if (neighbour.gemms.Contains(g)) neighbour.gemms.Add(g);
        }
        return(neighbour);
    }
Beispiel #3
0
    /// <summary>
    /// Начинаем собирать совпадения
    /// </summary>
    /// <param name="raycast2"></param>
    /// <returns></returns>
    IEnumerator TryMatch(RaycastHit2D raycast2)
    {
        HitCandy GetHitGem2 = bubble2;

        if (GetHitGem.type == "swirl" && GetHitGem2.type != "ingredient" + 0 && GetHitGem2.type != "ingredient" + 1)
        {
            GetHitGem.type = GetHitGem2.type;
        }
        GetHitColor = GetHitColors[Random.Range(0, GetHitColors.Length)];
        if (GetHitGem2.type == "swirl" && GetHitGem.type != "ingredient" + 0 && GetHitGem.type != "ingredient" + 1)
        {
            GetHitGem2.type = GetHitGem.type;
        }
        Block blockpr = null;

        if (CurrentBlk != null)
        {
            blockpr = CurrentBlk;
        }
        else
        {
            blockpr = GetHitGem.GetBlock;
        }
        var GetHitGemNeigbours  = GetArrays.GetProp(blockpr, blockpr.row, blockpr.col);
        var GetHitGemNeigbours2 = GetArrays.GetProp(OpenAppLevel.THIS.blocksp[currentrow * OpenAppLevel.THIS.MaxX + currentcol], currentrow, currentcol);
        var matchs = GetHitGemNeigbours.GetGems.Union(GetHitGemNeigbours2.GetGems).Distinct();

        movecount -= 1;
        if (matchs.Count() < 3)
        {
            //GetHitGem.transform.TweenPosition(0.2f, GetHitGem2.transform.position);
            //GetHitGem2.transform.TweenPosition(0.2f, GetHitGem.transform.position);
            yield return(new WaitForSeconds(0.2f));

            GetArrays.Lastsp();

            if (Ending == 1)
            {
                Ending = 0;
            }
        }
        string typebonus      = "";
        Block  bonusGem       = null;
        bool   addsquareBonus = false;
        bool   addswirlBonus  = matchs.Count() == 5 && GetHitGemNeigbours.bt == 1 || GetHitGemNeigbours2.bt == 1;
        bool   addBonus       = matchs.Count() >= 4 && GetHitGemNeigbours.bt == 1 || GetHitGemNeigbours2.bt == 1;

        if (addBonus)
        {
            var sameTypeGem = GetHitGemNeigbours.gemms.Count() > 0 ? GetHitGem : GetHitGem2;
            bonusGem = sameTypeGem.GetBlock;
            if (matchs.Count() == 5)
            {
                //sameTypeGem.type = "swirl";
            }
            typebonus = sameTypeGem.type;
            OpenAppLevel.THIS.StripeGameCount += 1;
        }
        while (matchs.Count() >= 2)
        {
            NeighbourProp neighbour = new NeighbourProp();
            foreach (var i in matchs)
            {
                if (rightMouseButtonDown)
                {
                    OpenAppLevel.THIS.printScores += 10;
                    //GetArrays.gems[i.row, i.col] = new Gem(i.row, i.col);
                    //GetArrays.gems[i.row, i.col].Nil();
                    CreateSquaresBlocks(i.col, i.row, CurrentBlk);
                    if (i.candy != null)
                    {
                        Destroy(i.candy.gameObject);
                    }
                    neighbour = GetArrays.GetProp(i, i.row, i.col);
                    //GetHitGem.transform.SetParent(GetHitGem.GetBlock.transform);

                    GetBlockMove = GetHitGem.GetBlock;
                    matchs       = neighbour.GetGems;
                }
                else
                {
                    neighbour = GetArrays.GetProp(i, i.row, i.col);
                    CreateSquaresBlocks(i.col, i.row, CurrentBlk);

                    matchs = neighbour.GetGems;
                }
            }
            //ScaleMatch()
            if (addBonus)
            {
                CreateBonus(GetHitGem.GetBlock, currentrow, currentcol, typebonus);
            }
            addBonus = false;

            //var bottom = matchs.Select(gem => gem.col).Distinct();
            //var updateafterMatch = GetArrays.UpdateAfter(bottom);
            //var newSpawn = GetNeighbourProp(bottom);
            //int maxDistance = Mathf.Max(updateafterMatch.MaxDistance, newSpawn.MaxDistance);
            //Moved(maxDistance, newSpawn.GetGems);
            //Moved(updateafterMatch.MaxDistance, updateafterMatch.GetGems);
            if (neighbour.GetGems != null)
            {
                neighbour.MaxDistance = 2;
                yield return(new WaitForSeconds(0.05f * neighbour.MaxDistance));

                matchs = neighbour.GetGems;
                if (rightMouseButtonDown)
                {
                    currentHitList = matchs;
                }
            }
            else
            {
                yield return(new WaitForSeconds(0.05f));
            }
            // * Mathf.Max(updateafterMatch.MaxDistance, newSpawn.MaxDistance));
            //matchs = GetArrays.GetNeighbours(newSpawn.GetGems).Union(GetArrays.GetNeighbours(updateafterMatch.GetGems)).Distinct();
            //matchs = GetArrays.GetNeighbours(updateafterMatch.GetGems).Distinct();
        }
        //GetHitGem = GetCandyPrefab[Random.Range(0, GetCandyPrefab.Length)];
        //bubble2 = GetHitGem;
        //BubleCursor.sprite = GetHitGem.GetComponent<SpriteRenderer>().sprite;
        if (Ending == 1)
        {
            levelsApps.LoadLB();
            Ending = 2;
        }
        for (int i = 0; i < bug.Length; i++)
        {
            bug[i].transform.position = new Vector3(0, -123, 0);
        }
        if (rightMouseButtonDown)
        {
            state = 1;
        }
        else
        {
            state = 0;
        }
        //levelsApps.GetPause();
    }