Ejemplo n.º 1
0
    /// <summary>
    /// Generates a new board.
    /// </summary>
    public void GenerateBoard()
    {
        // Base case: no tile prefab.
        if (tilePrefab == null)
        {
            Debug.LogError("Missing reference to tile prefab.");
            return;
        }

        // Delete the old board object.
        if (board != null)
        {
            GameObject.DestroyImmediate(board.gameObject);
        }

        // Construct a board definition.
        BoardDefinition generatedBoardDefinition = new BoardDefinition(20, 20);

        // Construct the board GameObject.
        GameObject boardObject = new GameObject("Generated Board");

        boardObject.transform.SetParent(transform);
        board = boardObject.AddComponent <BoardController> ();

        // Load the tiles onto the board.
        board.LoadBoard(generatedBoardDefinition, tilePrefab);
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Loads the board given the definition and the tile prefab.
    /// </summary>
    /// <param name="definition">Definition.</param>
    public void LoadBoard(BoardDefinition definition, TileController tilePrefab)
    {
        // Cache the board dimensions.
        this.Width  = definition.Width;
        this.Height = definition.Height;

        // Instantiate new tiles layer.
        GameObject tilesLayerObject = new GameObject("Tiles");

        tilesLayerObject.transform.SetParent(transform);

        // Calculate tile dimensions.
        BoxCollider2D bounds     = tilePrefab.transform.FindChild("Sprite").GetComponent <BoxCollider2D> ();
        float         tileWidth  = bounds.size.x;
        float         tileHeight = bounds.size.y;

        // Initialize the tiles on the board.
        for (int x = 0; x < this.Width; x++)
        {
            for (int y = 0; y < this.Width; y++)
            {
                // Instantiate tile GameObject.
                TileController tile = Instantiate(tilePrefab) as TileController;
                tile.transform.SetParent(tilesLayerObject.transform);

                // Initialize and position the tile.
                tile.Initialize(definition [x, y], tileWidth, tileHeight);
            }
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Loads the board given the definition and the tile prefab.
    /// </summary>
    /// <param name="definition">Definition.</param>
    public void LoadBoard(BoardDefinition definition, TileController tilePrefab)
    {
        // Cache the board dimensions.
        this.Width = definition.Width;
        this.Height = definition.Height;

        // Instantiate new tiles layer.
        GameObject tilesLayerObject = new GameObject ("Tiles");
        tilesLayerObject.transform.SetParent (transform);

        // Calculate tile dimensions.
        BoxCollider2D bounds = tilePrefab.transform.FindChild ("Sprite").GetComponent<BoxCollider2D> ();
        float tileWidth = bounds.size.x;
        float tileHeight = bounds.size.y;

        // Initialize the tiles on the board.
        for (int x = 0; x < this.Width; x++) {
            for (int y = 0; y < this.Width; y++) {

                // Instantiate tile GameObject.
                TileController tile = Instantiate (tilePrefab) as TileController;
                tile.transform.SetParent (tilesLayerObject.transform);

                // Initialize and position the tile.
                tile.Initialize (definition [x, y], tileWidth, tileHeight);
            }
        }
    }
Ejemplo n.º 4
0
        internal void Clear()
        {
            var board = new BoardDefinition()
            {
                BoardSize    = Board.BoardSize,
                EndPointList = new List <Endpoints>()
            };

            InitializeBoard(board);
        }
Ejemplo n.º 5
0
        private static HidReport PrepareReport(int addr, byte[] data, BoardDefinition BoardDef)
        {
            var report = new HidReport(BoardDef.BlockSize + BoardDef.DataOffset + 1);

            report.ReportId = 0;

            // Copy address bytes into report. Use function stored in board definition
            BoardDef.AddrCopy(report.Data, BitConverter.GetBytes(addr));

            // Copy datablock into report
            data.CopyTo(report.Data, BoardDef.DataOffset);

            return(report);
        }
Ejemplo n.º 6
0
        public NewMatchState(IAnarkanoidGame arkanoidGame, IKeysConfiguration keysConfiguration) : base(arkanoidGame, keysConfiguration)
        {
            AnarkanoidGame.ComponentManager.Clear();
            AnarkanoidGame.CurrentLives = Configuration.InitialLives;

            _levelText = new ShowText(Configuration, new Size(Configuration.ScreenSize.Width, Configuration.ScreenSize.Height))
            {
                Position = new Microsoft.Xna.Framework.Vector2(150, 120)
            };
            AnarkanoidGame.ComponentManager.AddText(_levelText, string.Format(LEVEL_TEXT, AnarkanoidGame.CurrentStage + 1));

            _text = new ShowText(Configuration, new Size(Configuration.ScreenSize.Width, Configuration.ScreenSize.Height))
            {
                Position = new Microsoft.Xna.Framework.Vector2(150, 150)
            };
            AnarkanoidGame.ComponentManager.AddText(_text, string.Format(TEXT_FORMAT, 3 - _totalTicks));

            Components.SpaceShip.Reset();
            AnarkanoidGame.ComponentManager.AddSpaceShip(AnarkanoidGame.ComponentManager.SpaceShip);

            var ball = AnarkanoidGame.ComponentManager.BallRepository.GetBasicBall();

            ball.Reset();
            AnarkanoidGame.ComponentManager.AddBall(ball);

            var boardFileName   = Environment.CurrentDirectory + "\\Boards\\" + AnarkanoidGame.ComponentManager.Configuration.Boards[AnarkanoidGame.CurrentStage] + ".stage";
            var boardDefinition = new BoardDefinition(boardFileName);

            AnarkanoidGame.ComponentManager.LoadBoard(boardDefinition);

            _timer          = new Timer(1000);
            _timer.Elapsed += _timer_Elapsed;
            _timer.Start();
            _returnState = this;

            CommandPerKey.Add(Keys.Left, CommandsFactory.GetMoveSpaceShipToLeftCommand());
            CommandPerKey.Add(Keys.Right, CommandsFactory.GetMoveSpaceShipToRightCommand());
        }
Ejemplo n.º 7
0
        internal void InitializeBoard(BoardDefinition boardDefinition)
        {
            Board = boardDefinition;

            Width  = Board.BoardSize;
            Height = Width;
            Puzzle = Board.EndPointList;
            Cells  = new List <Cell>();
            for (int i = 0; i < BoardSize; ++i)
            {
                Cells.Add(new Cell(i)
                {
                });
            }

            foreach (var endPoint in Puzzle)
            {
                Cells[PointToIndex(endPoint.Pt1)].MakeEndpoint(endPoint.FlowColor);
                Cells[PointToIndex(endPoint.Pt2)].MakeEndpoint(endPoint.FlowColor);
            }

            OnPropertyChanged(nameof(Cells));
        }
Ejemplo n.º 8
0
    /// <summary>
    /// Generates a new board.
    /// </summary>
    public void GenerateBoard()
    {
        // Base case: no tile prefab.
        if (tilePrefab == null) {
            Debug.LogError ("Missing reference to tile prefab.");
            return;
        }

        // Delete the old board object.
        if (board != null) {
            GameObject.DestroyImmediate (board.gameObject);
        }

        // Construct a board definition.
        BoardDefinition generatedBoardDefinition = new BoardDefinition (20, 20);

        // Construct the board GameObject.
        GameObject boardObject = new GameObject ("Generated Board");
        boardObject.transform.SetParent (transform);
        board = boardObject.AddComponent<BoardController> ();

        // Load the tiles onto the board.
        board.LoadBoard (generatedBoardDefinition, tilePrefab);
    }
Ejemplo n.º 9
0
        private BoardDefinition GetGameSetup()
        {
            BoardDefinition bd = new BoardDefinition()
            {
                BoardSize    = 8,
                EndPointList = new List <Endpoints>
                {
                    new Endpoints()
                    {
                        FlowColor = Color.Yellow, Pt1 = new Point(4, 0), Pt2 = new Point(7, 1)
                    },
                    new Endpoints()
                    {
                        FlowColor = Color.Cyan, Pt1 = new Point(1, 1), Pt2 = new Point(2, 5)
                    },
                    new Endpoints()
                    {
                        FlowColor = Color.Red, Pt1 = new Point(1, 2), Pt2 = new Point(4, 4)
                    },
                    new Endpoints()
                    {
                        FlowColor = Color.Orange, Pt1 = new Point(7, 3), Pt2 = new Point(4, 5)
                    },
                    new Endpoints()
                    {
                        FlowColor = Color.Blue, Pt1 = new Point(5, 4), Pt2 = new Point(6, 6)
                    },
                    new Endpoints()
                    {
                        FlowColor = Color.Green, Pt1 = new Point(1, 6), Pt2 = new Point(5, 6)
                    },
                }
            };

            return(bd);
        }
Ejemplo n.º 10
0
        private static HidReport PrepareReport(int addr, byte[] data, BoardDefinition BoardDef)
        {
            var report = new HidReport(BoardDef.BlockSize + BoardDef.DataOffset + 1);
            report.ReportId = 0;

            // Copy address bytes into report. Use function stored in board definition
            BoardDef.AddrCopy(report.Data, BitConverter.GetBytes(addr));

            // Copy datablock into report
            data.CopyTo(report.Data, BoardDef.DataOffset);

            return report;
        }