Ejemplo n.º 1
0
        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.Black);
            if (!playScene.Enabled)
            {
                Shared.Screen.Set_Zoom(2f);
                Shared.Screen.Position = new Vector2(0, 0);

                Menu_Parallax.Update(gameTime);

                // -----------------------------------------
                // Blurb controls Title screen animation & parallax
                animation_counter++;
                if (animation_counter >= animation_delay)
                {
                    animation_counter = 0;
                    animation_index++;

                    if (animation_index >= Menu_Animation.Count())
                    {
                        animation_index = 0;
                    }
                }

                Vector2 Animation_Pos = new Vector2
                                        (
                    100,
                    Shared.RESOLUTION.Y - Menu_Animation[animation_index].Height
                                        );

                // -----------------------------------------
                // Animation
                spriteBatch.Begin();
                spriteBatch.Draw(Menu_Animation[animation_index], Animation_Pos, Color.White);
                spriteBatch.End();
                // -----------------------------------------
                // Parallax
                spriteBatch.Begin();
                spriteBatch.Draw(Title, Vector2.Zero, Color.White);
                spriteBatch.End();
                // -----------------------------------------
            }
            base.Draw(gameTime);
        }
Ejemplo n.º 2
0
        public override void Draw(GameTime gameTime)
        {
            if (Enabled)
            {
                // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                // World Render Order
                // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                // Prepare dead character list
                List <Character> Dead_Characters = new List <Character>();

                // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                // Update
                // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                // World Parallax
                // --------------------------------
                worldParallax.Update(gameTime);

                // Perform Combat Collision Checks
                // --------------------------------
                CollisionManager.Projectile_Collisions();
                CollisionManager.Character_Collision();

                // Terrain
                // --------------------------------
                foreach (KeyValuePair <string, Terrain> terrain in worldTerrain)
                {
                    terrain.Value.Update(gameTime);

                    if (terrain_changed)
                    {
                        terrain.Value.Terrain_Render();
                    }
                }
                if (has_background && worldBKGTerrain.Count() != 0)
                {
                    foreach (KeyValuePair <string, Terrain> terrain in worldBKGTerrain)
                    {
                        terrain.Value.Update(gameTime);

                        if (terrain_changed)
                        {
                            terrain.Value.Terrain_Render();
                        }
                    }
                }
                // Reset terrain changed flag
                terrain_changed = false;
                // ----------------------

                // Characters
                // --------------------------------
                if (Shared.Active_World.loaded)
                {
                    foreach (Character character in worldCharacters)
                    {
                        if (character.Is_dead() && !(character is Player))
                        {
                            Dead_Characters.Add(character);
                            character.Enabled = false;
                            break;
                        }
                        character.Update(gameTime);
                    }

                    if (Dead_Characters.Count() != 0)
                    {
                        foreach (Character dead_character in Dead_Characters)
                        {
                            worldCharacters.Remove(dead_character);
                        }
                    }
                }
                // --------------------------------

                // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                // Draw
                // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                // BKG Terrain
                // --------------------------------
                if (has_background && worldBKGTerrain.Count() != 0)
                {
                    foreach (KeyValuePair <string, Terrain> terrain in worldBKGTerrain)
                    {
                        terrain.Value.Draw(gameTime);
                    }
                }

                // Characters
                // --------------------------------
                foreach (Character character in worldCharacters)
                {
                    character.Draw(gameTime);
                }

                // Terrain
                // --------------------------------
                foreach (KeyValuePair <string, Terrain> terrain in worldTerrain)
                {
                    terrain.Value.Draw(gameTime);
                }

                if (Shared.Debug)
                {
                    string key = Get_Grid_Key(Shared.Player.Grid_Position.X, Shared.Player.Grid_Position.Y + 1);
                    if (WorldTerrain.ContainsKey(key))
                    {
                        Shared.DebugWindow.Message += WorldTerrain[key].Name + "\n";
                    }
                    else
                    {
                        Shared.DebugWindow.Message += "Air \n";
                    }

                    Shared.DebugWindow.Draw(gameTime);
                    Shared.DebugWindow.Message = "";
                }
                // --------------------------------

                // Effects
                // --------------------------------
                Particles.Draw_Effects(gameTime);
                // --------------------------------

                // Projectiles
                // --------------------------------
                Particles.Draw_Projectiles(gameTime);
                // --------------------------------

                // GUI
                // --------------------------------
                foreach (GUI_Element element in Shared.GUI)
                {
                    element.Draw(gameTime);
                }
                // --------------------------------
            }
        }