Beispiel #1
0
        public void interactWithAdjacentObj()
        {
            if (adjacentObject != null)
            {
                //do stuff
                foreach (resource.resourceTypes res in adjacentObject.getToolsRequiredForHarvesting())
                {
                    if (inv.contains(res, 1))
                    {
                        foreach (resource.resourceTypes addRes in adjacentObject.getTypesOfResoucesProvided())
                        {
                            inv.addToInventory(addRes, adjacentObject.getAmountOfResourceProvided());
                        }
                    }
                }

                adjacentObject.Destroy();
                adjacentObject = null;
            }
        }
Beispiel #2
0
 public void setAdjacantObject(ConsumableMapObject obj)
 {
     adjacentObject = obj;
 }
Beispiel #3
0
        bool willCollide(Vector2 positionToMoveTo, Texture2D movingObject)
        {
            Vector2 currentViewport = currentMap.getViewport();
            //Vector2 moveToRelativeToScreen = new Vector2(positionToMoveTo.X - currentViewport.X, positionToMoveTo.Y - currentViewport.Y);

            Matrix movingObjectMatrix = Matrix.CreateTranslation(positionToMoveTo.X, positionToMoveTo.Y, 0);
            Color[,] movingObjectColours = Helpers.TextureTo2DArray(movingObject);

            //check for consumable objects
            foreach (ConsumableMapObject obj in currentMap.getNonEnterableObjects())
            {
                Vector2 objPositionRelativeToScreen = new Vector2(obj.getLocation().X - currentViewport.X, obj.getLocation().Y - currentViewport.Y);
                Matrix objectMatrix = Matrix.CreateTranslation(objPositionRelativeToScreen.X, objPositionRelativeToScreen.Y, 0);

                Color[,] nonEnterableObjectColours = Helpers.TextureTo2DArray(obj.getTexture());

                Vector2 collisionPoint = Helpers.TexturesCollide(nonEnterableObjectColours, objectMatrix, movingObjectColours, movingObjectMatrix);

                if (collisionPoint.X != -1)
                {
                    collidingObject = obj;
                    currentPlayer.setAdjacantObject(obj);
                    return true;
                }
            }

            //check for enterable objects.
            foreach (EnterableMapObject obj in currentMap.getEnterableObjects())
            {
                Vector2 objPositionRelativeToScreen = new Vector2(obj.getLocation().X - currentViewport.X, obj.getLocation().Y - currentViewport.Y);
                Matrix objectMatrix = Matrix.CreateTranslation(objPositionRelativeToScreen.X, objPositionRelativeToScreen.Y, 0);

                Color[,] nonEnterableObjectColours = Helpers.TextureTo2DArray(obj.getTexture());

                Vector2 collisionPoint = Helpers.TexturesCollide(nonEnterableObjectColours, objectMatrix, movingObjectColours, movingObjectMatrix);

                if (collisionPoint.X != -1)
                {
                    Vector2 actualObjectPosition = new Vector2((positionToMoveTo.X + currentViewport.X), positionToMoveTo.Y + currentViewport.Y);
                    if (obj.canEnterFromPosition(actualObjectPosition))
                    {
                        worldMapPos = new Vector2((obj.getLocation().X + obj.getTexture().Width / 2) - currentViewport.X, obj.getLocation().Y - currentViewport.Y + obj.getTexture().Height);
                        currentPlayer.setPosition(new Vector2(0, 0));
                        currentMap = obj.getMap();
                    }
                    return true;
                }
            }

            if (currentMap.moveWillExitMap(positionToMoveTo, movingObject))
            {
                return true;
            }

            Color[,] exitColours = Helpers.TextureTo2DArray(currentMap.getExitTexture());
            Matrix exitMatrix = Matrix.CreateTranslation(currentMap.getExitPos().X, currentMap.getExitPos().Y, 0);

            Vector2 exitCollisionPoint = Helpers.TexturesCollide(exitColours, exitMatrix, movingObjectColours, movingObjectMatrix);
            if (exitCollisionPoint.X != -1)
            {
                currentPlayer.setPosition(worldMapPos);
                currentMap = worldMap;
                return true;
            }

            //check for leaving the map
            if (positionToMoveTo.X < 0 || positionToMoveTo.Y < 0 || positionToMoveTo.X > (graphics.PreferredBackBufferWidth - currentPlayer.getTexture().Width) ||
                positionToMoveTo.Y > (graphics.PreferredBackBufferHeight - currentPlayer.getTexture().Height))
            {
                return true;
            }

            collidingObject = null;
            currentPlayer.setAdjacantObject(null);

            return false;
        }
Beispiel #4
0
        bool willCollide(Vector2 positionToMoveTo, Texture2D movingObject)
        {
            Vector2 currentViewport = currentMap.getViewport();
            //Vector2 moveToRelativeToScreen = new Vector2(positionToMoveTo.X - currentViewport.X, positionToMoveTo.Y - currentViewport.Y);

            Matrix movingObjectMatrix = Matrix.CreateTranslation(positionToMoveTo.X, positionToMoveTo.Y, 0);

            Color[,] movingObjectColours = Helpers.TextureTo2DArray(movingObject);

            //check for consumable objects
            foreach (ConsumableMapObject obj in currentMap.getNonEnterableObjects())
            {
                Vector2 objPositionRelativeToScreen = new Vector2(obj.getLocation().X - currentViewport.X, obj.getLocation().Y - currentViewport.Y);
                Matrix  objectMatrix = Matrix.CreateTranslation(objPositionRelativeToScreen.X, objPositionRelativeToScreen.Y, 0);

                Color[,] nonEnterableObjectColours = Helpers.TextureTo2DArray(obj.getTexture());

                Vector2 collisionPoint = Helpers.TexturesCollide(nonEnterableObjectColours, objectMatrix, movingObjectColours, movingObjectMatrix);

                if (collisionPoint.X != -1)
                {
                    collidingObject = obj;
                    currentPlayer.setAdjacantObject(obj);
                    return(true);
                }
            }

            //check for enterable objects.
            foreach (EnterableMapObject obj in currentMap.getEnterableObjects())
            {
                Vector2 objPositionRelativeToScreen = new Vector2(obj.getLocation().X - currentViewport.X, obj.getLocation().Y - currentViewport.Y);
                Matrix  objectMatrix = Matrix.CreateTranslation(objPositionRelativeToScreen.X, objPositionRelativeToScreen.Y, 0);

                Color[,] nonEnterableObjectColours = Helpers.TextureTo2DArray(obj.getTexture());

                Vector2 collisionPoint = Helpers.TexturesCollide(nonEnterableObjectColours, objectMatrix, movingObjectColours, movingObjectMatrix);

                if (collisionPoint.X != -1)
                {
                    Vector2 actualObjectPosition = new Vector2((positionToMoveTo.X + currentViewport.X), positionToMoveTo.Y + currentViewport.Y);
                    if (obj.canEnterFromPosition(actualObjectPosition))
                    {
                        worldMapPos = new Vector2((obj.getLocation().X + obj.getTexture().Width / 2) - currentViewport.X, obj.getLocation().Y - currentViewport.Y + obj.getTexture().Height);
                        currentPlayer.setPosition(new Vector2(0, 0));
                        currentMap = obj.getMap();
                    }
                    return(true);
                }
            }

            if (currentMap.moveWillExitMap(positionToMoveTo, movingObject))
            {
                return(true);
            }

            Color[,] exitColours = Helpers.TextureTo2DArray(currentMap.getExitTexture());
            Matrix exitMatrix = Matrix.CreateTranslation(currentMap.getExitPos().X, currentMap.getExitPos().Y, 0);

            Vector2 exitCollisionPoint = Helpers.TexturesCollide(exitColours, exitMatrix, movingObjectColours, movingObjectMatrix);

            if (exitCollisionPoint.X != -1)
            {
                currentPlayer.setPosition(worldMapPos);
                currentMap = worldMap;
                return(true);
            }

            //check for leaving the map
            if (positionToMoveTo.X < 0 || positionToMoveTo.Y < 0 || positionToMoveTo.X > (graphics.PreferredBackBufferWidth - currentPlayer.getTexture().Width) ||
                positionToMoveTo.Y > (graphics.PreferredBackBufferHeight - currentPlayer.getTexture().Height))
            {
                return(true);
            }

            collidingObject = null;
            currentPlayer.setAdjacantObject(null);

            return(false);
        }
Beispiel #5
0
 public void setAdjacantObject(ConsumableMapObject obj)
 {
     adjacentObject = obj;
 }
Beispiel #6
0
        public void interactWithAdjacentObj()
        {
            if (adjacentObject != null)
            {
                //do stuff
                foreach (resource.resourceTypes res in adjacentObject.getToolsRequiredForHarvesting())
                {
                    if (inv.contains(res, 1))
                    {
                        foreach (resource.resourceTypes addRes in adjacentObject.getTypesOfResoucesProvided())
                        {
                            inv.addToInventory(addRes, adjacentObject.getAmountOfResourceProvided());
                        }
                    }
                }

                adjacentObject.Destroy();
                adjacentObject = null;
            }
        }