コード例 #1
0
ファイル: FormulaTest.cs プロジェクト: ekolis/FrEee
        public void DynamicFormula()
        {
            var    gal = new Galaxy();
            Empire emp = new Empire();

            Mod.Current = new Mod();
            var armor = new ComponentTemplate();

            armor.Name       = armor.ModID = "Armor";
            armor.Size       = 10;
            armor.Durability = new ComputedFormula <int>("self.Size * 3", armor, true);
            Mod.Current.ComponentTemplates.Add(armor);
            var mount = new Mount();

            mount.ModID             = mount.Name = "Scale Mount";
            mount.DurabilityPercent = 200;
            mount.SizePercent       = new ComputedFormula <int>("design.Hull.Size", mount, true);
            Mod.Current.Mounts.Add(mount);
            var hull = new Hull <Ship>();

            hull.ModID = hull.Name = "Generic Hull";
            hull.Size  = 150;
            Mod.Current.Hulls.Add(hull);
            Mod.Current.RefreshObjects();

            var design = new Design <Ship>();

            Galaxy.Current.AssignID(design);
            var mct = new MountedComponentTemplate(design, armor, mount);

            design.Hull = hull;
            design.Components.Add(mct);
            mct.Container = design;
            design.Owner  = emp;
            Assert.AreEqual(30, armor.Durability.Value); // 10 * 3
            Assert.AreEqual(mct.Durability, 60);         // 30 * 200%
            Assert.AreEqual(15, mct.Size);               // 10 * 150%
        }
コード例 #2
0
ファイル: VehicleDesignForm.cs プロジェクト: ekolis/FrEee
        private void BindAvailableComponents()
        {
            lstComponentsAvailable.Initialize(32, 32);
            if (Design != null)
            {
                IEnumerable <ComponentTemplate> comps = Empire.Current.UnlockedItems.OfType <ComponentTemplate>();

                // filter by vehicle type
                comps = comps.Where(comp => comp.VehicleTypes.HasFlag(Design.VehicleType));

                // filter by can-use-mount if the user wants to
                if (chkFilterByMount.Checked)
                {
                    comps = comps.Where(comp => comp.CanUseMount(CurrentMount));
                }

                // filter by only-latest
                if (chkOnlyLatest.Checked)
                {
                    comps = comps.OnlyLatestVersions(comp => comp.Family);
                }

                var complist = comps.ToList();
                foreach (var comp in complist)
                {
                    MountedComponentTemplate mct;
                    if (comp.CanUseMount(CurrentMount))
                    {
                        mct = new MountedComponentTemplate(Design, comp, CurrentMount);
                    }
                    else
                    {
                        mct = new MountedComponentTemplate(Design, comp);
                    }
                    lstComponentsAvailable.AddItemWithImage(comp.Group, mct.Size.Kilotons() + " " + mct.Name, mct, mct.Icon);
                }
            }
        }
コード例 #3
0
ファイル: VehicleDesignForm.cs プロジェクト: ekolis/FrEee
 private void ShowComponentDetails(MountedComponentTemplate mct)
 {
     if (mct == null)
     {
         picDetailIcon.Image       = null;
         txtDetailName.Text        = "(no component)";
         txtDetailSize.Text        = null;
         resDetailMin.Amount       = 0;
         resDetailOrg.Amount       = 0;
         resDetailRad.Amount       = 0;
         txtDetailDescription.Text = null;
     }
     else
     {
         var v = mct;
         picDetailIcon.Image       = v.ComponentTemplate.Icon;
         txtDetailName.Text        = v.Name;
         txtDetailSize.Text        = v.Size.Kilotons();
         resDetailMin.Amount       = v.Cost[Resource.Minerals];
         resDetailOrg.Amount       = v.Cost[Resource.Organics];
         resDetailRad.Amount       = v.Cost[Resource.Radioactives];
         txtDetailDescription.Text = v.ComponentTemplate.Description;
     }
 }
コード例 #4
0
ファイル: ComponentReport.cs プロジェクト: ekolis/FrEee
 public ComponentReport(MountedComponentTemplate mct)
 {
     InitializeComponent();
     Bind(mct);
 }
コード例 #5
0
ファイル: ComponentReport.cs プロジェクト: ekolis/FrEee
 public void Bind(MountedComponentTemplate data)
 {
     Bind(new Component(null, data));
 }