public override GameObject GenerateGameItem(int i, int j, IList<GameItemType> deniedTypes = null, Vector2? generateOn = null, bool isItemDirectionChangable = false, float? dropSpeed = null, MovingFinishedDelegate movingCallback = null, GameItemMovingType? movingType = null)
 {
     var newType = RandomObject.Next((int)(/*MaxType > (GameItemType)FieldSize ? MinType + 1 :*/ GameItemType._1), (int)MaxInitialElementType + 1);
     if (deniedTypes == null || deniedTypes.Count == 0)
         return GenerateGameItem((GameItemType)newType, i, j, generateOn, null, isItemDirectionChangable, dropSpeed, movingCallback, movingType);
     while (deniedTypes.Contains((GameItemType)newType))
         newType = RandomObject.Next((int)GameItemType._1, (int)MaxInitialElementType + 1);
     return GenerateGameItem((GameItemType)newType, i, j, generateOn, null, isItemDirectionChangable, dropSpeed, movingCallback);
 }
 public override GameObject GenerateGameItem(GameItemType itemType, int i, int j, Vector2? generateOn = null, Vector3? scaleTo = null, bool isItemDirectionChangable = false, float? dropSpeed = null, MovingFinishedDelegate movingCallback = null, GameItemMovingType? movingType = null)
 {
     return base.GenerateGameItem(itemType, i, j, generateOn, Game.isExtreme && itemType == GameItemType._ToMoveItem ? _match3ItemsScale : scaleTo, isItemDirectionChangable, dropSpeed, movingCallback, movingType);
 }
예제 #3
0
 public virtual GameObject GenerateGameItem(int i, int j, IList<GameItemType> deniedTypes = null, Vector2? generateOn = null, bool isItemDirectionChangable = false, float? dropSpeed = null,
     MovingFinishedDelegate movingCallback = null, GameItemMovingType? movingType = null)
 {
     int newType;
     var possibility = RandomObject.Next(1, 101);
     var minItem = (int)MinType + _minTypePlus;//(int)MaxType > FieldSize ? (int)MinType + 1 + _minTypePlus : (int)GameItemType._1;
     var isEven = (i + j) % 2;
     if (possibility <= 50)
         possibility = isEven == 0 ? 50 : 20;
     else
         if (possibility <= 70)
             possibility = isEven == 0 ? 20 : 50;
     switch (possibility)
     {
         case 50:
             newType = minItem;
             break;
         case 20:
             newType = RandomObject.Next(minItem + 2, (int)MaxInitialElementType + 1);
             break;
         default:
             newType = minItem + 1;
             break;
     }
     if (deniedTypes == null || deniedTypes.Count == 0)
         return GenerateGameItem((GameItemType)newType, i, j, generateOn, GameItemScale, isItemDirectionChangable, dropSpeed, movingCallback, movingType);
     while (deniedTypes.Contains((GameItemType)newType))
         newType = RandomObject.Next((int)GameItemType._1, (int)MaxInitialElementType + 1);
     return GenerateGameItem((GameItemType)newType, i, j, generateOn, GameItemScale, isItemDirectionChangable, dropSpeed, movingCallback);
 }
예제 #4
0
 public GameObject InstantiateGameItem(GameItemType itemType, Vector3 localPosition, Vector3 localScale, GameItemMovingType? movingType = null)
 {
     GameItem newgi = TempGameItems.Where(ti=>ti.Type == GameItemType.NullItem).FirstOrDefault();
     if (newgi == null)
     {
         var newgobj = Instantiate(Resources.Load(ItemPrefabName)) as GameObject;
         if (newgobj == null) return null;
         var rectTransform = newgobj.transform as RectTransform;
         if (rectTransform != null)
             rectTransform.sizeDelta = new Vector2(GameItemSize * 0.9375f, GameItemSize * 0.9375f);
         newgobj.transform.SetParent(transform);
         newgi = newgobj.GetComponent<GameItem>();
         /*newgobj.transform.localPosition = localPosition;
         newgobj.transform.localScale = localScale;
         newgi = newgobj.GetComponent<GameItem>();
         newgi.Type = itemType;
         if (movingType.HasValue)
             newgi.MovingType = movingType.Value;*/
         TempGameItems.Add(newgi);
     }
     newgi.transform.localPosition = localPosition;
     newgi.transform.localScale = localScale;
     if(!GameItemsSprites.Keys.Contains(itemType))
     GameItemsSprites.Add(itemType,Resources.LoadAll<Sprite>(ItemsTextureName(itemType).Split('/')[1] + "Tiles").FirstOrDefault(t => t.name.Contains(GetTextureIDByType(itemType))));
     newgi.GetComponent<SpriteRenderer>().sprite = GameItemsSprites[itemType];
     newgi.Type = itemType;
     newgi.MovingType = movingType != null? movingType.Value  : GetMovingTypeByItemType(itemType);
     return newgi.gameObject;
 }
예제 #5
0
        public virtual GameObject GenerateGameItem(GameItemType itemType, int i, int j, Vector2? generateOn = null, Vector3? scaleTo = null, bool isItemDirectionChangable = false, float? dropSpeed = null, MovingFinishedDelegate movingCallback = null, GameItemMovingType? movingType = null)
        {
            if (!generateOn.HasValue)
                generateOn = new Vector2(0, FieldSize - j);
            if (InitialGameItem == null)
                InitialGameItem = InitialGameItemPosition;
            var cell = GetCellCoordinates(i, j);
            var gobj = InstantiateGameItem(itemType, new Vector3(
                (float)Math.Round(cell.x + generateOn.Value.x * GameItemSize, 2),
                    InitialGameItem.Y + generateOn.Value.y * GameItemSize,
                InitialGameItem.Z), Vector3.zero, movingType);

            var c = gobj.GetComponent<GameItemMovingScript>();
            LogFile.Message("GameItem generated to X:" + gobj.transform.localPosition.x + " Y:" + (gobj.transform.localPosition.y - 6 * GameItemSize), true);
            CallbacksCount++;
            //var toS = GameItemSize / ScaleMultiplyer;
            c.MoveTo(cell.x, cell.y, dropSpeed.HasValue ? dropSpeed.Value : 10 - i % 2 + j * 1.5f, (item, result) =>
            {
                CallbacksCount--;
                if (movingCallback != null)
                    movingCallback(item, result);
                else
                {
                    //if (!result) return;
                    if (CallbacksCount == 0)
                        ClearChains();
                    else
                        if (isExchanging && CallbacksCount == CurrentExchangeItemsCount)
                            CallClearChainsAfterExchange = true;
                }
            }, new Vector2(InitialGameItem.X, InitialGameItem.Y + GameItemSize / 2), scaleTo != null ? scaleTo : Vector3.one/*new Vector3(toS, toS, 1f)*/, isItemDirectionChangable,
            null, Power2Sounds.Drop);

            return gobj;
        }