Example #1
0
    public static void Populate(Gamefield gamefield)
    {
        if (!AllInvaderChuzzles.Any() || AllInvaderChuzzles.Count == MaxInvadersOnLevel)
        {
            return;
        }

        var search = new PrimeSearch(AllInvaderChuzzles.Count);
        int p;

        while ((p = search.GetNext()) != -1)
        {
            var currentInvader = AllInvaderChuzzles[p];

            var targetTile =
                gamefield.Level.ActiveChuzzles.Where(x => x is ColorChuzzle).FirstOrDefault(
                    x =>
                    (x.Current == currentInvader.Current.Left || x.Current == currentInvader.Current.Right ||
                     x.Current == currentInvader.Current.Top || x.Current == currentInvader.Current.Bottom));

            if (targetTile != null)
            {
                TilesFactory.Instance.CreateInvader(targetTile.Current);
                targetTile.Destroy(false, true, true);
                break;
            }
        }

        //  var listInvaders = AllInvaderChuzzles.Aggregate("", (current, allInvaderChuzzle) => current + (allInvaderChuzzle + "\n"));
        //  Debug.Log("Invaders: \n"+listInvaders);
    }
Example #2
0
    public void OnAnimationFinished(Chuzzle chuzzle)
    {
        chuzzle.Real = chuzzle.Current = chuzzle.MoveTo;

        chuzzle.AnimationFinished -= OnAnimationFinished;
        AnimatedChuzzles.Remove(chuzzle);

        if (isAlreadyChangedState)
        {
            Debug.LogWarning("Finished in CRNC state ");
        }

        if (!AnimatedChuzzles.Any() && !isAlreadyChangedState)
        {
            Gamefield.Level.UpdateActive();

            var combinations = GamefieldUtility.FindCombinations(Gamefield.Level.ActiveChuzzles);
            if (combinations.Count > 0)
            {
                Gamefield.SwitchStateTo(Gamefield.CheckSpecialState);
            }
            else
            {
                if (!Gamefield.GameMode.IsWin && !Gamefield.GameMode.IsGameOver)
                {
                    Gamefield.SwitchStateTo(Gamefield.FieldState);
                }
                else
                {
                    Gamefield.GameMode.Check();
                }
            }
            isAlreadyChangedState = true;
        }
    }
Example #3
0
    public bool CreateNew()
    {
        var hasNew = Gamefield.NewTilesInColumns.Any(x => x > 0);

        if (!hasNew)
        {
            Gamefield.SwitchStateTo(Gamefield.CheckSpecialState);
            return(false);
        }

        //check if need create new tiles
        for (var x = 0; x < Gamefield.NewTilesInColumns.Length; x++)
        {
            var newInColumn = Gamefield.NewTilesInColumns[x];
            if (newInColumn > 0)
            {
                for (var j = 0; j < newInColumn; j++)
                {
                    //create new tiles
                    var chuzzle = TilesFactory.Instance.CreateChuzzle(Gamefield.Level.GetCellAt(x, Gamefield.Level.Height + j));
                    chuzzle.Current.IsTemporary = true;
                }
            }
        }

        //move tiles to fill positions
        for (var x = 0; x < Gamefield.NewTilesInColumns.Length; x++)
        {
            var newInColumn = Gamefield.NewTilesInColumns[x];
            if (newInColumn > 0)
            {
                for (var y = 0; y < Gamefield.Level.Height; y++)
                {
                    var cell = Gamefield.Level.GetCellAt(x, y, false);
                    if (Gamefield.Level.At(x, y) == null && cell.Type != CellTypes.Block)
                    {
                        while (cell != null)
                        {
                            var chuzzle = Gamefield.Level.At(cell.x, cell.y);
                            if (chuzzle != null)
                            {
                                chuzzle.MoveTo = chuzzle.MoveTo.GetBottomWithType();
                                //Level.GetCellAt(chuzzle.MoveTo.x, chuzzle.MoveTo.y - 1);
                            }
                            cell = cell.Top;
                        }
                    }
                }
            }
        }

        foreach (var c in Gamefield.Level.Chuzzles)
        {
            if (c.MoveTo.y != c.Current.y)
            {
                c.AnimateMoveTo(c.MoveTo.Position);
            }
        }
        return(true);
    }
Example #4
0
 private void RemoveEventHandlers(Gamefield gamefield)
 {
     gamefield.PointSystem.PointChanged -= OnPointsChanged;
     gamefield.GameMode.GameOver -= OnGameOver;
     gamefield.GameMode.Win -= OnWin;
     gamefield.GameMode.TurnsChanged -= OnTurnsChanged;
 }
Example #5
0
 private void RemoveEventHandlers(Gamefield gamefield)
 {
     gamefield.PointSystem.PointChanged -= OnPointsChanged;
     gamefield.GameMode.GameOver        -= OnGameOver;
     //  gamefield.GameMode.Win -= OnWin;
     gamefield.GameMode.TurnsChanged -= OnTurnsChanged;
 }
Example #6
0
        public static void Populate(Gamefield gamefield)
        {
            if (!AllInvaderChuzzles.Any() || AllInvaderChuzzles.Count == MaxInvadersOnLevel)
            {
                return;
            }

            var search = new PrimeSearch(AllInvaderChuzzles.Count);
            int p;
            while ((p = search.GetNext()) != -1)
            {
                var currentInvader = AllInvaderChuzzles[p];

                var targetTile =
                    gamefield.Level.Chuzzles.GetTiles(x=>x is ColorChuzzle).FirstOrDefault(
                                                                                           x =>
                                                                                           (x.Current == currentInvader.Current.Left || x.Current == currentInvader.Current.Right ||
                                                                                            x.Current == currentInvader.Current.Top || x.Current == currentInvader.Current.Bottom));

                if (targetTile != null)
                {
                    Instance.TilesFactory.CreateInvader(targetTile.Current);
                    targetTile.Destroy(false,true,true);
                    break;
                }
            }

            //  var listInvaders = AllInvaderChuzzles.Aggregate("", (current, allInvaderChuzzle) => current + (allInvaderChuzzle + "\n"));
            //  Debug.Log("Invaders: \n"+listInvaders);
        }
Example #7
0
 public GameData(uint currentScore, uint prevScore, uint highScore, Gamefield currentGamefield, Gamefield previousGamefield)
 {
     CurrentGamefield  = currentGamefield ?? throw new ArgumentNullException(nameof(currentGamefield));
     PreviousGamefield = previousGamefield ?? throw new ArgumentNullException(nameof(previousGamefield));
     CurrentScore      = currentScore;
     PreviousScore     = prevScore;
     HighScore         = highScore;
 }
Example #8
0
 public void AddEventHandlers(Gamefield gamefield)
 {
     RemoveEventHandlers(gamefield);
     gamefield.PointSystem.PointChanged += OnPointsChanged;
     gamefield.GameMode.GameOver += OnGameOver;
     gamefield.GameMode.Win += OnWin;
     gamefield.GameMode.TurnsChanged += OnTurnsChanged;
 }
Example #9
0
 public void AddEventHandlers(Gamefield gamefield)
 {
     RemoveEventHandlers(gamefield);
     gamefield.PointSystem.PointChanged += OnPointsChanged;
     gamefield.GameMode.GameOver        += OnGameOver;
     //gamefield.GameMode.Win += OnWin;
     gamefield.GameMode.TurnsChanged += OnTurnsChanged;
 }
Example #10
0
 public void Init(Gamefield gamefield)
 {
     this.Gamefield = gamefield;
     PointSystem = Gamefield.PointSystem;
     Reset();
     OnDestroy();
     OnInit();
     InvokeTurnsChanged();
 }
Example #11
0
    // Use this for initialization
    void Start()
    {
        gamefield = new Gamefield(partyGradient, cube, gameFieldObject.transform);

        gamefield.RandomPopulation();
        gamefield.CreateGameField();

        audioSource = GetComponent <AudioSource>();
    }
Example #12
0
    public void OnGameStarted(Gamefield gamefield)
    {
        AddEventHandlers(gamefield);

        TargetScoreLabel.text = LocalizationStrings.GetString(TargetString, GameModeToString.GetString(gamefield.GameMode));
        UI.Instance.TaskPopup.Show(gamefield.GameMode);
        OnTurnsChanged(gamefield.GameMode.Turns);
        OnPointsChanged(gamefield.PointSystem.CurrentPoints);
    }
Example #13
0
 public void Init(Gamefield gamefield)
 {
     this.Gamefield = gamefield;
     PointSystem    = Gamefield.PointSystem;
     Reset();
     OnDestroy();
     OnInit();
     InvokeTurnsChanged();
 }
Example #14
0
 public void OnAnimationFinished(Chuzzle chuzzle)
 {
     chuzzle.AnimationFinished -= OnAnimationFinished;
     AnimatedChuzzles.Remove(chuzzle);
     if (!AnimatedChuzzles.Any())
     {
         Gamefield.SwitchStateTo(Gamefield.WinCreateNewChuzzlesState);
     }
 }
Example #15
0
    public void OnGameStarted(Gamefield gamefield)
    {
        AddEventHandlers(gamefield);

        //TargetScoreLabel.text = LocalizationStrings.GetString(TargetString, GameModeToString.GetString(gamefield.GameMode));
        // UI.Instance.TaskPopup.Show(gamefield.GameMode);
        OnTurnsChanged(gamefield.GameMode.Turns, gamefield.GameMode.StartTurns);
        OnPointsChanged(gamefield.PointSystem.CurrentPoints, gamefield.GameMode.TargetPoints);
        //  Camera.main.orthographicSize = gamefield.Level.Width;
    }
Example #16
0
 private void Awake()
 {
     if (Instance != null)
     {
         Destroy(Instance.gameObject);
         return;
     }
     Instance   = this;
     _gamefield = GetComponent <Gamefield>();
 }
Example #17
0
    private void OnAnimationFinished(Chuzzle chuzzle)
    {
        chuzzle.AnimationFinished -= OnAnimationFinished;
        AnimatedChuzzles.Remove(chuzzle);

        chuzzle.Destroy(true, false);

        if (!AnimatedChuzzles.Any())
        {
            Gamefield.SwitchStateTo(Gamefield.WinCreateNewChuzzlesState);
        }
    }
Example #18
0
    public override void OnEnter()
    {
        AnimatedChuzzles.Clear();
        Chuzzle.DropEventHandlers();
        Chuzzle.AnimationStarted += OnAnimationStarted;

        var combinations = GamefieldUtility.FindCombinations(Gamefield.Level.ActiveChuzzles);

        if (!CheckForSpecial(combinations))
        {
            Gamefield.SwitchStateTo(Gamefield.WinRemoveCombinationState);
        }
    }
Example #19
0
    IEnumerator CreateNewPowerUps(List <Chuzzle> newPowerUps)
    {
        yield return(new WaitForSeconds(1f));

        foreach (Chuzzle ch in newPowerUps)
        {
            ch.Explosion = TileReplaceEffect;
            ch.Destroy(false);
            yield return(new WaitForSeconds(0.5f));

            TilesFactory.Instance.CreateBomb(ch.Current);
        }
        Gamefield.SwitchStateTo(Gamefield.WinRemoveCombinationState);
    }
Example #20
0
 void Start()
 {
     self = GameObject.Find("Canvas");
     model = FindObjectOfType<Gamefield>();
     tilePrefab = Resources.Load<GameObject>("Tile");
     tiles = new GameObject[width][];
     spritesheet = Resources.LoadAll<Sprite>("Spritesheet");
     for (int i = 0; i < width; i++)
     {
         tiles[i] = new GameObject[height];
     }
     AddTiles(width, height);
     AddHeroTile();
 }
Example #21
0
    private void RemoveCombinations(IEnumerable <List <Chuzzle> > combinations)
    {
        //remove combinations
        foreach (var combination in combinations)
        {
            Gamefield.InvokeCombinationDestroyed(combination);

            //count points
            Gamefield.PointSystem.CountForCombinations(combination);

            foreach (var chuzzle in combination)
            {
                chuzzle.Destroy(true);
            }
        }
    }
Example #22
0
    public override void OnEnter()
    {
        AnimatedChuzzles.Clear();
        Chuzzle.DropEventHandlers();
        Chuzzle.AnimationStarted += OnAnimationStarted;

        var anyCombination = GamefieldUtility.FindOnlyOneCombination(Gamefield.Level.ActiveChuzzles);

        if (anyCombination.Any())
        {
            StartCoroutine(RemoveCombinations());
        }
        else
        {
            Gamefield.SwitchStateTo(Gamefield.FieldState);
        }
    }
Example #23
0
    public void Awake()
    {
        Instance                  = this;
        InitState                 = GetComponent <InitState>();
        CheckSpecialState         = GetComponent <CheckSpecialState>();
        CreateNewChuzzlesState    = GetComponent <CreateNewChuzzlesState>();
        RemoveState               = GetComponent <RemoveCombinationState>();
        GameOverState             = GetComponent <GameOverState>();
        WinState                  = GetComponent <WinState>();
        FieldState                = GetComponent <FieldState>();
        WinCheckSpecialState      = GetComponent <WinCheckSpecialState>();
        WinCreateNewChuzzlesState = GetComponent <WinCreateNewChuzzlesState>();
        WinRemoveCombinationState = GetComponent <WinRemoveCombinationState>();


        Level        = GetComponent <Level>();
        StageManager = GetComponent <StageManager>();
        PointSystem  = GetComponent <Points>();
    }
Example #24
0
    public void CheckCombinations()
    {
        var combinations = GamefieldUtility.FindCombinations(Gamefield.Level.ActiveChuzzles);

        if (combinations.Any() && (!Tutorial.isActive || (Tutorial.isActive && CurrentChuzzle != null && Tutorial.instance.IsTargetCell(CurrentChuzzle.Real))))
        {
            foreach (var c in Gamefield.Level.Chuzzles)
            {
                c.MoveTo = c.Current = c.Real;
            }
            Gamefield.SwitchStateTo(Gamefield.CheckSpecialState);
            Reset();
        }
        else
        {
            if (CurrentChuzzle != null)
            {
                StartReturn();
            }
        }
    }
    public void OnAnimationFinished(Chuzzle chuzzle)
    {
        chuzzle.Real = chuzzle.Current = chuzzle.MoveTo;

        chuzzle.AnimationFinished -= OnAnimationFinished;
        AnimatedChuzzles.Remove(chuzzle);

        if (!AnimatedChuzzles.Any())
        {
            Gamefield.Level.UpdateActive();

            var combinations = GamefieldUtility.FindCombinations(Gamefield.Level.ActiveChuzzles);
            if (combinations.Count > 0)
            {
                Gamefield.SwitchStateTo(Gamefield.WinCheckSpecialState);
            }
            else
            {
                Gamefield.SwitchStateTo(Gamefield.WinRemoveCombinationState);
            }
        }
    }
Example #26
0
    private IEnumerator RemoveCombinations()
    {
        var powerUpCombination = GamefieldUtility.FindOnlyOneCombinationWithCondition(Gamefield.Chuzzles,
                                                                                      GamefieldUtility.IsPowerUp);

        //if has any powerups
        if (powerUpCombination.Any())
        {
            //destroy step by step
            PowerUpDestroyManager.Instance.Destroy(powerUpCombination);

            if (!AnimatedChuzzles.Any())
            {
                Gamefield.SwitchStateTo(Gamefield.CreateNewChuzzlesState);
            }
        }
        else
        {
            var combinations = GamefieldUtility.FindCombinations(Gamefield.Chuzzles);
            //remove combinations
            foreach (var combination in combinations)
            {
                Gamefield.InvokeCombinationDestroyed(combination);

                foreach (var chuzzle in combination)
                {
                    chuzzle.Destroy(true);
                }

                if (!AnimatedChuzzles.Any())
                {
                    Gamefield.SwitchStateTo(Gamefield.CreateNewChuzzlesState);
                }
                yield return(new WaitForSeconds(0.05f));
            }
        }

        yield return(new WaitForEndOfFrame());
    }
        static async Task Main(string[] args)
        {
            var           gameBoard = new Gamefield();
            IGameAnalyser analyser  = new BasicGameAnalyser();

            var count = gameBoard.GetFreePositions().Count();

            for (int i = 0; i < count; i++)
            {
                var rnd    = GenerateRandomNumber(0, 19 - i);
                var card   = gameBoard.GetUnusedGamecards().Skip(rnd).First();
                var result = await analyser.PlayRoundAsync(gameBoard, card);

                gameBoard.TrySetCard(result, card);
                //gameBoard.SaveRound();
                System.Console.WriteLine(gameBoard.ToString());
                System.Console.WriteLine("Boardpoints: " + gameBoard.GetBoardPoints());
                System.Console.ReadKey();
            }
            //var result = gameBoard.GetPositioInfo(4, 2, new Gamecard(3, 4, 5));
            //System.Console.WriteLine(result);
        }
Example #28
0
 public PauseState(Gamefield gamefield=null)
     : base(gamefield)
 {
 }
Example #29
0
 public WinState(Gamefield gamefield = null)
     : base(gamefield)
 {
 }
Example #30
0
 void Awake()
 {
     Gamefield = GetComponent <Gamefield>();
 }
Example #31
0
 public override void OnEnter()
 {
     Gamefield.Reset();
     Gamefield.InvokeGameStarted();
     Gamefield.SwitchStateTo(Gamefield.CheckSpecialState);
 }
Example #32
0
 public InitState(Gamefield gamefield = null)
     : base(gamefield)
 {
 }
Example #33
0
 public Field(Gamefield gamefield)
     : base(gamefield)
 {
 }
Example #34
0
 protected GamefieldState(Gamefield gamefield)
 {
     Gamefield = gamefield;
 }
Example #35
0
 public CreateState(Gamefield gamefield)
     : base(gamefield)
 {
 }
Example #36
0
 public GameOverState(Gamefield gamefield)
     : base(gamefield)
 {
 }
 public PowerUpAnalyzeState(Gamefield gamefield)
     : base(gamefield)
 {
 }
Example #38
0
 public void Awake()
 {
     Gamefield = GetComponent<Gamefield>();
 }
Example #39
0
 public FieldState(Gamefield gamefield)
     : base(gamefield)
 {
 }
Example #40
0
 public DeleteState(Gamefield gamefield)
     : base(gamefield)
 {
 }
Example #41
0
 public CheckSpecialState(Gamefield gamefield = null)
     : base(gamefield)
 {
 }
 public void Test()
 {
     var gameField = new Gamefield();
 }
 public RemoveCombinationState(Gamefield gamefield = null)
     : base(gamefield)
 {
 }
Example #44
0
 private void OnGameStarted(Gamefield gamefield)
 {
     label.text = gamefield.Level.LevelName;
 }
Example #45
0
 public CreateNewState(Gamefield gamefield = null)
     : base(gamefield)
 {
 }