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); }
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); }
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; }
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; }