source: 2014/30/MikkoI/WindowsGame1/WindowsGame1/WindowsGame1/Game1.cs @ 5603

Revision 5603, 6.9 KB checked in by mijoilmo, 7 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Microsoft.Xna.Framework;
5using Microsoft.Xna.Framework.Audio;
6using Microsoft.Xna.Framework.Content;
7using Microsoft.Xna.Framework.GamerServices;
8using Microsoft.Xna.Framework.Graphics;
9using Microsoft.Xna.Framework.Input;
10using Microsoft.Xna.Framework.Media;
11
12namespace WindowsGame1
13{
14    /// <summary>
15    /// This is the main type for your game
16    /// </summary>
17    public class Pikseli : Microsoft.Xna.Framework.Game
18    {
19        GraphicsDeviceManager graphics;
20        //ContentManager contentManager;
21        SpriteBatch spriteBatch;
22        Vector2 screenSize = new Vector2(1920, 1080);
23        MouseState currentMouseState;
24        MouseState previousMouseState;
25        Vector2 mapSize = new Vector2(40, 40);
26        public Random random;
27        Camera camera;
28        MapRenderer mapRenderer;
29
30        public Dictionary<string, Texture2D> textures = new Dictionary<string, Texture2D>();
31
32        List<Map> allMaps = new List<Map>();
33        int currentMapIndex = 0;
34
35        BasicEffect effect;
36
37        public static Pikseli Instance;
38        public GameTime gameTime;
39
40        public Pikseli()
41        {
42            Instance = this;
43            graphics = new GraphicsDeviceManager(this);
44            graphics.PreferredBackBufferWidth = (int)screenSize.X;
45            graphics.PreferredBackBufferHeight = (int)screenSize.Y;
46            //graphics.IsFullScreen = true;
47            //contentManager = new ContentManager();
48            Content.RootDirectory = "Content";
49            currentMouseState = new MouseState();
50        }
51
52        /// <summary>
53        /// Allows the game to perform any initialization it needs to before starting to run.
54        /// This is where it can query for any required services and load any non-graphic
55        /// related content.  Calling base.Initialize will enumerate through any components
56        /// and initialize them as well.
57        /// </summary>
58        protected override void Initialize()
59        {
60            // TODO: Add your initialization logic here
61            random = new Random();
62            camera = new Camera();
63            base.Initialize();
64        }
65
66        /// <summary>
67        /// LoadContent will be called once per game and is the place to load
68        /// all of your content.
69        /// </summary>
70        protected override void LoadContent()
71        {
72            // Create a new SpriteBatch, which can be used to draw textures.
73            spriteBatch = new SpriteBatch(GraphicsDevice);
74
75            allMaps.Add(new Map(new Texture2D(GraphicsDevice, 1, 1), 20, 20));
76
77            mapRenderer = new MapRenderer(spriteBatch, allMaps[currentMapIndex], screenSize);
78
79            /*LOAD ALL TEXTURES*/
80            textures.Add("testitile", Content.Load<Texture2D>("Graphics/Test/taso5.1"));
81            textures.Add("testipuu", Content.Load<Texture2D>("Graphics/Test/kuusi"));
82            textures.Add("aurinko", Content.Load<Texture2D>("Graphics/Taivas/Aurinko"));
83
84            effect = new BasicEffect(GraphicsDevice);
85
86            // TODO: use this.Content to load your game content here
87        }
88
89        /// <summary>
90        /// UnloadContent will be called once per game and is the place to unload
91        /// all content.
92        /// </summary>
93        protected override void UnloadContent()
94        {
95            // TODO: Unload any non ContentManager content here
96        }
97
98        /// <summary>
99        /// Allows the game to run logic such as updating the world,
100        /// checking for collisions, gathering input, and playing audio.
101        /// </summary>
102        /// <param name="gameTime">Provides a snapshot of timing values.</param>
103        protected override void Update(GameTime gameTime)
104        {
105            this.gameTime = gameTime;
106
107            // Allows the game to exit
108            if (Keyboard.GetState(PlayerIndex.One).IsKeyDown(Keys.Escape))
109                this.Exit();
110
111            // TODO: Add your update logic here
112
113            currentMouseState = Mouse.GetState();
114
115            int erotus = currentMouseState.ScrollWheelValue - previousMouseState.ScrollWheelValue;
116            if (erotus > 0)
117            {
118                camera.zoomFactor *= 1.2f;
119            }
120            else if (erotus < 0)
121            {
122                camera.zoomFactor /= 1.2f;
123            }
124            previousMouseState = currentMouseState;
125
126            ListenKeyBoard();
127
128            base.Update(gameTime);
129        }
130
131        void ListenKeyBoard()
132        {
133            if (Keyboard.GetState().IsKeyDown(Keys.Down))
134            {
135                camera.pitch += 0.6f;
136            }
137            else if (Keyboard.GetState().IsKeyDown(Keys.Up))
138            {
139                camera.pitch -= 0.6f;
140            }
141
142            if (Keyboard.GetState().IsKeyDown(Keys.Right))
143            {
144                camera.yaw -= 0.6f;
145            }
146            else if (Keyboard.GetState().IsKeyDown(Keys.Left))
147            {
148                camera.yaw += 0.6f;
149            }
150
151            float scrollSpeed = 9;
152
153            if (Keyboard.GetState().IsKeyDown(Keys.W))
154            {
155                //lisätään molempia koska tämä muokkaa translaatiota
156                camera.offset.X += (scrollSpeed / camera.zoomFactor) * (float)Math.Sin(MathHelper.ToRadians(camera.yaw));
157                camera.offset.Y += (scrollSpeed / camera.zoomFactor) * (float)Math.Cos(MathHelper.ToRadians(camera.yaw));
158            }
159            else if (Keyboard.GetState().IsKeyDown(Keys.S))
160            {
161                camera.offset.X -= (scrollSpeed / camera.zoomFactor) * (float)Math.Sin(MathHelper.ToRadians(camera.yaw));
162                camera.offset.Y -= (scrollSpeed / camera.zoomFactor) * (float)Math.Cos(MathHelper.ToRadians(camera.yaw));
163            }
164
165            if (Keyboard.GetState().IsKeyDown(Keys.A))
166            {
167                camera.offset.X += (scrollSpeed / camera.zoomFactor) * (float)Math.Cos(MathHelper.ToRadians(camera.yaw));
168                camera.offset.Y -= (scrollSpeed / camera.zoomFactor) * (float)Math.Sin(MathHelper.ToRadians(camera.yaw));
169            }
170            else if (Keyboard.GetState().IsKeyDown(Keys.D))
171            {
172                camera.offset.X -= (scrollSpeed / camera.zoomFactor) * (float)Math.Cos(MathHelper.ToRadians(camera.yaw));
173                camera.offset.Y += (scrollSpeed / camera.zoomFactor) * (float)Math.Sin(MathHelper.ToRadians(camera.yaw));
174            }
175
176
177        }
178
179        /// <summary>
180        /// This is called when the game should draw itself.
181        /// </summary>
182        /// <param name="gameTime">Provides a snapshot of timing values.</param>
183        protected override void Draw(GameTime gameTime)
184        {
185            GraphicsDevice.Clear(Color.Black);
186
187            // TODO: Add your drawing code here
188
189            mapRenderer.RenderMap(camera);
190
191            base.Draw(gameTime);
192        }
193    }
194}
Note: See TracBrowser for help on using the repository browser.