private void OnGemCreated(GemManager sender, GemController createdGemInstance) { GemControllerWrapper gem = Instantiate(gemPrefab); gem.SetInstance(createdGemInstance); gem.transform.parent = this.transform; }
public GemControllerWrapper(GemController gemController) { if (null == GemImages) { PrepareGemImages(); } if (null == SpecialTypeImages) { PrepareSpecialTypeImages(); } instance = gemController; instance.OnAppear += OnAppear; instance.OnFadeout += OnFadeout; instance.OnTypeChanged += OnTypeChanged; instance.OnPositionChanged += OnPositionChanged; instance.OnSpecialTypeChanged += OnSpecialTypeChanged; image = new Image(); image.Width = 32; image.Height = 32; image.Stretch = Stretch.Fill; image.Source = GemImages[GemType.None]; image.Tag = this; specialImage = new Image(); specialImage.Width = 32; specialImage.Height = 32; specialImage.Stretch = Stretch.Fill; specialImage.Source = SpecialTypeImages[GemSpecialType.Regular]; specialImage.Tag = this; specialImage.IsHitTestVisible = false; }
private IEnumerator SpawnCollectables() { while (true) { yield return(new WaitForSeconds(spawnTime)); int chosen = 0; float location = Random.Range(-9, 9); int chance = Random.Range(0, 100); if (chance <= gemChance) { chosen = 0; } else if (chance <= fuelChance) { chosen = 1; } else //Chooses Explosive { chosen = 2; } GameObject collectable = Instantiate(collectables[chosen], new Vector3(transform.position.x + location, transform.position.y, 0), Quaternion.identity); if (chosen == 0) { GemController gem = collectable.GetComponent <GemController>(); gem.DefineGem((int)(Time.frameCount / 60)); } } }
protected void Start() { shouldUpdate = true; Debug.Assert(gemSprites.Count == (int)GemType.Gem_Count, "gem sprite count is not equal to gem type count."); var gemRow = GameConfig.Instance.gemRow; var gemColumn = GameConfig.Instance.gemColumn; _currentGemControllerMatrix = new GemController[gemRow, gemColumn]; for (int row = 0; row < gemRow; row++) { for (int column = 0; column < gemColumn; column++) { SpawnGem(row, column, true); } } _currentGameBoardState = GameBoardState.Idle; _firstSelectedGemControler = null; _secondSelectedGemControler = null; // implementations SetupStateHandlers(); }
public static GemController BlankGem() { var gem = new GemController(); gem._number = EmptyNumber; return(gem); }
private void Select() { m_IsSelected = true; m_GemRender.color = m_Color; m_Previous = gameObject.GetComponent <GemController>(); _GameController.PlaySFX(_GameController.SfxSelect); }
private void OnTypeChanged(GemController sender, GemType type) { if (GemImages.ContainsKey(type)) { image.Source = GemImages[type]; } }
private void OnSpecialTypeChanged(GemController sender, GemSpecialType specialType) { if (SpecialTypeImages.ContainsKey(specialType)) { specialImage.Source = SpecialTypeImages[specialType]; } }
private void Start() { gc = this; cc = GameObject.Find("CameraParentObject").GetComponent <CameraController>(); pc = GameObject.Find("Player").GetComponent <PlayerController>(); uc = GameObject.Find("Canvas").GetComponent <UIController>(); gv = GetComponent <GameVibrator>(); sc = GetComponent <SceneController>(); cg = GameObject.Find("Canvas").GetComponent <ClaimGems>(); scc = GameObject.Find("Canvas").GetComponent <SecondChanceController>(); fc = GameObject.Find("Canvas").GetComponent <FeverController>(); bm = GetComponent <BrickManager>(); ads = GameObject.Find("Canvas").GetComponent <AdSimulation>(); scorec = GameObject.Find("Canvas").GetComponent <ScoreController>(); gemc = GameObject.Find("Canvas").GetComponent <GemController>(); oc = GameObject.Find("OptionsButton").GetComponent <OptionsController>(); am = GameObject.Find("CameraParentObject").GetComponent <AudioManager>(); DontDestroyOnLoad(gameObject); DontDestroyOnLoad(uc.gameObject); DontDestroyOnLoad(pc.gameObject); DontDestroyOnLoad(cc.gameObject); DontDestroyOnLoad(GameObject.Find("EventSystem")); DontDestroyOnLoad(GameObject.Find("Directional Light")); DontDestroyOnLoad(GameObject.Find("LiteFPSCounter")); pc.enabled = false; sc.LoadScene("LevelScene"); storing = GetComponent <Storing>(); LoadAllData(); pc.SelectedBrick = bm.GetCurrentBrick(); }
private void OnSpecialTypeChanged(GemController sender, GemSpecialType specialType) { this.specialType = specialType; foreach (GemComponent gemComponent in gemComponents) { gemComponent.SetGemSpecialType(specialType); } }
private void OnTypeChanged(GemController sender, GemType type) { this.type = type; foreach (GemComponent gemComponent in gemComponents) { gemComponent.SetGemType(type); } }
private void OnAppear(GemController sender, bool animated) { image.Opacity = 1.0; specialImage.Opacity = 1.0; Task.Delay(500).ContinueWith(_ => { instance.OnAppearOver(); }); }
private void OnFadeout(GemController sender) { image.Opacity = 0.0; specialImage.Opacity = 0.0; Task.Delay(500).ContinueWith(_ => { instance.OnFadeoutOver(); }); }
void Awake() { _GameController = FindObjectOfType(typeof(GameController)) as GameController; m_GemRender = GetComponent <SpriteRenderer>(); m_Body = GetComponent <Rigidbody2D>(); m_Color = new Color(.5f, .5f, .5f, 1.0f); m_Previous = null; m_Adjacent = new Vector2[] { Vector2.up, Vector2.down, Vector2.left, Vector2.right }; }
void GemClicked(GemController oldGem) { //Debug.Log("GemClick"); oldGem.raycasted = true; //mark as part of the gems to destroy gemClick = WaitClick; //send clicks to waitin function while monitoring velocity gameVars.GemClicked(oldGem.dynamicGemType, gemsColors[oldGem.dynamicGemType]); //send gem type to score data gameVars.SetComboScore(); //start comboingScore oldGem.GetMeAndMySisters(); //destroy gems of the same color gameVars.Moves++; //add a move to the move counter }
public void SetInstance(GemController instance) { this.instance = instance; this.instance.tag = this; this.instance.OnTypeChanged += OnTypeChanged; this.instance.OnPositionChanged += OnPositionChanged; this.instance.OnAppear += OnAppear; this.instance.OnFadeout += OnFadeout; this.instance.OnSpecialTypeChanged += OnSpecialTypeChanged; }
private void OnPositionChanged(GemController sender, int x, int y, bool interpolate) { CurrentX = x; CurrentY = y; movingComponent.MoveTo(new Vector3(positionOffset.x * x + x, positionOffset.y * y + y), interpolate, () => { instance.OnMovingEnd(); }); if (interpolate) { instance.OnMovingStart(); } }
private void OnGemCreated(GemManager sender, GemController gemController) { GemControllerWrapper wrapper = new GemControllerWrapper(gemController); DrawCanvas.Children.Add(wrapper.GemImage); DrawCanvas.Children.Add(wrapper.SpecialImage); wrapper.GemImage.MouseDown += Image_MouseDown; wrapper.OnOverEvent += OnGemWrapperOver; gemControllers.Add(wrapper); }
private void OnFadeout(GemController sender) { if (gameObject.activeSelf) { gemAnimator.SetTrigger("fadeout"); } else { Debug.Log("activeSelf is false"); } }
bool InDestoryGemEqual(GemController candidatesEqualsColor) { foreach (GemController destroyGem in destroyGems) { if (candidatesEqualsColor.name == destroyGem.name) { return(true); } } return(false); }
// 아래로 떨어지는 함수 IEnumerator DownCoroutine(GemController downGem) { float startTime = Time.time; Vector2 pos = downGem._LocalPosition; while (Time.time - startTime <= swapTime) { downGem._LocalPosition = Vector2.Lerp(pos, Vector2.zero, (Time.time - startTime) * swapSpeed / swapTime); yield return(null); } }
private void OnAppear(GemController sender, bool animated) { gameObject.SetActive(true); if (animated) { StartCoroutine(WaitAndTrigger(Utils.Randomizer.Range(0.0f, 0.75f), "appear")); } else { gemAnimator.SetTrigger("appear"); } }
private void OnGemMatch(GemManager sender, GemController instance) { if (instance.SpecialType == GemSpecialType.HitType) { return; } if (gemPoints.Count == 0) { StartCoroutine(SendGemPointsEventAtOnce()); } gemPoints.Add(new GemPoint(instance.CurrentGemType, 1.0f)); }
// 주변 6범위 & 그이상 범위 추가 void CandidateNextAddDestory(Collider2D candidateNext, GemController candidatesEqualsColor, GemController.Direction direction, Color color) { if (candidateNext && candidateNext.GetComponent <SpriteRenderer>().color.Equals(color)) { destroyGems.Add(candidateNext.gameObject.GetComponent <GemController>()); if (!DestroyOverlapCheck(candidatesEqualsColor.name)) { destroyGems.Add(candidatesEqualsColor); } CheckHexNextDestroyGem(direction, candidateNext.transform.position, color); } }
public void GetMeAndMySisters(directions directionToIgnore = directions.neutral) { RaycastHit hitUp, hitDown, hitLeft, hitRight; if (directionToIgnore != directions.up && (Physics.Raycast(transform.position, Vector3.up, out hitUp, 1.3f))) { GemController gemC = hitUp.collider.gameObject.GetComponent <GemController>(); if (gemC != null && gemC.dynamicGemType == this.dynamicGemType && gemC.raycasted == false) { gemC.raycasted = true; gemC.GetMeAndMySisters(directions.down); } } if (directionToIgnore != directions.down && (Physics.Raycast(transform.position, Vector3.down, out hitDown, 1.3f))) { GemController gemC = hitDown.collider.gameObject.GetComponent <GemController>(); if (gemC != null && gemC.dynamicGemType == this.dynamicGemType && gemC.raycasted == false) { gemC.raycasted = true; gemC.GetMeAndMySisters(directions.up); } } if (directionToIgnore != directions.left && (Physics.Raycast(transform.position, Vector3.left, out hitLeft, 1.3f))) { GemController gemC = hitLeft.collider.gameObject.GetComponent <GemController>(); if (gemC != null && gemC.dynamicGemType == this.dynamicGemType && gemC.raycasted == false) { gemC.raycasted = true; gemC.GetMeAndMySisters(directions.right); } } if (directionToIgnore != directions.right && (Physics.Raycast(transform.position, Vector3.right, out hitRight, 1.3f))) { GemController gemC = hitRight.collider.gameObject.GetComponent <GemController>(); if (gemC != null && gemC.dynamicGemType == this.dynamicGemType && gemC.raycasted == false) { gemC.raycasted = true; gemC.GetMeAndMySisters(directions.left); } } if (gemDead != null) { gemDead(); } }
public void GemClicked(GemController oldGem) { //Debug.Log("Clicked : " + oldGem.name); //Debug.Log("last combo : " + lastCombo); oldGem.raycasted = true; //mark as part of the gems to destroy gemClick = WaitClick; //send clicks to waiting function while monitoring velocity //lastCombo = 1; comboStart = true; oldGem.GetMeAndMySisters();//destroy gems of the same color doUpdateStuff += MonitorLevelsVelocity; Moves++; }
int EqualsX(GemController destroyedGem, List <GemController> destroyedGemsBottoms) { int index = 0; foreach (GemController destroyedGemsBottom in destroyedGemsBottoms) { index++; if (destroyedGem._Position.x.Equals(destroyedGemsBottom._Position.x)) { return(index); } } return(0); }
public static bool IsMatched(GemController first, GemController second) { bool isMatched = false; do { if (first.Type == second.Type) { isMatched = true; break; } // TODO: // Super Gem } while (false); return(isMatched); }
public void Swap(GemController obj, SpriteRenderer render) { if (obj.m_GemRender.sprite == render.sprite) { return; } GameObject tempTag = new GameObject(); Sprite tempSprite = render.sprite; tempTag.gameObject.tag = render.gameObject.tag; render.sprite = obj.m_GemRender.sprite; render.gameObject.tag = obj.m_GemRender.gameObject.tag; obj.m_GemRender.sprite = tempSprite; obj.m_GemRender.gameObject.tag = tempTag.gameObject.tag; Destroy(tempTag); _GameController.PlaySFX(_GameController.SfxSwap); }
void CheckDirection(Vector2 aroundGemPos, Vector2 centerGemPos, GemController candidate) { // up if (centerGemPos.x == aroundGemPos.x && centerGemPos.y + 0.7f <= aroundGemPos.y) { candidate._Direction = GemController.Direction.UP; candidatesEqualsColors.Add(candidate); } //down if (centerGemPos.x == aroundGemPos.x && centerGemPos.y - 0.7f >= aroundGemPos.y) { candidate._Direction = GemController.Direction.DOWN; candidatesEqualsColors.Add(candidate); } // left down if (centerGemPos.x - 0.6f >= aroundGemPos.x && centerGemPos.y - 0.3f >= aroundGemPos.y) { candidate._Direction = GemController.Direction.LEFTDOWN; candidatesEqualsColors.Add(candidate); } // left up if (centerGemPos.x - 0.6f >= aroundGemPos.x && centerGemPos.y + 0.3f <= aroundGemPos.y) { candidate._Direction = GemController.Direction.LEFTUP; candidatesEqualsColors.Add(candidate); } // right down if (centerGemPos.x + 0.5f <= aroundGemPos.x && centerGemPos.y - 0.3f >= aroundGemPos.y) { candidate._Direction = GemController.Direction.RIGHTDOWN; candidatesEqualsColors.Add(candidate); } // right up if (centerGemPos.x + 0.5f <= aroundGemPos.x && centerGemPos.y + 0.3f <= aroundGemPos.y) { candidate._Direction = GemController.Direction.RIGHTUP; candidatesEqualsColors.Add(candidate); } }