// ------------------------------- /// <summary> /// A simple method that gets the terrain entity at a grid location. /// </summary> /// <param name="X">The X to check</param> /// <param name="Y">The Y to check</param> /// <returns>Returns a terrain entity, null if there is none.</returns> public Terrain Get_Terrain_At(int X, int Y, bool background = false) { Terrain terrain_entity = null; string key = "X" + X + "Y" + Y; if (!background) { if (WorldTerrain.ContainsKey(key)) { terrain_entity = WorldTerrain[key]; } } else { if (WorldBKGTerrain.ContainsKey(key)) { terrain_entity = WorldBKGTerrain[key]; } } return(terrain_entity); }
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); } // -------------------------------- } }