Beispiel #1
0
        internal void Update(GameState state, bool currentLeftMouseButtonState, TetraVex tetraVexInstance)
        {
            int baseX       = this.gridSize * TetraVex.TileSize;
            int baseY       = TetraVex.TileSize + this.gridSize * TetraVex.TileSize;
            int hoverButton = -1;

            if (state.MouseY >= baseY && state.MouseY < baseY + ButtonSize && state.MouseX >= baseX && state.MouseX < baseX + 4 * ButtonSize)
            {
                hoverButton = (state.MouseX - baseX) / ButtonSize;
            }

            if (!state.LeftMouseButtonDown && currentLeftMouseButtonState)
            {
                this.selectedButton     = hoverButton >= 0 ? hoverButton : -1;
                this.selectedButtonDown = true;
            }
            else if (state.LeftMouseButtonDown && currentLeftMouseButtonState)
            {
                this.selectedButtonDown = hoverButton == this.selectedButton;
            }
            else if (state.LeftMouseButtonDown && !currentLeftMouseButtonState)
            {
                if (hoverButton == this.selectedButton && this.selectedButton >= 0)
                {
                    tetraVexInstance.SetSize(3 + this.selectedButton);
                }

                this.selectedButton     = -1;
                this.selectedButtonDown = false;
            }
        }
Beispiel #2
0
 public static void RunGame()
 {
     using (TetraVex game = new TetraVex())
     {
         game.Run();
     }
 }
Beispiel #3
0
        internal void Draw(GameState gameState, TetraVex tetraVexInstance)
        {
            for (int row = 0; row < this.gridSize; row++)
            {
                for (int column = 0; column < this.gridSize; column++)
                {
                    int  index     = column + row * this.gridSize;
                    Tile leftTile  = this.leftGrid[index];
                    Tile rightTile = this.rightGrid[index];


                    int offsetX = 0, offsetY = 0;

                    if (tetraVexInstance.State.DiscoMode)
                    {
                        offsetX = tetraVexInstance.Random.Next(10) - 5;
                        offsetY = tetraVexInstance.Random.Next(10) - 5;
                    }

                    gameState.SpriteBatch.Draw(slotTexture, new Rectangle(TetraVex.BorderSize + column * TetraVex.TileSize + offsetX, TetraVex.BorderSize + row * TetraVex.TileSize + offsetY, TetraVex.TileSize, TetraVex.TileSize), Color.White);
                    gameState.SpriteBatch.Draw(slotTexture, new Rectangle(TetraVex.BorderSize + TetraVex.TileSize + (this.gridSize + column) * TetraVex.TileSize + offsetX, TetraVex.BorderSize + row * TetraVex.TileSize + offsetY, TetraVex.TileSize, TetraVex.TileSize), Color.White);

                    if (leftTile != null)
                    {
                        leftTile.Draw(gameState.SpriteBatch, TetraVex.BorderSize + column * TetraVex.TileSize, TetraVex.BorderSize + row * TetraVex.TileSize, leftTile == gameState.HoverTile && !gameState.Locked, tetraVexInstance);
                    }

                    if (rightTile != null)
                    {
                        rightTile.Draw(gameState.SpriteBatch, TetraVex.BorderSize + TetraVex.TileSize + (this.gridSize + column) * TetraVex.TileSize, TetraVex.BorderSize + row * TetraVex.TileSize, rightTile == gameState.HoverTile && !gameState.Locked, tetraVexInstance);
                    }
                }
            }

            int offsetX2 = 0, offsetY2 = 0;

            if (tetraVexInstance.State.DiscoMode)
            {
                offsetX2 = tetraVexInstance.Random.Next(10) - 5;
                offsetY2 = tetraVexInstance.Random.Next(10) - 5;
            }

            if (gameState.DropBoard >= 0)
            {
                gameState.SpriteBatch.Draw(dropTexture, new Rectangle(TetraVex.BorderSize + gameState.DropColumn * TetraVex.TileSize + gameState.DropBoard * (this.gridSize + 1) * TetraVex.TileSize + offsetX2, TetraVex.BorderSize + gameState.DropRow * TetraVex.TileSize + offsetY2, TetraVex.TileSize, TetraVex.TileSize), Color.White);
            }

            if (gameState.FloatingTile != null)
            {
                gameState.FloatingTile.Draw(gameState.SpriteBatch, gameState.FloatingTileX, gameState.FloatingTileY, true, tetraVexInstance);
            }
        }
Beispiel #4
0
        internal void Draw(GameState state, TetraVex tetraVexInstance)
        {
            int baseX = this.gridSize * TetraVex.TileSize;
            int baseY = TetraVex.TileSize + this.gridSize * TetraVex.TileSize;

            int offsetX = 0, offsetY = 0;

            if (tetraVexInstance.State.DiscoMode)
            {
                offsetX = tetraVexInstance.Random.Next(10) - 5;
                offsetY = tetraVexInstance.Random.Next(10) - 5;
            }

            state.SpriteBatch.Draw(squareButtonBase, new Rectangle(baseX + offsetX, baseY + offsetY, ButtonSize, ButtonSize), Color.White);

            if (tetraVexInstance.State.DiscoMode)
            {
                offsetX = tetraVexInstance.Random.Next(10) - 5;
                offsetY = tetraVexInstance.Random.Next(10) - 5;
            }

            state.SpriteBatch.Draw(squareButtonBase, new Rectangle(baseX + ButtonSize + offsetX, baseY + offsetY, ButtonSize, ButtonSize), Color.White);

            if (tetraVexInstance.State.DiscoMode)
            {
                offsetX = tetraVexInstance.Random.Next(10) - 5;
                offsetY = tetraVexInstance.Random.Next(10) - 5;
            }

            state.SpriteBatch.Draw(squareButtonBase, new Rectangle(baseX + 2 * ButtonSize + offsetX, baseY + offsetY, ButtonSize, ButtonSize), Color.White);

            if (tetraVexInstance.State.DiscoMode)
            {
                offsetX = tetraVexInstance.Random.Next(10) - 5;
                offsetY = tetraVexInstance.Random.Next(10) - 5;
            }

            state.SpriteBatch.Draw(squareButtonBase, new Rectangle(baseX + 3 * ButtonSize + offsetX, baseY + offsetY, ButtonSize, ButtonSize), Color.White);

            if (tetraVexInstance.State.DiscoMode)
            {
                offsetX = tetraVexInstance.Random.Next(10) - 5;
                offsetY = tetraVexInstance.Random.Next(10) - 5;
            }

            if (this.selectedButtonDown && this.selectedButton >= 0)
            {
                state.SpriteBatch.Draw(squareButtonDown, new Rectangle(baseX + this.selectedButton * ButtonSize + offsetX, baseY + offsetY, ButtonSize, ButtonSize), Color.White);
            }
        }
Beispiel #5
0
        internal void Draw(SpriteBatch spriteBatch, int x, int y, bool hoverEffect, TetraVex tetraVexInstance)
        {
            int offsetX = 0, offsetY = 0;

            if (tetraVexInstance.State.DiscoMode)
            {
                offsetX = tetraVexInstance.Random.Next(10) - 5;
                offsetY = tetraVexInstance.Random.Next(10) - 5;
            }

            spriteBatch.Draw(backgroundTexture, new Rectangle(x + offsetX, y + offsetY, TetraVex.TileSize, TetraVex.TileSize), Color.White);
            spriteBatch.Draw(topTexture, new Rectangle(x + offsetX, y + offsetY, TetraVex.TileSize, TetraVex.TileSize), colors[this.TopValue]);
            spriteBatch.Draw(leftTexture, new Rectangle(x + offsetX, y + offsetY, TetraVex.TileSize, TetraVex.TileSize), colors[this.LeftValue]);
            spriteBatch.Draw(bottomTexture, new Rectangle(x + offsetX, y + offsetY, TetraVex.TileSize, TetraVex.TileSize), colors[this.BottomValue]);
            spriteBatch.Draw(rightTexture, new Rectangle(x + offsetX, y + offsetY, TetraVex.TileSize, TetraVex.TileSize), colors[this.RightValue]);

            if (hoverEffect)
            {
                spriteBatch.Draw(hoverTexture, new Rectangle(x + offsetX, y + offsetY, TetraVex.TileSize, TetraVex.TileSize), Color.White);
            }
        }