Inheritance: IComponentInfo
        public IComponentInfo Load(XElement node, Project project)
        {
            var comp = new WeaponComponentInfo();
            comp.Weapons = node.Elements("Weapon")
                .Select(x => {
                    var w = new WeaponInfo() {
                        Name = x.GetAttribute<string>("name"),
                        EntityName = x.GetAttribute<string>("entity"),
                        Ammo = x.TryAttribute<int?>("ammo"),
                        Usage = x.TryAttribute<int?>("usage"),
                        Palette = x.TryAttribute<int?>("palette")
                    };

                    var meterNode = x.Element("Meter");
                    if (meterNode != null)
                        w.Meter = _meterReader.LoadMeter(meterNode, project.BaseDir);

                    return w;
                })
                .ToList();

            return comp;
        }
 private void LoadWeaponComponent(GameEntity entity, WeaponComponentInfo info)
 {
     var comp = new WeaponComponent();
     entity.AddComponent(comp);
     comp.LoadInfo(info);
 }
        public void LoadInfo(WeaponComponentInfo info)
        {
            foreach (var weapon in info.Weapons)
            {
                HealthMeter meter = null;
                if (weapon.Meter != null)
                    meter = HealthMeter.Create(weapon.Meter, true);

                AddWeapon(weapon.Name, weapon.EntityName, weapon.Ammo ?? -1, weapon.Usage ?? 1, meter, weapon.Palette);
            }
        }