示例#1
0
        public Stage(ContentManager content, BoxingViewportAdapter view)
        {
            camera.Pos = new Vector2(0, 0);
            xmlMap.Load("Content/maps/teste.tmx");

            /* Makes a list of every layer in the given stage */
            xmlLayers = xmlMap.GetElementsByTagName("layer");

            /* These instructions will determine the size of the stage matrix */
            mapWidth  = int.Parse(xmlMap.DocumentElement.Attributes.GetNamedItem("width").Value);
            mapHeight = int.Parse(xmlMap.DocumentElement.Attributes.GetNamedItem("height").Value);
            /*       */
            layers = new List <Tile[, ]>();

            depthSorting = new Vector2[3, 3];
            /* Makes an instance of the Texture List */
            textureList = new Texture2D[2];
            /* Sometimes the thread doesn't load everything, since it's all happening so fast */
            //Thread tFillStageMatrix = new Thread(ConvertToInt);
            //tFillStageMatrix.Start();
            LoadTextures(content);
            ChangeStage(1);
            mainCharacter = new Character(content, view);

            mainCharacter.setPosition(IsometricCoord.MapToIso(new Vector2(1, 1))); // X = J Y = I

            // The number inside this instruction tell
            // the position inside the matrix
        }
示例#2
0
        public void SetUpPosition()
        {
            Vector2 pos;

            for (int i = 0; i < mapHeight; i++)
            {
                for (int j = 0; j < mapWidth; j++)
                {
                    pos.X = j;
                    pos.Y = i;
                    pos   = IsometricCoord.MapToIso(pos);
                    layers[0][i, j].Position = pos;
                }
            }
            for (int i = 0; i < mapHeight; i++)
            {
                for (int j = 0; j < mapWidth; j++)
                {
                    pos.X = j - 1;
                    pos.Y = i - 1;
                    pos   = IsometricCoord.MapToIso(pos);
                    layers[1][i, j].Position = pos;
                }
            }
        }
示例#3
0
 public Stage(ContentManager content)
 {
     _Camera.Position = new Vector2(0, 0);
     _TextureList     = new Texture2D[4];
     LoadTextures(content);
     ChangeStage((int)_Stages.FirstStage);
     _MainCharacter = new Character(content);
     _MainCharacter.AbsolutePosition = (IsometricCoord.MapToIso(new Vector2(8, 8))); // X = J Y = I
     _MainCharacter.Neighbours       = new Vector2[3, 3];
 }
示例#4
0
 /// <summary>
 /// Updates the Character object
 /// </summary>
 /// <param name="keyboardState">Receives the keyboard state as parameter to determine what action to do.</param>
 public void Update(KeyboardState keyboardState)
 {
     _MatrixPosition = IsometricCoord.IsoToMap(_AbsolutePosition);
 }
示例#5
0
        public void Update(KeyboardState ks, MouseState ms)
        {
            previousMouseScrollWheelValue = currentMouseScrollWheelValue;
            currentMouseScrollWheelValue  = ms.ScrollWheelValue;

            if (ks.IsKeyDown(Keys.D1))
            {
                mainCharacter.setPosition(IsometricCoord.MapToIso(new Vector2(1, 1)));
            }
            if (ks.IsKeyDown(Keys.D2))
            {
                mainCharacter.setPosition(IsometricCoord.MapToIso(new Vector2(18, 1)));
            }
            if (ks.IsKeyDown(Keys.D3))
            {
                mainCharacter.setPosition(IsometricCoord.MapToIso(new Vector2(15, 5)));
            }

            if (ks.IsKeyDown(Keys.W))
            {
                camera.Move(new Vector2(0, -2));
            }
            if (ks.IsKeyDown(Keys.S))
            {
                camera.Move(new Vector2(0, 2));
            }
            if (ks.IsKeyDown(Keys.A))
            {
                camera.Move(new Vector2(-2, 0));
            }
            if (ks.IsKeyDown(Keys.D))
            {
                camera.Move(new Vector2(2, 0));
            }
            if (currentMouseScrollWheelValue > previousMouseScrollWheelValue)
            {
                camera.Zoom = camera.Zoom + 0.05f;
            }
            if (currentMouseScrollWheelValue < previousMouseScrollWheelValue)
            {
                camera.Zoom = camera.Zoom - 0.05f;
            }

            if (ks.IsKeyDown(Keys.Up))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = mainCharacter.getPosition() - new Vector2(0, 1);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y > 0 && matrixAux.X > 0 && !doesItCollide(matrixAux))
                {
                    mainCharacter.setPosition(new Vector2(mainCharacter.getPosition().X, mainCharacter.getPosition().Y - Character.speed));
                }
            }

            if (ks.IsKeyDown(Keys.Right))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = mainCharacter.getPosition() + new Vector2(1, 0);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y > 0 && matrixAux.X < mapWidth - 1 && !doesItCollide(matrixAux))
                {
                    mainCharacter.setPosition(new Vector2(mainCharacter.getPosition().X + Character.speed, mainCharacter.getPosition().Y));
                }
            }

            if (ks.IsKeyDown(Keys.Down))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = mainCharacter.getPosition() + new Vector2(0, 1);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y < mapHeight - 1 && matrixAux.X < mapWidth - 1 && !doesItCollide(matrixAux))
                {
                    mainCharacter.setPosition(new Vector2(mainCharacter.getPosition().X, mainCharacter.getPosition().Y + Character.speed));
                }
            }

            if (ks.IsKeyDown(Keys.Left))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = mainCharacter.getPosition() - new Vector2(1, 0);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.X > 0 && matrixAux.Y < mapHeight - 1 && !doesItCollide(matrixAux))
                {
                    mainCharacter.setPosition(new Vector2(mainCharacter.getPosition().X - Character.speed, mainCharacter.getPosition().Y));
                }
            }

            depthSorting[0, 0] = new Vector2(mainCharacter.getMatrixPosition().X - 1, mainCharacter.getMatrixPosition().Y - 1);
            depthSorting[0, 1] = new Vector2(mainCharacter.getMatrixPosition().X, mainCharacter.getMatrixPosition().Y - 1);
            depthSorting[0, 2] = new Vector2(mainCharacter.getMatrixPosition().X + 1, mainCharacter.getMatrixPosition().Y - 1);
            depthSorting[1, 0] = new Vector2(mainCharacter.getMatrixPosition().X - 1, mainCharacter.getMatrixPosition().Y);
            depthSorting[1, 1] = new Vector2(mainCharacter.getMatrixPosition().X, mainCharacter.getMatrixPosition().Y);
            depthSorting[1, 2] = new Vector2(mainCharacter.getMatrixPosition().X + 1, mainCharacter.getMatrixPosition().Y);
            depthSorting[2, 0] = new Vector2(mainCharacter.getMatrixPosition().X - 1, mainCharacter.getMatrixPosition().Y + 1);
            depthSorting[2, 1] = new Vector2(mainCharacter.getMatrixPosition().X, mainCharacter.getMatrixPosition().Y + 1);
            depthSorting[2, 2] = new Vector2(mainCharacter.getMatrixPosition().X + 1, mainCharacter.getMatrixPosition().Y + 1);
        }
示例#6
0
        /// <summary>
        /// Updates the stage logic
        /// </summary>
        /// <param name="ks">Keyboard state.</param>
        /// <param name="ms">Mouse state.</param>
        public void Update(KeyboardState ks, MouseState ms)
        {
            _PreviousMouseScrollWheelValue = _CurrentMouseScrollWheelValue;
            _CurrentMouseScrollWheelValue  = ms.ScrollWheelValue;

            #region Camera
            if (ks.IsKeyDown(Keys.W))
            {
                _Camera.Move(new Vector2(0, -Camera._Speed));
            }
            if (ks.IsKeyDown(Keys.S))
            {
                _Camera.Move(new Vector2(0, Camera._Speed));
            }
            if (ks.IsKeyDown(Keys.A))
            {
                _Camera.Move(new Vector2(-Camera._Speed, 0));
            }
            if (ks.IsKeyDown(Keys.D))
            {
                _Camera.Move(new Vector2(Camera._Speed, 0));
            }
            if (_CurrentMouseScrollWheelValue > _PreviousMouseScrollWheelValue)
            {
                _Camera.Zoom = _Camera.Zoom + 0.05f;
            }
            if (_CurrentMouseScrollWheelValue < _PreviousMouseScrollWheelValue)
            {
                _Camera.Zoom = _Camera.Zoom - 0.05f;
            }
            #endregion

            #region Character (To be moved)
            if (ks.IsKeyDown(Keys.Up))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = _MainCharacter.AbsolutePosition - new Vector2(0, 1);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y > 0 && matrixAux.X > 0 && !doesItCollide(matrixAux))
                {
                    _MainCharacter.AbsolutePosition = (new Vector2(_MainCharacter.AbsolutePosition.X, _MainCharacter.AbsolutePosition.Y - _MainCharacter.Speed));
                }
            }

            if (ks.IsKeyDown(Keys.Right))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = _MainCharacter.AbsolutePosition + new Vector2(1, 0);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y > 0 && matrixAux.X < _MapSize.X - 1 && !doesItCollide(matrixAux))
                {
                    _MainCharacter.AbsolutePosition = (new Vector2(_MainCharacter.AbsolutePosition.X + _MainCharacter.Speed, _MainCharacter.AbsolutePosition.Y));
                }
            }

            if (ks.IsKeyDown(Keys.Down))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = _MainCharacter.AbsolutePosition + new Vector2(0, 1);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y < _MapSize.Y - 1 && matrixAux.X < _MapSize.X - 1 && !doesItCollide(matrixAux))
                {
                    _MainCharacter.AbsolutePosition = (new Vector2(_MainCharacter.AbsolutePosition.X, _MainCharacter.AbsolutePosition.Y + _MainCharacter.Speed));
                }
            }

            if (ks.IsKeyDown(Keys.Left))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = _MainCharacter.AbsolutePosition - new Vector2(1, 0);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.X > 0 && matrixAux.Y < _MapSize.Y - 1 && !doesItCollide(matrixAux))
                {
                    _MainCharacter.AbsolutePosition = (new Vector2(_MainCharacter.AbsolutePosition.X - _MainCharacter.Speed, _MainCharacter.AbsolutePosition.Y));
                }
            }
            #endregion

            #region Updating the Main Characters Neighbours
            _MainCharacter.Neighbours[0, 0] = new Vector2(_MainCharacter.MatrixPosition.X - 1, _MainCharacter.MatrixPosition.Y - 1);
            _MainCharacter.Neighbours[0, 1] = new Vector2(_MainCharacter.MatrixPosition.X, _MainCharacter.MatrixPosition.Y - 1);
            _MainCharacter.Neighbours[0, 2] = new Vector2(_MainCharacter.MatrixPosition.X + 1, _MainCharacter.MatrixPosition.Y - 1);
            _MainCharacter.Neighbours[1, 0] = new Vector2(_MainCharacter.MatrixPosition.X - 1, _MainCharacter.MatrixPosition.Y);
            _MainCharacter.Neighbours[1, 1] = new Vector2(_MainCharacter.MatrixPosition.X, _MainCharacter.MatrixPosition.Y);
            _MainCharacter.Neighbours[1, 2] = new Vector2(_MainCharacter.MatrixPosition.X + 1, _MainCharacter.MatrixPosition.Y);
            _MainCharacter.Neighbours[2, 0] = new Vector2(_MainCharacter.MatrixPosition.X - 1, _MainCharacter.MatrixPosition.Y + 1);
            _MainCharacter.Neighbours[2, 1] = new Vector2(_MainCharacter.MatrixPosition.X, _MainCharacter.MatrixPosition.Y + 1);
            _MainCharacter.Neighbours[2, 2] = new Vector2(_MainCharacter.MatrixPosition.X + 1, _MainCharacter.MatrixPosition.Y + 1);
            #endregion
        }