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; } }
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); } }