void gameStart() { isPause = false; isGameOver = false; oryorCharge = 0; oryorGauge.fillAmount = 0f; levelController.Reset(); ProductFactory.GetInstance().GenerateProduct(); }
void gameReset() { isPause = false; isGameOver = false; oryorCharge = 0; oryorGauge.fillAmount = 0f; levelController.Reset(); TileGenerator.GetTileList().ForEach(t => t.Reset()); ProductFactory.GetInstance().DestroyLastGenerated(); slot.DestroyDeposit(); }
public void StartDrag(Selectable product) { selectedProduct = product; if (product == ProductFactory.GetInstance().GetLastGeneratedProduct()) { ProductFactory.GetInstance().UseLastGeneratedProduct(); } else { slot.UseDeposit(); } slot.SetHilight(true); }
private void swapProductBackToFactory() { if (ProductFactory.GetInstance().GetLastGeneratedProduct() == null) { return; } var withdrawProduct = ProductFactory.GetInstance().SwapProdcut(selectedProduct); selectedProduct = null; slot.SetHilight(false); if (withdrawProduct != null) { withdrawProduct.transform.parent = slot.transform; withdrawProduct.transform.localPosition = Vector3.zero; withdrawProduct.transform.localScale = Vector3.one; slot.AddDeposit(withdrawProduct); } }
private void swapProduct() { var withdrawProduct = slot.SwapProdcut(selectedProduct); selectedProduct = null; slot.SetHilight(false); if (withdrawProduct != null) { withdrawProduct.transform.parent = ProductFactory.GetInstance().transform; withdrawProduct.transform.localPosition = Vector3.zero; withdrawProduct.transform.localScale = Vector3.one; ProductFactory.GetInstance().AddLastGeneratedProduct(withdrawProduct); } else if (ProductFactory.GetInstance().GetLastGeneratedProduct() == null) { ProductFactory.GetInstance().UseLastGeneratedProduct(); ProductFactory.GetInstance().GenerateProduct(TileGenerator.GetTileList().Any(t => t.GetBadGuy() != null)); } }
private void cancelSelected() { selectedProduct.transform.localPosition = Vector3.zero; if (selectedProduct == ProductFactory.GetInstance().GetLastGeneratedProduct()) { ProductFactory.GetInstance().AddLastGeneratedProduct(selectedProduct); } else { slot.AddDeposit(selectedProduct); } selectedProduct = null; slot.SetHilight(false); if (selectedTile != null) { selectedTile.SetHighlight(false, true); } setTileHint(false, true); selectedTile = null; }
private IEnumerator nextTurn() { levelController.AddTurn(); var tileList = TileGenerator.GetTileList(); var ratTile = tileList.FindAll(t => t.GetBadGuy() is Rat).OrderBy(t => t.GetBadGuy().Life()); foreach (var ratT in ratTile) { if (ratT.GetBadGuy().DecreaseLife() <= 0) { Debug.Log("Deduct User Life"); var throwingProduct = sherDog.GetThrowableObject(); throwingProduct.SetActive(true); throwingProduct.transform.position = new Vector3(ratT.transform.position.x, ratT.transform.position.y, throwingProduct.transform.position.z); yield return(StartCoroutine(Util.SmoothMovement(throwingProduct.transform, sherDog.GetThrowingPosition(), 10f))); throwingProduct.SetActive(false); sherDog.Hit(); var ranSound = Random.Range(0, 20); var hitSoundname = (ranSound) > 10?"hit":"hit2"; MainSoundSrc.PlaySound(hitSoundname); gController.mDecreaseLifeGuage(); gController.mBrokeCombo(); yield return(new WaitForSeconds(1f)); //Destroy( ratT.RemoveBadGuy().gameObject ); ratT.GetBadGuy().SetLife(levelController.GetRatTurns()); } var availableTileList = ratT.GetCrossBuildableTileList(); if (availableTileList.Count() == 0) { continue; } var selectedIndex = (int)Random.Range(0f, availableTileList.Count() - 0.01f); var rat = ratT.RemoveBadGuy(); availableTileList[selectedIndex].AddBadGuy(rat); } var moleTile = tileList.FindAll(t => t.GetBadGuy() is Mole); var moleList = moleTile.Select(mt => mt.RemoveBadGuy() as Mole).OrderBy(m => m.Life()); var buildableTile = tileList.FindAll(t => t.IsBuildAble()); var buildableCount = buildableTile.Count; foreach (var mole in moleList) { if (mole.DecreaseLife() <= 0) { Debug.Log("Deduct User Life"); var throwingProduct = sherDog.GetThrowableObject(); throwingProduct.SetActive(true); throwingProduct.transform.position = new Vector3(mole.transform.position.x, mole.transform.position.y, throwingProduct.transform.position.z); yield return(StartCoroutine(Util.SmoothMovement(throwingProduct.transform, sherDog.GetThrowingPosition(), 10f))); throwingProduct.SetActive(false); sherDog.Hit(); var ranSound = Random.Range(0, 20); var hitSoundname = (ranSound) > 10?"hit":"hit2"; MainSoundSrc.PlaySound(hitSoundname); gController.mDecreaseLifeGuage(); gController.mBrokeCombo(); yield return(new WaitForSeconds(1f)); //Destroy( mole.gameObject ); mole.SetLife(levelController.GetMoleTurns()); } var newHomeIndex = (int)Random.Range(0f, buildableCount - 0.01f); buildableTile[newHomeIndex].AddBadGuy(mole); buildableCount--; buildableTile.RemoveAt(newHomeIndex); } //Create Mole var moleChance = levelController.GetMoleChance(tileList.Count(t => t.GetBadGuy() is Mole)); var ratChance = levelController.GetRatChance(tileList.Count(t => t.GetBadGuy() is Rat)); var chance = Random.Range(0, 100); if (buildableCount > 0 && chance < moleChance + ratChance) { BadGuy bg = null; if (chance < ratChance) { bg = Instantiate(ratPrefab) as BadGuy; bg.SetLife(levelController.GetRatTurns()); } else { bg = Instantiate(molePrefab) as BadGuy; bg.SetLife(levelController.GetMoleTurns()); } var newHomeIndex = (int)Random.Range(0f, buildableCount - 0.01f); buildableTile[newHomeIndex].AddBadGuy(bg, true); buildableCount--; buildableTile.RemoveAt(newHomeIndex); } yield return(new WaitForSeconds(0.5f)); if (buildableCount <= 0) { //Game Over Debug.Log("Game Over"); gController.mGameOver(); } else { var tileLeft = (float)buildableCount / TileGenerator.TotalSize; if (tileLeft <= 0.4f || gController.GetLife() == 1) { sherDog.SetTired(true); } else { sherDog.SetTired(false); } } //Check Game State if (!isGameOver) { if (oryorCharge < 100) { ProductFactory.GetInstance().GenerateProduct(tileList.Any(t => t.GetBadGuy() != null)); } else { oryorCharge = 0; oryorGauge.fillAmount = 0; ProductFactory.GetInstance().GenerateOryor(); MainSoundSrc.PlaySound("oryorready"); } } }
IEnumerator finishMove(Tile target, itemType it = itemType.None) { Tile[] similarTiles = null; var highestMatchLevel = 0; if (it == itemType.Magnifier) { var highLevel = target.GetCrossBuildingHighLevel(); foreach (var level in highLevel) { similarTiles = target.GetSimilarTile(level); if (similarTiles != null && similarTiles.Length >= 2) { highestMatchLevel = level; break; } } } else if (it == itemType.Oryor) { var temp = new List <Tile>(); temp.AddRange(target.GetSurroundTiles().Where(t => t.GetCurrentProductLevel() != 0)); if (target.GetCurrentProductLevel() != 0) { temp.Add(target); } similarTiles = temp.ToArray(); target.GetSurroundTiles().Where(t => t.GetBadGuy() != null).ToList().ForEach(b => StartCoroutine(userLockerCo(b, false))); if (target.GetBadGuy() != null) { StartCoroutine(userLockerCo(target, false)); } } else { similarTiles = target.GetSimilarTile(); } if (similarTiles != null && ((it == itemType.Oryor && similarTiles.Length > 0) || similarTiles.Length >= 2)) { sherDog.Combine(); gController.mAddCombo(); var sound2 = Random.Range(0, 20); var combineSoundName = (sound2 > 10)?"combine":"combine2"; MainSoundSrc.PlaySound(combineSoundName); //Score var score = levelController.GetCombineProductScore(similarTiles[0].GetCurrentProductLevel(), similarTiles.Length); oryorCharge += levelController.GetOryorChargingRate(similarTiles[0].GetCurrentProductLevel()); var formatGauge = oryorCharge / 100f; oryorGauge.fillAmount = formatGauge; //Combine foreach (var tile in similarTiles) { var removedProduct = tile.RemoveProduct(); removedProduct.MoveAndDestroy(target.transform.position, .25f); } yield return(new WaitForSeconds(.25f)); if (it == itemType.Magnifier) { var product = ProductFactory.GetInstance().CreateProduct(highestMatchLevel + 1, true); target.SetupProduct(product); } else if (it == itemType.Oryor) { score = (int)(score * levelController.GetOryorMultiplier()); } else { target.UpgradeProduct(); } addScore(score, target.transform.position); yield return(new WaitForSeconds(1f)); if (target.IsProductComplete()) { var removedProduct = target.RemoveProduct(); removedProduct.Capture(); yield return(new WaitForSeconds(1f)); Destroy(removedProduct.gameObject); /* Do not destroy bad guy after 6 combine * var badGuys = target.GetSurroundTiles().Select( t => t.RemoveBadGuy() ).ToList(); * * badGuys.ForEach( bg => {if(bg!=null)Destroy(bg.gameObject);} ); */ } yield return(StartCoroutine(finishMove(target))); } else { yield return(StartCoroutine(nextTurn())); } yield return(0); }
private bool isProductFactorySelected(Vector3 pos) { return(ProductFactory.GetInstance().GetComponent <Collider2D>().OverlapPoint(pos)); }