public void RedrawField(ModelGameField field)
 {
     field.EachElement((int i, int j, bool filled) =>
     {
         int index             = j * m_Controller.Width + i;
         var element           = m_Elements[index];
         SpriteRenderer sprite = element.GetComponent <SpriteRenderer>();
         sprite.color          = filled ? Color.cyan : new Color(1f, 1f, 1f, 0.078f);
     });
 }
        public void Start()
        {
            View = GetComponent <GameView>();

            var inputs = GetComponents <InputController>();

            for (int i = 0; i < inputs.Length; ++i)
            {
                var input = inputs[i];
                input.HorizontalMove += OnHorizontalMove;
                input.TouchClick     += OnTouchClick;
                input.InstantPlace   += OnInstantPlace;
            }

            Field = new ModelGameField
            {
                Blocks = new bool[Width * Height],
                Height = Height,
                Width  = Width
            };

            Falling         = new ModelFalling {
            };
            Falling.Events += OnPositionChange;

            // continue game
            if (Settings.CurrentLevel < 0)
            {
                State = GameState.LoadProgress;
            }

            View.BackButton.onClick.AddListener(() =>
            {
                EventManager.Instance.Events.Invoke(new ApplicationCommand
                {
                    Type = CommandType.MainMenu
                });
            });
        }