Beispiel #1
0
        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));
            }
        }
    }
Beispiel #4
0
    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();
    }
Beispiel #5
0
    public static GemController BlankGem()
    {
        var gem = new GemController();

        gem._number = EmptyNumber;
        return(gem);
    }
Beispiel #6
0
 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];
     }
 }
Beispiel #9
0
 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();
     });
 }
Beispiel #14
0
 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 };
 }
Beispiel #15
0
 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();
     }
 }
Beispiel #18
0
        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");
     }
 }
Beispiel #23
0
 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);
     }
 }
Beispiel #25
0
    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();
        }
    }
Beispiel #26
0
    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);
    }
Beispiel #28
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);
    }
Beispiel #29
0
    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);
        }
    }