public Camera(TipoCamera tipoCamera)
    {
        this.costoPerNotte      = 50;
        this.serviziDisponibili = new List <Servizio>
        {
            new Servizio("bibita al frigo bar", 3),
            new Servizio("Noleggio biciclette", 15),
            new Servizio("Ristorante", 30)
        };

        this.tipo = tipoCamera;

        switch (tipoCamera)
        {
        case TipoCamera.Superior:
            this.costoPerNotte = 120;
            this.serviziDisponibili.Add(new Servizio("Servizio in camera", 45));
            break;

        case TipoCamera.Suite:
            this.costoPerNotte = 250;
            this.serviziDisponibili.Add(new Servizio("Servizio in camera", 45));
            this.serviziDisponibili.Add(new Servizio("SPA", 10));
            this.serviziDisponibili.Add(new Servizio("Accesso in piscina", 7));
            break;
        }

        this.occupata = false;
    }
Exemple #2
0
 /// <summary>
 /// Inicializa os componentes da camara
 /// </summary>
 /// <param name="graphics">Instância de GraphicsDevice</param>
 static public void Initialize(GraphicsDevice graphics)
 {
     tipoCamera = TipoCamera.Free;
     //Posição inicial da camâra
     position = new Vector3(0, 0, 30);
     //Inicializar as matrizes world, view e projection
     UpdateViewMatrix();
     Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), graphics.Viewport.AspectRatio, nearPlane, farPlane);
     //Coloca o rato no centro do ecrã
     Mouse.SetPosition(graphics.Viewport.Width / 2, graphics.Viewport.Height / 2);
 }
        static public void Initialize(GraphicsDevice graphics)
        {
            tipoCamera = TipoCamera.ThirdPerson;

            //farPlane = Terrain.altura + (Terrain.altura / 2);

            farPlane = 10000f;

            //Posição inicial da camâra
            position = new Vector3(30, 20, 30);

            //Vector de direção inicial
            direction = new Vector3(0, 0, -1f);

            //Colocar o rato no centro do ecrã
            Mouse.SetPosition(graphics.Viewport.Height / 2, graphics.Viewport.Width / 2);

            //Guardar a posição original do rato
            mouseStateOriginal = Mouse.GetState();

            //Inicializar as matrizes world, view e projection
            World = Matrix.Identity;
            Foward();
            Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45),
                                                             graphics.Viewport.AspectRatio,
                                                             nearPlane,
                                                             farPlane);

            //Criar e definir os resterizerStates a utilizar para desenhar a geometria
            //SOLID
            rasterizerStateSolid                      = new RasterizerState();
            rasterizerStateSolid.CullMode             = CullMode.None;
            rasterizerStateSolid.MultiSampleAntiAlias = true;
            rasterizerStateSolid.FillMode             = FillMode.Solid;
            rasterizerStateSolid.SlopeScaleDepthBias  = 0.1f;
            graphics.RasterizerState                  = rasterizerStateSolid;

            //WIREFRAME
            rasterizerStateWireFrame                      = new RasterizerState();
            rasterizerStateWireFrame.CullMode             = CullMode.None;
            rasterizerStateWireFrame.MultiSampleAntiAlias = true;
            rasterizerStateWireFrame.FillMode             = FillMode.WireFrame;

            currentRasterizerState = rasterizerStateSolid;

            frustum = new BoundingFrustum(Matrix.Identity);
        }
        public static void Update(GameTime gameTime, GraphicsDevice graphics, Tank tank)
        {
            KeyboardState kb = Keyboard.GetState();
            MouseState mouseState = Mouse.GetState();

            if (tipoCamera == TipoCamera.SurfaceFollow || tipoCamera == TipoCamera.Free)
            {
                //Controlos do teclado
                if (kb.IsKeyDown(Keys.W))
                {
                    Foward();
                }
                if (kb.IsKeyDown(Keys.S))
                {
                    Backward();

                }
                if (kb.IsKeyDown(Keys.A))
                {
                    strafeLeft(gameTime, moveSpeed / 2);

                }
                if (kb.IsKeyDown(Keys.D))
                {
                    strafeRight(gameTime, moveSpeed / 2);
                }
                if (kb.IsKeyDown(Keys.Q))
                {
                    Up();
                }
                if (kb.IsKeyDown(Keys.E))
                {
                    Down();
                }

                if (mouseState.ScrollWheelValue > mouseStateAnterior.ScrollWheelValue)
                {
                    if (moveSpeed < 2f)
                        moveSpeed += (mouseState.ScrollWheelValue - mouseStateAnterior.ScrollWheelValue)
                            / 10000f;
                }
                if (Mouse.GetState().ScrollWheelValue < mouseStateAnterior.ScrollWheelValue)
                {
                    if (moveSpeed > 0.05f)
                        moveSpeed -= (mouseStateAnterior.ScrollWheelValue - mouseState.ScrollWheelValue)
                            / 10000f;
                }

                //Controlo da rotação com o rato
                if (mouseState != mouseStateOriginal)
                {
                    mouseMoved.X = mouseState.Position.X - mouseStateOriginal.Position.X;
                    mouseMoved.Y = mouseState.Position.Y - mouseStateOriginal.Position.Y;
                    rotateLeftRight();
                    rotateUpDown();
                    try
                    {
                        Mouse.SetPosition(graphics.Viewport.Height / 2, graphics.Viewport.Width / 2);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }

                }
            }

            if (kb.IsKeyDown(Keys.O) && !keyStateAnterior.IsKeyDown(Keys.O))
            {
                if (graphics.RasterizerState == rasterizerStateSolid)
                {
                    graphics.RasterizerState = rasterizerStateWireFrame;
                    currentRasterizerState = rasterizerStateWireFrame;
                }
                else
                {
                    graphics.RasterizerState = rasterizerStateSolid;
                    currentRasterizerState = rasterizerStateSolid;
                }
            }
            if (kb.IsKeyDown(Keys.C) && !keyStateAnterior.IsKeyDown(Keys.C))
            {
                switch (tipoCamera)
                {
                    case TipoCamera.SurfaceFollow:
                        tipoCamera = TipoCamera.Free;
                        break;
                    case TipoCamera.Free:
                        tipoCamera = TipoCamera.ThirdPerson;
                        break;
                    case TipoCamera.ThirdPerson:
                        tipoCamera = TipoCamera.SurfaceFollow;
                        break;
                    default:
                        tipoCamera = TipoCamera.Free;
                        break;
                }

            }
            if (kb.IsKeyDown(Keys.N) && !keyStateAnterior.IsKeyDown(Keys.N))
            {
                drawNormals = !drawNormals;
            }

            position = LimitarCameraTerreno(position);

            UpdateViewMatrix(tank);
            mouseStateAnterior = mouseState;
            keyStateAnterior = kb;

            positionAnterior = position;
        }
        public static void Initialize(GraphicsDevice graphics)
        {
            tipoCamera = TipoCamera.ThirdPerson;

            farPlane = Terrain.altura + (Terrain.altura / 2);

            //Posição inicial da camâra
            position = new Vector3(30, 20, 30);

            //Vector de direção inicial
            direction = new Vector3(0, 0, -1f);

            //Colocar o rato no centro do ecrã
            Mouse.SetPosition(graphics.Viewport.Height / 2, graphics.Viewport.Width / 2);

            //Guardar a posição original do rato
            mouseStateOriginal = Mouse.GetState();

            //Inicializar as matrizes world, view e projection
            World = Matrix.Identity;
            Foward();
            Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45),
                graphics.Viewport.AspectRatio,
                nearPlane,
                farPlane);

            //Criar e definir os resterizerStates a utilizar para desenhar a geometria
            //SOLID
            rasterizerStateSolid = new RasterizerState();
            rasterizerStateSolid.CullMode = CullMode.None;
            rasterizerStateSolid.MultiSampleAntiAlias = true;
            rasterizerStateSolid.FillMode = FillMode.Solid;
            rasterizerStateSolid.SlopeScaleDepthBias = 0.1f;
            graphics.RasterizerState = rasterizerStateSolid;

            //WIREFRAME
            rasterizerStateWireFrame = new RasterizerState();
            rasterizerStateWireFrame.CullMode = CullMode.None;
            rasterizerStateWireFrame.MultiSampleAntiAlias = true;
            rasterizerStateWireFrame.FillMode = FillMode.WireFrame;

            currentRasterizerState = rasterizerStateSolid;

            frustum = new BoundingFrustum(Matrix.Identity);
        }
Exemple #6
0
 static public void SetCameraType(TipoCamera tipo)
 {
     tipoCamera = tipo;
 }
Exemple #7
0
 public Camera FactoryMethod(TipoCamera tipoCamera)
 {
     return(new Camera(tipoCamera));
 }
        static public void Update(GameTime gameTime, GraphicsDevice graphics, Ship ship)
        {
            KeyboardState kb         = Keyboard.GetState();
            MouseState    mouseState = Mouse.GetState();

            if (tipoCamera == TipoCamera.Free)
            {
                //Controlos do teclado
                if (kb.IsKeyDown(Keys.W))
                {
                    Foward();
                }
                if (kb.IsKeyDown(Keys.S))
                {
                    Backward();
                }
                if (kb.IsKeyDown(Keys.A))
                {
                    strafeLeft(gameTime, moveSpeed / 2);
                }
                if (kb.IsKeyDown(Keys.D))
                {
                    strafeRight(gameTime, moveSpeed / 2);
                }
                if (kb.IsKeyDown(Keys.Q))
                {
                    Up();
                }
                if (kb.IsKeyDown(Keys.E))
                {
                    Down();
                }

                if (mouseState.ScrollWheelValue > mouseStateAnterior.ScrollWheelValue)
                {
                    if (moveSpeed < 2f)
                    {
                        moveSpeed += (mouseState.ScrollWheelValue - mouseStateAnterior.ScrollWheelValue)
                                     / 10000f;
                    }
                }
                if (Mouse.GetState().ScrollWheelValue < mouseStateAnterior.ScrollWheelValue)
                {
                    if (moveSpeed > 0.05f)
                    {
                        moveSpeed -= (mouseStateAnterior.ScrollWheelValue - mouseState.ScrollWheelValue)
                                     / 10000f;
                    }
                }

                //Controlo da rotação com o rato
                if (mouseState != mouseStateOriginal)
                {
                    mouseMoved.X = mouseState.Position.X - mouseStateOriginal.Position.X;
                    mouseMoved.Y = mouseState.Position.Y - mouseStateOriginal.Position.Y;
                    rotateLeftRight();
                    rotateUpDown();
                    try
                    {
                        Mouse.SetPosition(graphics.Viewport.Height / 2, graphics.Viewport.Width / 2);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            }

            if (kb.IsKeyDown(Keys.O) && !keyStateAnterior.IsKeyDown(Keys.O))
            {
                if (graphics.RasterizerState == rasterizerStateSolid)
                {
                    graphics.RasterizerState = rasterizerStateWireFrame;
                    currentRasterizerState   = rasterizerStateWireFrame;
                }
                else
                {
                    graphics.RasterizerState = rasterizerStateSolid;
                    currentRasterizerState   = rasterizerStateSolid;
                }
            }
            if (kb.IsKeyDown(Keys.C) && !keyStateAnterior.IsKeyDown(Keys.C))
            {
                switch (tipoCamera)
                {
                case TipoCamera.Free:
                    tipoCamera = TipoCamera.ThirdPerson;
                    break;

                case TipoCamera.ThirdPerson:
                    tipoCamera = TipoCamera.Free;
                    break;

                default:
                    tipoCamera = TipoCamera.Free;
                    break;
                }
            }
            if (kb.IsKeyDown(Keys.N) && !keyStateAnterior.IsKeyDown(Keys.N))
            {
                drawNormals = !drawNormals;
            }

            UpdateViewMatrix(ship);
            mouseStateAnterior = mouseState;
            keyStateAnterior   = kb;

            positionAnterior = position;
        }