Ejemplo n.º 1
0
        public IBoard Create(int size_x, int size_y)
        {
            figureItemsRandomInstancer = new DefaultFigureItemsInstancer();

            IFigureItem[,] figureItemsTable = new IFigureItem[size_x, size_y];

            for (int i = 0; i < size_x; i++)
            {
                for (int j = 0; j < size_y; j++)
                {
                    figureItemsTable[i, j] = figureItemsRandomInstancer.InstantiateItem();
                }
            }

            CheckForMatches(figureItemsTable);

            Queue <IFigureItem>[] figureItemBuffers = new Queue <IFigureItem> [size_x];
            for (int i = 0; i < size_x; i++)
            {
                figureItemBuffers[i] = new Queue <IFigureItem>();
                for (int j = 0; j < size_y; j++)
                {
                    figureItemBuffers[i].Enqueue(figureItemsRandomInstancer.InstantiateItem());
                }
            }

            return(new DefaultBoard(figureItemsTable, figureItemBuffers));
        }
        private void InitFigureItems()
        {
            FigureItems = new IFigureItem[BoardSize_X, BoardSize_Y];
            for (int i = 0; i < BoardSize_X; i++)
            {
                for (int j = 0; j < BoardSize_Y; j++)
                {
                    GameObject figure_item_obj;

                    switch (gameSession.Board.FigureItemsTable[i, j].FigureType)
                    {
                    case Model.FigureItemType.banana:
                        figure_item_obj = GameObject.Instantiate(preload.bananaFigurePrefab) as GameObject;
                        break;

                    case Model.FigureItemType.cake:
                        figure_item_obj = GameObject.Instantiate(preload.cakeFigurePrefab) as GameObject;
                        break;

                    case Model.FigureItemType.caramel:
                        figure_item_obj = GameObject.Instantiate(preload.caramelFigurePrefab) as GameObject;
                        break;

                    case Model.FigureItemType.golden_star:
                        figure_item_obj = GameObject.Instantiate(preload.goldenStarFigurePrefab) as GameObject;
                        break;

                    case Model.FigureItemType.icecream:
                        figure_item_obj = GameObject.Instantiate(preload.iceCreamFigurePrefab) as GameObject;
                        break;

                    case Model.FigureItemType.purple_cake:
                        figure_item_obj = GameObject.Instantiate(preload.purpleCakeFigurePrefab) as GameObject;
                        break;

                    default:
                        throw new System.NotImplementedException("InitFigureItems function not implemented completely!");
                    }

                    figure_item_obj.name = "figure_item";
                    IFigureItem figure_item = figure_item_obj.GetComponent <IFigureItem>();
                    FigureItems[i, j] = figure_item;

                    figure_item.InitItem(i, j, gameSession.Board.FigureItemsTable[i, j].FigureType, FigureLocation.board);
                    figure_item_obj.transform.SetParent(gmst.figureItemsParent.transform);
                    Vector3 pos = GetBoardWorldPosition(i, j);
                    figure_item_obj.transform.position = new Vector3(pos.x, pos.y, pos.z - 0.1f);
                    boardWorldPosition.ScaleItemSprite(figure_item_obj.GetComponent <SpriteRenderer>());
                }
            }
        }
        private GameObject InstantiateQueueFigureItem(Model.FigureItemType figureItemType, int x_position, int y_position)
        {
            GameObject figure_item_obj;

            switch (figureItemType)
            {
            case Model.FigureItemType.banana:
                figure_item_obj = GameObject.Instantiate(preload.bananaFigurePrefab) as GameObject;
                break;

            case Model.FigureItemType.cake:
                figure_item_obj = GameObject.Instantiate(preload.cakeFigurePrefab) as GameObject;
                break;

            case Model.FigureItemType.caramel:
                figure_item_obj = GameObject.Instantiate(preload.caramelFigurePrefab) as GameObject;
                break;

            case Model.FigureItemType.golden_star:
                figure_item_obj = GameObject.Instantiate(preload.goldenStarFigurePrefab) as GameObject;
                break;

            case Model.FigureItemType.icecream:
                figure_item_obj = GameObject.Instantiate(preload.iceCreamFigurePrefab) as GameObject;
                break;

            case Model.FigureItemType.purple_cake:
                figure_item_obj = GameObject.Instantiate(preload.purpleCakeFigurePrefab) as GameObject;
                break;

            default:
                throw new System.NotImplementedException("InitFigureItems function not implemented completely!");
            }

            figure_item_obj.name = "figure_item";

            IFigureItem figure_item = figure_item_obj.GetComponent <IFigureItem>();

            figureQueues[x_position].Enqueue(figure_item);
            figure_item.InitItem(x_position, y_position, figureItemType, FigureLocation.queue);
            figure_item_obj.transform.SetParent(gmst.figureItemsParent.transform);
            Vector3 pos = GetBoardWorldPosition(x_position, y_position + BoardSize_Y);

            figure_item_obj.transform.position = new Vector3(pos.x, pos.y, pos.z);
            boardWorldPosition.ScaleItemSprite(figure_item_obj.GetComponent <SpriteRenderer>());

            return(figure_item_obj);
        }
        private void ExecuteHandleMove(MoveSet moveSet)
        {
            if (moveSet.fromBoardToBoardMoveHandle.fromPosition.x != -1)
            {
                var cmd = moveSet.fromBoardToBoardMoveHandle;
                FigureItems[cmd.fromPosition.x, cmd.fromPosition.y].MoveFigureToPosition(cmd.toPosition.x, cmd.toPosition.y);
                FigureItems[cmd.toPosition.x, cmd.toPosition.y].MoveFigureToPosition(cmd.fromPosition.x, cmd.fromPosition.y);

                IFigureItem temp = FigureItems[cmd.fromPosition.x, cmd.fromPosition.y];
                FigureItems[cmd.fromPosition.x, cmd.fromPosition.y] = FigureItems[cmd.toPosition.x, cmd.toPosition.y];
                FigureItems[cmd.toPosition.x, cmd.toPosition.y]     = temp;
                boardUpdateStage = BoardUpdateStage.HandleMove_WaitForEnd;
            }
            else
            {
                boardUpdateStage = BoardUpdateStage.DestroyMatches;
            }
        }
Ejemplo n.º 5
0
        public bool TryMoveFigure(Vec2 from, FigureMoveType figureMoveType)
        {
            Vec2 to = from;

            switch (figureMoveType)
            {
            case FigureMoveType.Left:
                to.x--;
                break;

            case FigureMoveType.Top:
                to.y++;
                break;

            case FigureMoveType.Right:
                to.x++;
                break;

            case FigureMoveType.Bottom:
                to.y--;
                break;

            default:
                throw new System.NotImplementedException("TryMoveFigure function not implemented completely!");
            }

            if (FigureItemsTable[to.x, to.y].FigureType != FigureItemType.no_access)
            {
                IFigureItem temp = FigureItemsTable[from.x, from.y];
                FigureItemsTable[from.x, from.y] = FigureItemsTable[to.x, to.y];
                FigureItemsTable[to.x, to.y]     = temp;
                return(true);
            }
            else
            {
                return(false);
            }
        }