Example #1
0
        void AddTank(double value)
        {
            PartResource partResource = resource;

            //Debug.LogWarning ("[MFT] Adding tank from API " + name + " amount: " + value);
            maxAmountExpression = null;

            ConfigNode node = new ConfigNode("RESOURCE");

            node.AddValue("name", name);
            node.AddValue("amount", value);
            node.AddValue("maxAmount", value);
#if DEBUG
            print(node.ToString());
#endif
            partResource         = part.AddResource(node);
            partResource.enabled = true;

            module.RaiseResourceListChanged();

            // Update symmetry counterparts.
            if (HighLogic.LoadedSceneIsEditor && propagate)
            {
                foreach (Part sym in part.symmetryCounterparts)
                {
                    PartResource symResc = sym.AddResource(node);
                    symResc.enabled = true;
                    PartMessageService.Send <PartResourceListChanged> (this, sym);
                }
            }
        }
Example #2
0
        void DeleteTank()
        {
            PartResource partResource = resource;

            // Delete it
            //Debug.LogWarning ("[MFT] Deleting tank from API " + name);
            maxAmountExpression = null;

            part.Resources.list.Remove(partResource);
            PartModule.DestroyImmediate(partResource);
            module.RaiseResourceListChanged();
            //print ("Removed.");

            // Update symmetry counterparts.
            if (HighLogic.LoadedSceneIsEditor && propagate)
            {
                foreach (Part sym in part.symmetryCounterparts)
                {
                    PartResource symResc = sym.Resources[name];
                    sym.Resources.list.Remove(symResc);
                    PartModule.DestroyImmediate(symResc);
                    PartMessageService.Send <PartResourceListChanged> (this, sym);
                }
            }
            //print ("Sym removed");
        }
Example #3
0
        public override void OnAwake()
        {
            Log.post(this.ClassName + " OnAwake-callback: ");

            base.OnAwake();
            PartMessageService.Register(this);
        }
Example #4
0
        void UpdateTank(double value)
        {
            PartResource partResource = resource;

            if (value > partResource.maxAmount)
            {
                // If expanding, modify it to be less than overfull
                double maxQty = module.AvailableVolume * utilization + partResource.maxAmount;
                if (maxQty < value)
                {
                    value = maxQty;
                }
            }

            // Do nothing if unchanged
            if (value == partResource.maxAmount)
            {
                return;
            }

            //Debug.LogWarning ("[MFT] Updating tank from API " + name + " amount: " + value);
            maxAmountExpression = null;

            // Keep the same fill fraction
            double newAmount = value * fillFraction;

            partResource.maxAmount = value;
            module.RaiseResourceMaxChanged(partResource, value);
            //print ("Set new maxAmount");

            if (newAmount != partResource.amount)
            {
                partResource.amount = newAmount;
                module.RaiseResourceInitialChanged(partResource, newAmount);
            }

            // Update symmetry counterparts.
            if (HighLogic.LoadedSceneIsEditor && propagate)
            {
                foreach (Part sym in part.symmetryCounterparts)
                {
                    PartResource symResc = sym.Resources[name];
                    symResc.maxAmount = value;
                    PartMessageService.Send <PartResourceMaxAmountChanged> (this, sym, symResc, value);

                    if (newAmount != symResc.amount)
                    {
                        symResc.amount = newAmount;
                        PartMessageService.Send <PartResourceInitialAmountChanged> (this, sym, symResc, newAmount);
                    }
                }
            }

            //print ("Symmetry set");
        }
Example #5
0
        public override void OnAwake()
        {
            base.OnAwake();
            PartMessageService.Register(this);

            if (GameSceneFilter.AnyInitializing.IsLoaded())
            {
                LoadTextureSets();
            }
            InitializeTextureSet();
        }
 public override void OnAwake()
 {
     enabled = false;
     if (CompatibilityChecker.IsWin64())
     {
         compatible = false;
         Events["HideUI"].active = false;
         Events["ShowUI"].active = false;
         return;
     }
     PartMessageService.Register(this);
     // Initialize utilization from the settings file
     utilization = MFSSettings.partUtilizationDefault;
 }
        protected new void SetSymCounterpartsAmount(double amount)
        {
            if (part == null)
            {
                return;
            }

            foreach (Part sym in part.symmetryCounterparts)
            {
                if (sym == part)
                {
                    continue;
                }
                PartResource symResource = sym.Resources[resource.info.name];
                symResource.amount = amount;
                PartMessageService.Send <PartResourceInitialAmountChanged>(this, sym, symResource, symResource.amount);
            }
        }
        private void OnSliderChanged(IUIObject obj)
        {
            // ReSharper disable once CompareOfFloatsByEqualityOperator
            if (oldSliderValue == slider.Value)
            {
                return;
            }
            oldSliderValue = slider.Value;

            SIPrefix prefix = resource.maxAmount.GetSIPrefix();

            resource.amount = prefix.Round(slider.Value * resource.maxAmount, digits: 4);
            PartMessageService.Send <PartResourceInitialAmountChanged>(this, part, resource, resource.amount);
            if (scene == UI_Scene.Editor)
            {
                SetSymCounterpartsAmount(resource.amount);
            }
            resourceAmnt.Text = resource.amount.ToString("F1");
            GameEvents.onEditorShipModified.Fire(EditorLogic.fetch.ship);
        }
//----------------------------------------------------------------------------------------------



        public override void OnAwake()
        {
            Log.post(this.ClassName + " OnAwake-callback: ");

            base.OnAwake();
            PartMessageService.Register(this);

            loadLiftingGasOptions();

            // check liftingGas validity. If invalid: set to default
            if (!liftingGasOptions.Any(a => a.displayName == liftingGas))
            {
                Log.post("no valid lifting gas selected. Set to default", LogLevel.LOG_WARNING);
                if (liftingGasOptions.Count > 0)
                {
                    liftingGas = liftingGasOptions.First <LiftingGas>(lgo => !lgo.deprecated).displayName;
                    Log.post("liftinggas set to: " + liftingGas, LogLevel.LOG_INFORMATION);
                }
                else
                {
                    Log.post("no valid lifting gas option found.", LogLevel.LOG_ERROR);
                }
            }
        }
Example #10
0
 public override void OnAwake()
 {
     base.OnAwake();
     PartMessageService.Register(this);
     //this.RegisterOnUpdateEditor(OnUpdateEditor);
 }
Example #11
0
 void Awake()
 {
     PartMessageService.Register <ExShipInfo>(this);
 }
Example #12
0
 public override void OnAwake()
 {
     PartMessageService.Register(this);
 }
Example #13
0
 public NodeTransformable(Part part, AttachNode node)
 {
     this.part = part;
     this.node = node;
     PartMessageService.Register(this);
 }