Esempio n. 1
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. 2
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);
            }
        }