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