public override bool Init(MyObjectBuilder_ToolbarItem objectBuilder)
        {
            Debug.Assert(objectBuilder is MyObjectBuilder_ToolbarItemTerminalBlock, "Wrong definition put to toolbar");

            WantsToBeActivated = false;
            WantsToBeSelected  = false;
            ActivateOnClick    = true;

            m_block = null;

            var builder = (MyObjectBuilder_ToolbarItemTerminalBlock)objectBuilder;

            m_blockEntityId = builder.BlockEntityId;
            if (m_blockEntityId == 0)
            {
                m_wasValid = false;
                return(false);
            }
            TryGetBlock();
            SetAction(builder.Action);

            if (builder.Parameters != null && builder.Parameters.Count > 0)
            {
                m_parameters.Clear();
                foreach (var item in builder.Parameters)
                {
                    m_parameters.Add(TerminalActionParameter.Deserialize(item.Value, item.TypeCode));
                }
            }
            return(true);
        }
Example #2
0
        void Main(string argument)
        {
            // Name;CubeGrid;NumberInGrid;Arguments
            string[] args = argument.Split(new char[] { ';' }, 4);
            Echo("Arguments:");
            for (int i = 0; i < args.Length; i++)
            {
                Echo(args[i]);
            }

            int gridNum = -1;

            if (!int.TryParse(args[2], out gridNum))
            {
                Echo("Could not parse 2nd argument to integer.");
                return;
            }

            List <IMyTerminalBlock> blocks = new List <IMyTerminalBlock>();

            GridTerminalSystem.GetBlocksOfType <IMyProgrammableBlock>(blocks,
                                                                      b => b.NumberInGrid == gridNum && b.CubeGrid.ToString().Equals(args[1]) && b.CustomName.Equals(args[0]));

            if (blocks.Count > 1)
            {
                Echo("Too many Programmable Blocks with name '"
                     + args[0] + "' and grid number '" + gridNum + "'.");
                return;
            }
            else if (blocks.Count == 0)
            {
                Echo("Could not found the Programmable Block with name '"
                     + args[0] + "' and grid number '" + gridNum + "'.");
                return;
            }
            Echo("Run Prog: " + blocks[0].CustomName);
            Echo("Argument: " + args[3]);
            IMyProgrammableBlock prog = blocks[0] as IMyProgrammableBlock;

            prog.ApplyAction("Run",
                             new List <TerminalActionParameter>()
            {
                TerminalActionParameter.Deserialize(args[3], TypeCode.String)
            });
        }