// Use this for initialization public void Init() { GameColor parent = transform.parent.GetComponent <GameColor>(); //if parent is a color part, follow it's color if (parent) { gameColor = parent.gameColor; } switch (gameColor) { case GameColorEnum.none: gameObject.SetActive(false); break; default: if (sr == null) { return; } // Debug.Log("index " + index); sr.sprite = ResourceManager.Instance.circleSprite[(int)gameColor]; if (!hasFinishedStart) { transform.Rotate(new Vector3(0, 0, (-index) * 90)); } hasFinishedStart = true; //CSUtil.ERROR("game color is an invalid value"); break; } }
void GenerateScreen(int hardness) { List <GameObject> thisGeneratedList = new List <GameObject>(); if (generatedList.Count > 4) { generatedList.RemoveRange(0, generatedList.Count - 4); } for (int index = 0; index < 10; index++) { currentGeneratedY += 0.1f; float rateToGenerateCircle = Mathf.Pow(multiplierWhenDidntGenerateLastTime, emptyLineNumber) * originGenerateCircleRate; float rand = Random.Range(0, 1.0f); if (rand < rateToGenerateCircle) { emptyLineNumber = 0; //generate multiple in one line rand = Random.Range(0, sumOfGenerateNum); int generateNum = 3; if (rand <= rateToGenerateNumber[0]) { generateNum = 1; } else if (rand <= rateToGenerateNumber[0] + rateToGenerateNumber[1]) { generateNum = 2; } float randXValueLength = 1.6f * widthScale / (float)generateNum; float randXValueStart = -0.8f * widthScale; for (int num = 0; num < generateNum; num++) { float randXValue = Random.Range(randXValueStart + randXValueLength * num, randXValueStart + randXValueLength * (num + 1)); Vector3 willGeneratePosition = new Vector3(randXValue, currentGeneratedY * heightScale, 0f); //check collide with others bool shouldSkip = false; int checkNum = Mathf.Min(generatedList.Count, 4); for (int cn = 1; cn <= checkNum; cn++) { GameObject checkObject = generatedList[generatedList.Count - cn]; if (Vector3.Distance(checkObject.transform.position, willGeneratePosition) <= 1.5f) { shouldSkip = true; break; } } if (shouldSkip) { continue; } GameObject go = CachePoolManager.Instance.getCircle(); go.SetActive(true); go.transform.position = willGeneratePosition; WholeCircle wc = go.GetComponentInChildren <WholeCircle>(); //put these inside wholeCircle wc.itemObject.SetActive(false); //test only //wc.monsterObject.SetActive(false); wc.monsterObject.SetActive(true); Monster monster2 = wc.monsterObject.GetComponent <Monster>(); string monsterIdentifier = LevelManager.Instance.GenerateAMonsterIdentifier(); monster2.Init(MonsterManager.Instance.GetMonsterInfoByIdentifier(monsterIdentifier)); wc.ReactiveChildren(); wc.willChange = false; Rotator rt = go.GetComponentInChildren <Rotator>(); generatedList.Add(go); thisGeneratedList.Add(go); //decide if this circle is a change circle or block circle float rateToGenerateWillChangeCircle = Mathf.Pow(multiplierWHenDidntGenerateChangeCircle, noChangeCircleNumber) * originGenerateChangeCircleRate; rand = Random.Range(0, 1.0f); if (rand < rateToGenerateWillChangeCircle) { noChangeCircleNumber = 0; wc.willChange = true; rand = Random.Range(0, 4); GameColorEnum c1 = (GameColorEnum)((rand + 1) % 4); GameColorEnum c2 = (GameColorEnum)((rand + 2) % 4); GameColorEnum c3 = (GameColorEnum)((rand + 3) % 4); wc.SetColor(new GameColorEnum[] { c1, c2, c3, (GameColorEnum)rand }); } else { noChangeCircleNumber++; wc.willChange = false; //random to decide what color can pass block rand = Random.Range(0, sumOfNumberOfColorOfBLockCirlcle); if (rand <= rateOfNumberOfColorOfBlockCircle[0])//1 color { rand = Random.Range(0, 4); GameColorEnum c = (GameColorEnum)rand; wc.SetColor(new GameColorEnum[] { c, c, c, c }); } else if (rand <= rateOfNumberOfColorOfBlockCircle[0] + rateOfNumberOfColorOfBlockCircle[1])//2 color { rand = Random.Range(0, 4); GameColorEnum c = (GameColorEnum)rand; int rand2 = Random.Range(0, 3); GameColorEnum c2 = (GameColorEnum)((rand + rand2) % 4); wc.SetColor(new GameColorEnum[] { c, c, c2, c2 }); } else if (rand <= rateOfNumberOfColorOfBlockCircle[0] + rateOfNumberOfColorOfBlockCircle[1] + rateOfNumberOfColorOfBlockCircle[2])//1 color { rand = Random.Range(0, 4); GameColorEnum c1 = (GameColorEnum)((rand + 1) % 4); GameColorEnum c2 = (GameColorEnum)((rand + 2) % 4); GameColorEnum c3 = (GameColorEnum)((rand + 3) % 4); wc.SetColor(new GameColorEnum[] { c1, c2, c3, c3 }); } else { rand = Random.Range(0, 4); GameColorEnum c1 = (GameColorEnum)((rand + 1) % 4); GameColorEnum c2 = (GameColorEnum)((rand + 2) % 4); GameColorEnum c3 = (GameColorEnum)((rand + 3) % 4); wc.SetColor(new GameColorEnum[] { c1, c2, c3, (GameColorEnum)rand }); } } //decide the ratate speed of the circle,randge is (-100,-50)and(50,100) rand = Random.Range(-50, 50); rand += (rand > 0 ? 50 : -50); rt.speed = rand; } } else { emptyLineNumber++; } } //int rand3 = Random.Range(0, thisGeneratedList.Count); //GameObject go2 = thisGeneratedList[rand3]; //WholeCircle wc2 = go2.GetComponentInChildren<WholeCircle>(); //wc2.itemObject.SetActive(true); //GameItem gameItem = wc2.itemObject.GetComponent<GameItem>(); //gameItem.itemEnum = (GameItemEnum)Random.Range(0, (int)GameItemEnum.random+1); //gameItem.Init(); //int rand3 = Random.Range(0, thisGeneratedList.Count); //GameObject go2 = thisGeneratedList[rand3]; //WholeCircle wc2 = go2.GetComponentInChildren<WholeCircle>(); //wc2.monsterObject.SetActive(true); //Monster monster = wc2.monsterObject.GetComponent<Monster>(); //monster.Init(2,2); }
void OnTriggerEnter2D(Collider2D col) { if (isGameOver) { return; } //Debug.LogError(col+" layer "+ col.GetComponent<SpriteRenderer>().sortingLayerID); //1746648709 ??? if (col.GetComponent <SpriteRenderer>() != null && col.GetComponent <SpriteRenderer>().sortingLayerID != 1746648709) { return; } if (decideByTheFirstHit && col.transform.parent && hittedCircle.Contains(col.transform.parent.gameObject)) { return; } if (willTeleportThis) { return; } GameColor script = col.gameObject.GetComponent <GameColor>(); CirclePart cp = col.gameObject.GetComponent <CirclePart>(); if (script && cp) { GameColorEnum c = script.gameColor; if (cp.willChange) { ChangeColor(c); } else { if (c != gameColor) { HitWontChangePartWithDifferentColor(); } else { HitWontChangePartWithSameColor(); //achievement } } if (shouldDestroyPart) { col.gameObject.SetActive(false); hittedPart.Add(col.gameObject); } if (!abilityBehavior.WouldDestroyMultiplePartsOnOneCircle) { hittedCircle.Add(col.transform.parent.gameObject); } //get item if exist GameItem item = col.transform.parent.parent.GetComponentInChildren <GameItem>(); UseItem(item); if (col.transform.parent.gameObject != startObject) { Monster monster = col.transform.parent.parent.GetComponentInChildren <Monster>(); if (monster && monster.gameObject.activeSelf) { monster.GetDamage(1); } } } else { //hit on wholeCircle //CSUtil.ERROR("item is not color changer and does not have colorManager on it"); } }
public void ChangeColor(GameColorEnum c) { gameColor = c; CSUtil.LOG("changed color to " + (int)c); sr.color = colorList[(int)c]; }
void SetRandomColor() { GameColorEnum c = (GameColorEnum)Random.Range(0, 4); ChangeColor(c); }
static public string GetItem(GameItemEnum itemEnum) { int rand; FollowTarget ft = Camera.main.GetComponent <FollowTarget>(); //CSUtil.LOG("get item " + itemEnum); Player player = GameLogicManager.Instance.player; switch (itemEnum) { case GameItemEnum.smallBall: player.MinishBall(); break; case GameItemEnum.megaBall: player.EnlargeBall(); break; case GameItemEnum.heart: player.gainHP(); break; case GameItemEnum.gold: rand = Random.Range(1, 5); CurrencyManager.Instance.AddCurrencyAmount(CSConstant.GOLD, rand); SFXManager.Instance.PlaySFX(SFXEnum.coin); break; case GameItemEnum.randomColor: SFXManager.Instance.PlaySFX(SFXEnum.possitive); GameColorEnum c = (GameColorEnum)Random.Range(0, 4); player.ChangeColor(c); break; case GameItemEnum.bomb: player.Bomb(); break; case GameItemEnum.teleport: player.Teleport(); break; case GameItemEnum.ballSlowDown: player.SlowDown(); break; case GameItemEnum.ballSpeedup: player.Speedup(); break; case GameItemEnum.screenSlowDown: SFXManager.Instance.PlaySFX(SFXEnum.possitive); ft.Slowdown(); break; case GameItemEnum.screenSpeedup: SFXManager.Instance.PlaySFX(SFXEnum.negative); ft.Speedup(); break; case GameItemEnum.random: rand = Random.Range(0, (int)GameItemEnum.random); return(GetItem((GameItemEnum)rand)); } return(itemEnum.ToString()); }