Esempio n. 1
0
        public static void SetSlaveFTLPower(this IMyFunctionalBlock ftl, bool active)
        {
            var ftld = ftl.GetFTLData();
            List <IMySlimBlock> ftlDrives = ftl.GetFTLDrives();

            if (active)
            {
                // We only want to power on the additional drives
                // we need to make our jump, not all of them
                // This code isn't smart though, just just powers on
                // all blocks in the order found, until there's enough power.
                double totalPower = ftld.objectBuilderGyro.GyroPower;
                if (totalPower < ftld.totalPowerWanted)
                {
                    foreach (var obj in ftlDrives)
                    {
                        if (obj.FatBlock.EntityId == ftl.EntityId)
                        {
                            continue;                                   // skip ourself
                        }
                        if (obj.FatBlock.IsFunctional)
                        {
                            var ftlsd = (obj.FatBlock as IMyFunctionalBlock).GetFTLData();
                            ftlsd.SlaveActive = true;
                            totalPower       += ((MyObjectBuilder_Gyro)(((IMyCubeBlock)(obj.FatBlock)).GetObjectBuilderCubeBlock())).GyroPower;
                        }
                        if (totalPower >= ftld.totalPowerWanted)
                        {
                            break;
                        }
                    }
                }

                ftld.totalPowerActive = totalPower;
            }
            else
            {
                foreach (var obj in ftlDrives)
                {
                    var ftlsd = (obj.FatBlock as IMyFunctionalBlock).GetFTLData();
                    ftlsd.SlaveActive = false;
                }
            }
        }