Esempio n. 1
0
        public void creating_draw(SpriteBatch s, Display d)
        {
            s.Draw(d.planet_bkd, new Rectangle((Exilania.screen_size.X / 2) - (1920 / 2), (Exilania.screen_size.Y / 2) - (1080 / 2), 1920, 1080), new Rectangle(0, 0, 1920, 1080), Color.White);
            Vector2 size_text = d.font.MeasureString("World Creation Menu");

            d.draw_text(s, d.font, "@05World Creation Menu", Exilania.screen_size.X / 2 - (int)size_text.X / 2, 10, Exilania.screen_size.X);
            s.Draw(d.Exilania_title, new Rectangle(Exilania.screen_size.X - 400, (int)((float)Exilania.screen_size.Y - 100), 392, 87), new Rectangle(0, 0, 392, 87), Color.White);
            size_text = d.middle_font.MeasureString(cur_info_text);
            d.draw_text(s, d.middle_font, "@00" + cur_info_text, Exilania.screen_size.X / 2 - (int)(size_text.X / 2), (int)((float)Exilania.screen_size.Y * (.50f)) - (int)(size_text.Y / 2), Exilania.screen_size.X / 2);
        }
Esempio n. 2
0
        public void draw_choosing_menu(SpriteBatch s, Display d)
        {
            string add_beginning = "@00";

            s.Draw(d.planet_bkd, new Rectangle((Exilania.screen_size.X / 2) - (1920 / 2), (Exilania.screen_size.Y / 2) - (1080 / 2), 1920, 1080), new Rectangle(0, 0, 1920, 1080), Color.White);
            Vector2 size_text = d.font.MeasureString("World Creation Menu");

            d.draw_text(s, d.font, "@05World Creation Menu", Exilania.screen_size.X / 2 - (int)size_text.X / 2, 10, Exilania.screen_size.X);
            s.Draw(d.Exilania_title, new Rectangle(Exilania.screen_size.X - 400, (int)((float)Exilania.screen_size.Y - 100), 392, 87), new Rectangle(0, 0, 392, 87), Color.White);

            for (int x = 0; x < diff_worlds.Count; x++)
            {
                if (x == cur_option)
                {
                    add_beginning = "@05";
                }
                else if (x == cur_hover)
                {
                    add_beginning = "@08";
                }
                else
                {
                    add_beginning = "@00";
                }
                d.draw_text(s, d.middle_font, add_beginning + diff_worlds[x].ToString(), Exilania.screen_size.X / 2 - 166, (int)((float)Exilania.screen_size.Y * (.30f + ((float)x * .05f))), Exilania.screen_size.X / 2);
            }

            string fix_text = "";

            if (Acc.sanitize_text_color(chosen_world_name).Length >= 5 && cur_option > -1)
            {
                add_beginning = "@05";
            }
            else
            {
                if (Acc.sanitize_text_color(chosen_world_name).Length < 5)
                {
                    fix_text += "Type a name for this world. It must have at least 5 characters.";
                }
                if (cur_option < 0)
                {
                    fix_text += " You must choose a template.";
                }
                add_beginning = "@08";
            }
            if (fix_text != "")
            {
                Vector2 meas = d.middle_font.MeasureString(fix_text);
                d.draw_text(s, d.middle_font, "@00" + fix_text,
                            Exilania.screen_size.X / 2 - (int)(meas.X / 2), (int)((float)Exilania.screen_size.Y - 150), Exilania.screen_size.X);
            }
            d.draw_text(s, d.middle_font, add_beginning + "[ Click to Generate World ]", Exilania.screen_size.X / 2 - 166, (int)((float)Exilania.screen_size.Y - 60), Exilania.screen_size.X / 2);
            d.draw_text(s, d.middle_font, "@00World Name: " + chosen_world_name, Exilania.screen_size.X / 2 - 166, (int)((float)Exilania.screen_size.Y - 200), Exilania.screen_size.X / 2);
        }
Esempio n. 3
0
        public void hover_over(Point mouse_loc, SpriteBatch s, Display d, World w)
        {
            Vector2 size  = d.small_font.MeasureString(name);
            Vector2 size2 = new Vector2();//d.small_font.MeasureString("Owned by: " + owner);

            //d.draw_bounding_box(s, new Rectangle(mouse_loc.X + 35, mouse_loc.Y - 50, (int)Math.Max(size.X, size2.X) + 14, 10));
            d.draw_text(s, d.small_font, "@05" + name, mouse_loc.X + 42 + (int)Math.Max(size.X / 2, size2.X / 2) - (int)(size.X / 2), mouse_loc.Y, 500);
            //d.draw_text(s, d.small_font, "@00Owned by: " + owner, mouse_loc.X + 42 + (int)Math.Max(size.X / 2, size2.X / 2) - (int)(size2.X / 2), mouse_loc.Y - 26, 500);
        }
Esempio n. 4
0
        public void draw_menu(SpriteBatch s, Display d)
        {
            string add_beginning = "@00";

            s.Draw(d.planet_bkd, new Rectangle((Exilania.screen_size.X / 2) - (1920 / 2), (Exilania.screen_size.Y / 2) - (1080 / 2), 1920, 1080), new Rectangle(0, 0, 1920, 1080), Color.White);
            Vector2 size_text = d.font.MeasureString("Main Menu");

            d.draw_text(s, d.font, "@33Main Menu", Exilania.screen_size.X / 2 - (int)size_text.X / 2, 10, Exilania.screen_size.X);
            s.Draw(d.Exilania_title, new Rectangle(Exilania.screen_size.X - 400, (int)((float)Exilania.screen_size.Y - 100), 392, 87), new Rectangle(0, 0, 392, 87), Color.White);
            for (int x = 0; x < options.Length; x++)
            {
                if (x == cur_option)
                {
                    add_beginning = "@08";
                }
                else
                {
                    add_beginning = "@00";
                }
                d.draw_text(s, d.middle_font, add_beginning + options[x], Exilania.screen_size.X / 2 - 166, (int)((float)Exilania.screen_size.Y * (.30f + ((float)x * .05f))), Exilania.screen_size.X / 2);
            }
        }
Esempio n. 5
0
 public void draw_info(Vector2 loc, SpriteBatch s, Display d, Actor a)
 {
     if (infos == null)
     {
         string meas = "";
         infos = new List <KeyValuePair <string, Vector2> >();
         infos.Add(new KeyValuePair <string, Vector2>(item_name, d.small_font.MeasureString(item_name)));
         if (can_swing)
         {
             meas = "Swing Speed: " + (swing_speed * 1000) + "ms";
             infos.Add(new KeyValuePair <string, Vector2>(meas, d.small_font.MeasureString(meas)));
             meas = "Damage: " + melee_damage;
             infos.Add(new KeyValuePair <string, Vector2>(meas, d.small_font.MeasureString(meas)));
         }
         if (can_shoot)
         {
             meas = "Fire Speed: " + (fire_wait_time * 1000) + "ms";
             infos.Add(new KeyValuePair <string, Vector2>(meas, d.small_font.MeasureString(meas)));
             meas = "Damage: " + ranged_damage;
             infos.Add(new KeyValuePair <string, Vector2>(meas, d.small_font.MeasureString(meas)));
             if (projectile_energy_use != 0)
             {
                 meas = "Energy/Shot: " + projectile_energy_use;
                 infos.Add(new KeyValuePair <string, Vector2>(meas, d.small_font.MeasureString(meas)));
             }
             if (projectile_ammo_use != 0)
             {
                 meas = "Ammo/Shot: " + projectile_ammo_use;
                 infos.Add(new KeyValuePair <string, Vector2>(meas, d.small_font.MeasureString(meas)));
             }
         }
         meas = "Value: " + worth + "cr.";
         infos.Add(new KeyValuePair <string, Vector2>(meas, d.small_font.MeasureString(meas)));
         draw_size = new Point(0, infos.Count * 20 + 20);
         for (int x = 0; x < infos.Count; x++)
         {
             if (infos[x].Value.X > draw_size.X)
             {
                 draw_size.X = (int)infos[x].Value.X;
             }
         }
         draw_size.X += 20;
     }
     d.draw_bounding_box(s, new Rectangle((int)loc.X, (int)loc.Y, draw_size.X, draw_size.Y));
     d.draw_bounding_box(s, new Rectangle((int)loc.X, (int)loc.Y, draw_size.X, draw_size.Y));
     for (int x = 0; x < infos.Count; x++)
     {
         d.draw_text(s, d.small_font, "@00" + infos[x].Key, (int)loc.X + 10, (int)loc.Y + 10 + (x * 20), 500);
     }
 }
Esempio n. 6
0
        public void draw_choosing_menu(SpriteBatch s, Display d)
        {
            string add_beginning = "@00";

            s.Draw(d.planet_bkd, new Rectangle((Exilania.screen_size.X / 2) - (1920 / 2), (Exilania.screen_size.Y / 2) - (1080 / 2), 1920, 1080), new Rectangle(0, 0, 1920, 1080), Color.White);
            Vector2 size_text = d.font.MeasureString("World Menu");

            d.draw_text(s, d.font, "@03World Menu", Exilania.screen_size.X / 2 - (int)size_text.X / 2, 10, Exilania.screen_size.X);
            s.Draw(d.Exilania_title, new Rectangle(Exilania.screen_size.X - 400, (int)((float)Exilania.screen_size.Y - 100), 392, 87), new Rectangle(0, 0, 392, 87), Color.White);

            d.draw_text(s, d.middle_font, (cur_option == -1?"@08":"@00") + "<<Create New World>>", Exilania.screen_size.X / 2 - 166, (int)((float)Exilania.screen_size.Y * (.25f)), Exilania.screen_size.X / 2);
            for (int x = 0; x < available_worlds.Count; x++)
            {
                if (x == cur_option)
                {
                    add_beginning = "@08";
                }
                else
                {
                    add_beginning = "@00";
                }
                d.draw_text(s, d.middle_font, add_beginning + available_worlds[x].ToString() + (Exilania.cur_open_world == "world" + available_worlds[x].world_number ? " @04*Running*" : ""), Exilania.screen_size.X / 2 - 166, (int)((float)Exilania.screen_size.Y * (.30f + ((float)x * .05f))), Exilania.screen_size.X / 2);
            }
        }
Esempio n. 7
0
        public void draw_list(SpriteBatch s, Display d)
        {
            s.Draw(d.planet_bkd, new Rectangle((Exilania.screen_size.X / 2) - (1920 / 2), (Exilania.screen_size.Y / 2) - (1080 / 2), 1920, 1080), new Rectangle(0, 0, 1920, 1080), Color.White);
            s.Draw(d.Exilania_title, new Rectangle(Exilania.screen_size.X - 400, (int)((float)Exilania.screen_size.Y - 100), 392, 87), new Rectangle(0, 0, 392, 87), Color.White);
            Vector2 size_text = d.font.MeasureString("Character Selection");

            d.draw_text(s, d.font, "@05Character Selection", Exilania.screen_size.X / 2 - (int)size_text.X / 2, 10, Exilania.screen_size.X);

            int start_y = 200;

            d.draw_text(s, d.middle_font, (cur_choice == -1?"@08":"@00") + "<<Create New Chracter>>", (int)(Exilania.screen_size.X / 2) - 400, start_y, Exilania.screen_size.X);
            for (int x = 0; x < players.Count; x++)
            {
                start_y = 230 + x * 30;
                if (clicked_choice == x)
                {
                    d.draw_text(s, d.middle_font, "@05" + players[x].ToString(), (int)(Exilania.screen_size.X / 2) - 400, start_y, Exilania.screen_size.X);
                }
                else
                {
                    d.draw_text(s, d.middle_font, (cur_choice == x ? "@08" : "@00") + players[x].ToString(), (int)(Exilania.screen_size.X / 2) - 400, start_y, Exilania.screen_size.X);
                }
            }
        }
Esempio n. 8
0
        public void draw_create_chracter(SpriteBatch s, Display d, Input i)
        {
            s.Draw(d.planet_bkd, new Rectangle((Exilania.screen_size.X / 2) - (1920 / 2), (Exilania.screen_size.Y / 2) - (1080 / 2), 1920, 1080), new Rectangle(0, 0, 1920, 1080), Color.White);
            s.Draw(d.Exilania_title, new Rectangle(Exilania.screen_size.X - 400, (int)((float)Exilania.screen_size.Y - 100), 392, 87), new Rectangle(0, 0, 392, 87), Color.White);
            Vector2 size_text = d.font.MeasureString("New Character");

            d.draw_text(s, d.font, "@05New Character", Exilania.screen_size.X / 2 - (int)size_text.X / 2, 10, Exilania.screen_size.X);

            size_text = d.middle_font.MeasureString(char_disp.name);

            char_disp.draw_actor(s, 6f, d);
            int start_y = 200;

            for (int x = 0; x < choice_defs.Length; x++)
            {
                start_y = 220 + x * 30;
                if (x == clicked_choice)
                {
                    d.draw_text(s, d.middle_font, "@05" + choice_defs[x].ToString(), (int)(Exilania.screen_size.X / 2) - 400, start_y, Exilania.screen_size.X);
                }
                else
                {
                    d.draw_text(s, d.middle_font, (cur_choice == x ? "@08" : "@00") + choice_defs[x].ToString(), (int)(Exilania.screen_size.X / 2) - 400, start_y, Exilania.screen_size.X);
                }
            }
            d.draw_text(s, d.middle_font, "@05" + char_disp.name, Exilania.screen_size.X / 2 - 150, start_y + 30, Exilania.screen_size.X);
            d.draw_text(s, d.middle_font, "@05Character Name: ", Exilania.screen_size.X / 2 - 400, start_y + 30, Exilania.screen_size.X);
            d.draw_text(s, d.middle_font, "@05Changing " + choice_defs[clicked_choice], (int)Exilania.screen_size.X / 2 - 200, 290 + (choice_defs.Length * 30), 1000);
            s.DrawString(d.middle_font, "- + R: " + temp_col.R, new Vector2(Exilania.screen_size.X / 2, 320 + (choice_defs.Length * 30)), temp_col);
            s.DrawString(d.middle_font, "- + G: " + temp_col.G, new Vector2(Exilania.screen_size.X / 2, 350 + (choice_defs.Length * 30)), temp_col);
            s.DrawString(d.middle_font, "- + B: " + temp_col.B, new Vector2(Exilania.screen_size.X / 2, 380 + (choice_defs.Length * 30)), temp_col);
            bool c = (i.mouse_now.Y >= Exilania.screen_size.Y - 100 && i.key_input.Length > 3);

            if (!c && i.key_input.Length <= 3)
            {
                size_text = d.middle_font.MeasureString("Name must be at least 4 characters to save. (Just start typing)");
                d.draw_text(s, d.middle_font, "@05Name must be at least 4 characters to save. (Just start typing)", (int)Exilania.screen_size.X / 2 - (int)size_text.X / 2, Exilania.screen_size.Y - 130, 1000);
            }
            size_text = d.middle_font.MeasureString("[Create Character]");
            d.draw_text(s, d.middle_font, (c?"@08":"@00") + "[Create Character]", (int)Exilania.screen_size.X / 2 - (int)size_text.X / 2, Exilania.screen_size.Y - 100, 1000);
        }
Esempio n. 9
0
        public void draw_liquid_cells(SpriteBatch s, Display d, World w, int x_offset, int y_offset, Vector2 top_left_corner)
        {
            Rectangle on_screen = new Rectangle(0, 0, Exilania.screen_size.X, Exilania.screen_size.Y);
            Rectangle temp      = new Rectangle();
            Vector2   temp_v    = new Vector2();
            Point     center_s  = new Point();

            for (int i = 0; i < liquid_cells.Count; i++)
            {
                if (!liquid_cells[i].empty)
                {
                    temp = new Rectangle(liquid_cells[i].bounds.X * 24 - (int)top_left_corner.X,
                                         liquid_cells[i].bounds.Y * 24 - (int)top_left_corner.Y, liquid_cells[i].bounds.Width * 24, liquid_cells[i].bounds.Height * 24);
                    if (on_screen.Intersects(temp))
                    {
                        if (liquid_cells[i].pressurized)
                        {
                            s.Draw(d.sprites, temp, d.frames[pic_pressurized], Color.White);
                        }
                        else
                        {
                            s.Draw(d.sprites, temp, d.frames[pic_unpressurized], Color.White);
                        }
                        center_s = temp.Center;
                        string words = liquid_cells[i].id.ToString();
                        temp_v      = d.small_font.MeasureString(words);
                        center_s.X -= (int)(temp_v.X / 2);
                        center_s.Y -= (int)(temp_v.Y / 2);
                        d.draw_text(s, d.small_font, "@00" + words, center_s.X, center_s.Y, 500);
                    }
                }
            }
            foreach (var p in water)
            {
                temp = new Rectangle(((Point)p).X * 24 - (int)top_left_corner.X, ((Point)p).Y * 24 - (int)top_left_corner.Y, 24, 24);
                if (on_screen.Intersects(temp))
                {
                    s.Draw(d.sprites, temp, d.frames[pic_look_at], Color.White);
                }
            }
        }
Esempio n. 10
0
        public void draw_crafts(SpriteBatch s, Display d, Player p, World w)
        {
            if (p.avatar.items.show_backpack)
            {
                d.draw_text(s, d.small_font, "@00Basic Crafting", Exilania.screen_size.X - 140, 25, 160);
                d.draw_text(s, d.small_font, "@00" + cur_available_crafts.Count + " useable", Exilania.screen_size.X - 140, 45, 160);

                Point on_screen_loc = new Point(Microsoft.Xna.Framework.Input.Mouse.GetState().X, Microsoft.Xna.Framework.Input.Mouse.GetState().Y);
                if (first_show != 0)
                {
                    d.draw_text(s, d.small_font, "@00" + first_show, Exilania.screen_size.X - 40, 55, 160);
                }
                for (int x = first_show; x < first_show + num_show; x++)
                {
                    if (x < cur_available_crafts.Count && x > -1)
                    {
                        s.Draw(d.sprites, new Vector2(Exilania.screen_size.X - 60, 70 + (x - first_show) * 50), new Rectangle(Cubby.loc_first.X + ((7 % 4) * 46), Cubby.loc_first.Y + ((7 / 4) * 46), 46, 46), Color.White);
                        switch (cur_available_crafts[x].output[0].type)
                        {
                        case ItemType.Block:
                            s.Draw(d.sprites, new Rectangle(Exilania.screen_size.X - 55, 75 + (x - first_show) * 50, 36, 36),
                                   d.frames[Exilania.block_types.blocks[cur_available_crafts[x].output[0].item_id].image_pointers[Exilania.block_types.blocks[cur_available_crafts[x].output[0].item_id].block_image_use]],
                                   Color.White);
                            break;

                        case ItemType.Furniture:
                            Exilania.furniture_manager.furniture[cur_available_crafts[x].output[0].item_id].draw_item_furniture(s, d, new Point(Exilania.screen_size.X - 60, 70 + (x - first_show) * 50));
                            break;

                        case ItemType.ItemPiece:
                            Rectangle draw_at = new Rectangle();
                            float     width   = Exilania.item_manager.item_pieces[cur_available_crafts[x].output[0].item_id].image.Width;
                            float     height  = Exilania.item_manager.item_pieces[cur_available_crafts[x].output[0].item_id].image.Height;
                            float     amt;
                            if (width > height)
                            {     //29 > 7
                                amt = 44f / width;
                            }
                            else
                            {
                                amt = 44f / height;
                            }
                            width  *= amt;
                            height *= amt;
                            draw_at = new Rectangle(
                                Exilania.screen_size.X - 60 + 1 + (int)((44 - width) / 2),
                                70 + (x - first_show) * 50 + 1 + (int)((44 - height) / 2),
                                (int)width, (int)height);
                            s.Draw(d.sprites, draw_at,
                                   Exilania.item_manager.item_pieces[cur_available_crafts[x].output[0].item_id].image, Color.White);
                            break;

                        case ItemType.Material:
                            s.Draw(d.sprites, new Rectangle(Exilania.screen_size.X - 55, 75 + (x - first_show) * 50, 36, 36),
                                   d.frames[Exilania.material_manager.materials[cur_available_crafts[x].output[0].item_id].image],
                                   Color.White);
                            break;
                        }
                        if (cur_available_crafts[x].complexity > p.avatar.stats.complexity)
                        {
                            d.draw_text(s, d.small_font, "@00TC: " + cur_available_crafts[x].complexity, Exilania.screen_size.X - 80, 70 + (x - first_show) * 50, 160);
                        }
                        //draw info of hovered over item if there is one.
                    }
                }
                if (hover_over > -1 && cur_available_crafts.Count > hover_over)
                {
                    write_info_about_item(s, cur_available_crafts[hover_over], new Point(Exilania.screen_size.X - 60, 70 + (hover_over - first_show) * 50), d);
                }
                if (first_show + num_show < cur_available_crafts.Count)
                {
                    d.draw_text(s, d.small_font, "@00" + (cur_available_crafts.Count - first_show - num_show), Exilania.screen_size.X - 40, 60 + (50 * num_show), 160);
                }
            }
        }
Esempio n. 11
0
        public void write_info_about_item(SpriteBatch s, CraftRecipe r, Point loc, Display d)
        {
            if (r.output[0].item_id != infos_item_type.item_id || r.output[0].type != infos_item_type.item_type)
            {
                infos_item_type.item_id   = r.output[0].item_id;
                infos_item_type.item_type = r.output[0].type;
                infos = new List <KeyValuePair <string, Vector2> >();
                string writing = "";
                switch (cur_available_crafts[hover_over].output[0].type)
                {
                case ItemType.Block:
                    writing = r.output[0].item_quantity + " " + Exilania.block_types.blocks[cur_available_crafts[hover_over].output[0].item_id].name;
                    infos.Add(new KeyValuePair <string, Vector2>(writing, d.small_font.MeasureString(writing)));
                    break;

                case ItemType.Furniture:
                    writing = r.output[0].item_quantity + " " + Exilania.furniture_manager.furniture[r.output[0].item_id].name;
                    infos.Add(new KeyValuePair <string, Vector2>(writing, d.small_font.MeasureString(writing)));
                    break;

                case ItemType.ItemPiece:
                    writing = Exilania.item_manager.item_pieces[r.output[0].item_id].name;
                    infos.Add(new KeyValuePair <string, Vector2>(writing, d.small_font.MeasureString(writing)));
                    break;

                case ItemType.Material:
                    writing = Exilania.material_manager.materials[r.output[0].item_id].name;
                    infos.Add(new KeyValuePair <string, Vector2>(writing, d.small_font.MeasureString(writing)));
                    break;
                }
                if (r.furniture_require.Length > 0)
                {
                    writing = "";
                    for (int x = 0; x < r.furniture_require.Length; x++)
                    {
                        if (x == 0)
                        {
                            writing = "Equipment Required: " + r.furniture_require[x];
                        }
                        else
                        {
                            writing += ", " + r.furniture_require[x];
                        }
                    }
                    infos.Add(new KeyValuePair <string, Vector2>(writing, d.small_font.MeasureString(writing)));
                }
                writing   = "Requires: " + r.ToString();
                draw_size = new Point(0, infos.Count * 20 + 40);
                infos.Add(new KeyValuePair <string, Vector2>(writing, d.small_font.MeasureString(writing)));
                writing = "Complexity: " + r.complexity;
                infos.Add(new KeyValuePair <string, Vector2>(writing, d.small_font.MeasureString(writing)));
                for (int x = 0; x < infos.Count; x++)
                {
                    if (infos[x].Value.X > draw_size.X)
                    {
                        draw_size.X = (int)infos[x].Value.X;
                    }
                }
                draw_size.X += 20;
                draw_size.Y += 20;
            }
            d.draw_bounding_box(s, new Rectangle((int)loc.X - draw_size.X, (int)loc.Y, draw_size.X, draw_size.Y));
            d.draw_bounding_box(s, new Rectangle((int)loc.X - draw_size.X, (int)loc.Y, draw_size.X, draw_size.Y));
            for (int x = 0; x < infos.Count; x++)
            {
                d.draw_text(s, d.small_font, "@00" + infos[x].Key, (int)loc.X + 10 - draw_size.X, (int)loc.Y + 10 + (x * 20), 600);
            }
        }
Esempio n. 12
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)
        {
            if (take_screen_shot)
            {
                renderTarget = new RenderTarget2D(GraphicsDevice, screen_size.X, screen_size.Y);
                GraphicsDevice.SetRenderTarget(renderTarget);
            }
            GraphicsDevice.Clear(Color.Black);
            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullNone);
            Vector2 size = new Vector2();

            switch (gstate)
            {
            case 10:     //title screen
                menu.draw_menu(spriteBatch, display);
                break;

            case 60:
                saved_players.draw_list(spriteBatch, display);
                break;

            case 70:
                saved_players.draw_create_chracter(spriteBatch, display, input);
                break;

            case 90:    //server choosing world to use or to create a new world.
                world_manager.draw_choosing_menu(spriteBatch, display);
                break;

            case 91:    //choosing the world to create
                world_definition_manager.draw_choosing_menu(spriteBatch, display);
                break;

            case 92:    //creating a new world... show status text.
                world_definition_manager.creating_draw(spriteBatch, display);
                break;

            case 95:    //client waiting to connect
                size = display.font.MeasureString("Waiting for Initialization");
                display.draw_text(spriteBatch, display.font, "@11Waiting for Initialization", (int)((screen_size.X / 2) - (size.X / 2)), (int)screen_size.Y / 2, screen_size.X);
                break;

            case 100:     //in-game
                Vector2 mouse_world_pos = new Vector2(world.top_left.X + input.mouse_now.X, world.top_left.Y + input.mouse_now.Y);
                if (game_my_user_id != -1)
                {
                    world.total_fps.stop();
                    world.total_fps.start();
                    world.frame_render_time.start();
                    if (settings.use_hardware_lighting)
                    {
                        lighting.draw_scene(spriteBatch, display, world, input, GraphicsDevice);
                    }
                    else
                    {
                        world.draw_world(game_my_user_id, spriteBatch, display, input);
                    }
                    display.draw_fade_text(spriteBatch, world.top_left);
                    world.draw_hud(game_my_user_id, spriteBatch, display, input);
                    world.frame_render_time.stop();
                }
                else
                {
                    size = display.font.MeasureString("Waiting for Initialization");
                    display.draw_text(spriteBatch, display.font, "@11Waiting for Initialization", (int)((screen_size.X / 2) - (size.X / 2)), (int)screen_size.Y / 2, screen_size.X);
                }
                if (draw_debug && world.players.Count > 0)
                {
                    //display.draw_text(spriteBatch, "@00" + network_server.udp_server.Statistics.ToString(), 4, 155, screen_size.X, false);
                    display.draw_text(spriteBatch, "@00" + world.ToString(), 4, 155, screen_size.X, false);
                    string  stats    = world.frame_render_time.ToString();
                    Vector2 size_str = display.middle_font.MeasureString(stats);
                    display.draw_text(spriteBatch, display.middle_font, "@07" + stats, screen_size.X - (int)size_str.X, screen_size.Y - (int)size_str.Y, screen_size.X);

                    stats    = world.water_update_time.ToString();
                    size_str = display.middle_font.MeasureString(stats);
                    display.draw_text(spriteBatch, display.middle_font, "@07" + stats, screen_size.X - (int)size_str.X, screen_size.Y - (int)size_str.Y - 30, screen_size.X);

                    stats    = world.light_time.ToString();
                    size_str = display.middle_font.MeasureString(stats);
                    display.draw_text(spriteBatch, display.middle_font, "@07" + stats, screen_size.X - (int)size_str.X, screen_size.Y - (int)size_str.Y - 60, screen_size.X);

                    stats    = world.updating.ToString();
                    size_str = display.middle_font.MeasureString(stats);
                    display.draw_text(spriteBatch, display.middle_font, "@07" + stats, screen_size.X - (int)size_str.X, screen_size.Y - (int)size_str.Y - 90, screen_size.X);

                    stats    = world.total_fps.ToString();
                    size_str = display.middle_font.MeasureString(stats);
                    display.draw_text(spriteBatch, display.middle_font, "@07" + stats, screen_size.X - (int)size_str.X, screen_size.Y - (int)size_str.Y - 120, screen_size.X);

                    stats    = world.world_generation.ToString();
                    size_str = display.middle_font.MeasureString(stats);
                    display.draw_text(spriteBatch, display.middle_font, "@07" + stats, screen_size.X - (int)size_str.X, screen_size.Y - (int)size_str.Y - 150, screen_size.X);

                    stats    = world.flowing_blocks.ToString();
                    size_str = display.middle_font.MeasureString(stats);
                    display.draw_text(spriteBatch, display.middle_font, "@07" + stats, screen_size.X - (int)size_str.X, screen_size.Y - (int)size_str.Y - 180, screen_size.X);
                }
                if (world.players.Count > 0 && settings.show_ping && play_type != "Single Player")
                {
                    string  stats    = "";
                    Vector2 size_str = new Vector2();

                    if (game_server)
                    {
                        stats    = "Hosting";
                        size_str = display.small_font.MeasureString(stats);
                        display.draw_text(spriteBatch, display.small_font, Display.color_code + "00Hosting", screen_size.X - (int)size_str.X, 0, 220);
                    }
                    else if (network_client.udp_client.Connections.Count > 0)
                    {
                        stats    = "ping: " + Math.Round(network_client.udp_client.Connections[0].AverageRoundtripTime * 1000f, 1).ToString() + "ms";
                        size_str = display.small_font.MeasureString(stats);
                        display.draw_text(spriteBatch, display.small_font, Display.color_code + "00" + stats, screen_size.X - (int)size_str.X, 0, 120);
                    }
                    else
                    {
                        stats    = "ping: DISCONNECTED";
                        size_str = display.small_font.MeasureString(stats);
                        display.draw_text(spriteBatch, display.small_font, Display.color_code + "00ping: @07DISCONNECTED", screen_size.X - (int)size_str.X, 0, 220);
                    }
                }
                break;
            }
            display.draw_messages(spriteBatch, input);
            if (draw_debug)
            {
                display.draw_text_with_outline(spriteBatch, display.small_font, Display.color_code + "00" + debug, 4, 204, screen_size.X, AccColors.Adamantium);
            }
            spriteBatch.Draw(display.sprites, new Rectangle(input.mouse_now.X, input.mouse_now.Y, (int)(16.0 * 2), (int)(16.0 * 2)), display.mouse, Color.White);
            spriteBatch.End();

            if (take_screen_shot)
            {
                GraphicsDevice.SetRenderTarget(null);
                try
                {
                    System.IO.Directory.CreateDirectory(@"screenshots");
                }
                catch
                {
                }
                System.IO.StreamWriter w = new System.IO.StreamWriter(@"screenshots/screenshot_" + DateTime.Now.Ticks.ToString() + ".png");
                renderTarget.SaveAsPng(w.BaseStream, screen_size.X, screen_size.Y);
                w.Close();
                Exilania.display.add_message("@05Screenshot Saved.");
                if (settings.use_hardware_lighting)
                {
                    /*w = new System.IO.StreamWriter(@"screenshots/screenshot_" + DateTime.Now.Ticks.ToString() + "lights.png");
                     * lighting.lightsTarget.SaveAsPng(w.BaseStream, lighting.lightsTarget.Width, lighting.lightsTarget.Height);
                     * w.Close();*/
                }
                take_screen_shot = false;
                spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone);
                spriteBatch.Draw(renderTarget, new Vector2(0, 0), Color.White);
                spriteBatch.End();
            }
            base.Draw(gameTime);
        }