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); }
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); }
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); }
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); } }
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); } }
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); } }
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); } } }
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); }
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); } } }
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); } } }
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); } }
/// <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); }