source: 2011/23/sijoseha/AdventureGame/AdventureGame/Camera.cs @ 1749

Revision 1749, 2.4 KB checked in by tekrjant, 9 years ago (diff)

Phew..
Changes:

  • We now have a minimap
  • Camera has been modified
  • Lot of minor stuff
RevLine 
[1733]1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Graphics;
7
8namespace AdventureGame
9{
10    public class Camera
11    {
12        public float Zoom { get; set; }
13        public Matrix Transform { get; set; }
14        public Vector2 Position { get; set; }
[1749]15        public Viewport View { get; set; }
16        public Rectangle Bounds
17        {
18            get { return new Rectangle((int)Position.X, (int)Position.Y, View.Width, View.Height); }
19            set { }
20        }
[1733]21
[1749]22        public Camera(Viewport view)
[1733]23        {
[1749]24            this.View = view;
[1733]25            this.Zoom = 1.0f;
26            this.Position = Vector2.Zero;
27        }
28
29        public void Move(Vector2 movement)
30        {
31            this.Position += movement;
32        }
33
34        public Matrix getTransformation(Viewport viewPort)
35        {
[1749]36            Zoom = 1.0f;
[1733]37            this.Transform =
38                Matrix.CreateTranslation(
39                new Vector3(-this.Position.X, -this.Position.Y, 0)) *
40                Matrix.CreateScale(new Vector3(this.Zoom, this.Zoom, 0));// *
41                //Matrix.CreateTranslation(new Vector3(viewPort.Width * 0.5f, viewPort.Height* 0.5f, 0));
42            return this.Transform;
43        }
44
[1749]45        public Matrix getTransformation(Viewport viewPort, bool showAll, Vector2 mapSize)
46        {
47            Zoom = viewPort.Width / (Math.Max(mapSize.X, mapSize.Y) * 32);
48            this.Transform =
49                //Matrix.CreateTranslation(
50                //new Vector3(-this.Position.X, -this.Position.Y, 0)) *
51                Matrix.CreateScale(new Vector3(this.Zoom, this.Zoom, 0)) * 
52            Matrix.CreateTranslation(new Vector3(1.0f, viewPort.Height* 0.5f - mapSize.Y*32*Zoom/2, 0));
53            return this.Transform;
54        }
55
[1733]56        public Vector2 getMouseWorldPos(Vector2 mousePos, Viewport viewPort)
57        {
[1749]58            Zoom = 1.0f;
[1733]59            float MouseWorldX = (mousePos.X - viewPort.Width * 0.5f + (viewPort.Width * 0.5f + this.Position.X) * (float)Math.Pow(this.Zoom, 3)) /
60                  (float)Math.Pow(this.Zoom, 3);
61
62            float MouseWorldY = ((mousePos.Y - viewPort.Height * 0.5f + (viewPort.Height * 0.5f + this.Position.Y) * (float)Math.Pow(this.Zoom, 3))) /
63                    (float)Math.Pow(this.Zoom, 3);
64
65            return new Vector2(MouseWorldX, MouseWorldY);
66        }
67
68    }
69}
Note: See TracBrowser for help on using the repository browser.