コード例 #1
0
ファイル: DroneCommandCenter.cs プロジェクト: ESearcy/SE_MOD
        public DroneCommandCenter(IMyCubeGrid entity)
        {
            MyEntity = entity;
            Sandbox.ModAPI.IMyGridTerminalSystem gridTerminal =
                MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(entity);

            List <Sandbox.ModAPI.Ingame.IMyTerminalBlock> blocks = new List <Sandbox.ModAPI.Ingame.IMyTerminalBlock>();

            gridTerminal.SearchBlocksOfName(onoff, blocks);
            if (blocks.Count > 0)
            {
                onoffBlock = blocks.FirstOrDefault();
                Util.GetInstance().Log("OnOff Controls Found", "CommandCenterBootUp.txt");
            }
            blocks.Clear();
            gridTerminal.SearchBlocksOfName(mode, blocks);
            if (blocks.Count > 0)
            {
                modeBlock = blocks.FirstOrDefault();
                Util.GetInstance().Log("ModeBlock Controls Found", "CommandCenterBootUp.txt");
            }
            blocks.Clear();
            gridTerminal.SearchBlocksOfName(mining, blocks);
            if (blocks.Count > 0)
            {
                miningBlock = blocks.FirstOrDefault();
                Util.GetInstance().Log("MiningBlock Controls Found", "CommandCenterBootUp.txt");
            }
            blocks.Clear();
            gridTerminal.SearchBlocksOfName(broadcasting, blocks);
            if (blocks.Count > 0)
            {
                broadcastingBlock = blocks.FirstOrDefault();
                Util.GetInstance().Log("Broadcasting Controls Found", "CommandCenterBootUp.txt");
            }
            blocks.Clear();
            gridTerminal.SearchBlocksOfName(agressive, blocks);
            if (blocks.Count > 0)
            {
                agressiveBlock = blocks.FirstOrDefault();
                Util.GetInstance().Log("Agression Controls Found", "CommandCenterBootUp.txt");
            }
            blocks.Clear();
            gridTerminal.SearchBlocksOfName(formation, blocks);
            if (blocks.Count > 0)
            {
                formationBlock = blocks.FirstOrDefault();
                Util.GetInstance().Log("Formation Controls Found", "CommandCenterBootUp.txt");
            }

            var lstSlimBlock = new List <IMySlimBlock>();
            var myCubeGrid   = MyEntity as IMyCubeGrid;

            if (myCubeGrid != null)
            {
                myCubeGrid.GetBlocks(lstSlimBlock, (x) => x.FatBlock is Sandbox.ModAPI.IMyShipController);
            }

            var ShipControls = lstSlimBlock[0].FatBlock as IMyControllableEntity;

            PlayerId = ((Sandbox.ModAPI.IMyTerminalBlock)ShipControls).OwnerId;
        }
コード例 #2
0
ファイル: DroneCommandCenter.cs プロジェクト: ESearcy/SE_MOD
        public void Update()
        {
            if (broadcastingBlock != null)
            {
                var temp = BroadcastingEnabled;

                BroadcastingEnabled = broadcastingBlock.IsWorking;

                if (temp != BroadcastingEnabled)
                {
                    PlayAudioForBroadcastingChanged();
                }
            }
            else
            {
                Sandbox.ModAPI.IMyGridTerminalSystem gridTerminal =
                    MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(MyEntity as IMyCubeGrid);

                List <Sandbox.ModAPI.Ingame.IMyTerminalBlock> blocks = new List <Sandbox.ModAPI.Ingame.IMyTerminalBlock>();
                gridTerminal.SearchBlocksOfName(broadcasting, blocks);
                if (blocks.Count > 0)
                {
                    broadcastingBlock = blocks.FirstOrDefault();
                }
            }

            if (miningBlock != null)
            {
                var temp = MiningDronesEnabled;

                MiningDronesEnabled = miningBlock.IsWorking;

                if (temp != MiningDronesEnabled)
                {
                    PlayAudioForMiningChanged();
                }
            }
            else
            {
                Sandbox.ModAPI.IMyGridTerminalSystem gridTerminal =
                    MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(MyEntity as IMyCubeGrid);

                List <Sandbox.ModAPI.Ingame.IMyTerminalBlock> blocks = new List <Sandbox.ModAPI.Ingame.IMyTerminalBlock>();
                gridTerminal.SearchBlocksOfName(mining, blocks);
                if (blocks.Count > 0)
                {
                    miningBlock = blocks.FirstOrDefault();
                }
            }

            if (formationBlock != null)
            {
                var temp = DroneMode.ToString();

                DroneMode = formationBlock.IsWorking ? DroneModes.Fighter : DroneMode = DroneModes.AtRange;

                if (temp != DroneMode.ToString())
                {
                    PlayAudioForDroneModeChanged();
                }
            }
            else
            {
                Sandbox.ModAPI.IMyGridTerminalSystem gridTerminal =
                    MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(MyEntity as IMyCubeGrid);

                List <Sandbox.ModAPI.Ingame.IMyTerminalBlock> blocks = new List <Sandbox.ModAPI.Ingame.IMyTerminalBlock>();
                gridTerminal.SearchBlocksOfName(formation, blocks);
                if (blocks.Count > 0)
                {
                    formationBlock = blocks.FirstOrDefault();
                }
            }

            if (agressiveBlock != null)
            {
                var temp = Stance;

                Stance = agressiveBlock.IsWorking?Standing.Hostile:Stance = Standing.Passive;

                if (temp != Stance)
                {
                    PlayAudioForStanceChanged();
                }
            }
            else
            {
                Sandbox.ModAPI.IMyGridTerminalSystem gridTerminal =
                    MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(MyEntity as IMyCubeGrid);

                List <Sandbox.ModAPI.Ingame.IMyTerminalBlock> blocks = new List <Sandbox.ModAPI.Ingame.IMyTerminalBlock>();
                gridTerminal.SearchBlocksOfName(agressive, blocks);
                if (blocks.Count > 0)
                {
                    agressiveBlock = blocks.FirstOrDefault();
                }
            }

            if (modeBlock != null)
            {
                var temp = StandingOrder;
                if (modeBlock.IsWorking)
                {
                    StandingOrder = ActionTypes.Guard;
                }
                else
                {
                    StandingOrder = ActionTypes.Sentry;
                }

                if (temp != StandingOrder)
                {
                    PlayAudioForStandingOrderChanged();
                }
            }
            else
            {
                Sandbox.ModAPI.IMyGridTerminalSystem gridTerminal =
                    MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(MyEntity as IMyCubeGrid);

                List <Sandbox.ModAPI.Ingame.IMyTerminalBlock> blocks = new List <Sandbox.ModAPI.Ingame.IMyTerminalBlock>();
                gridTerminal.SearchBlocksOfName(mode, blocks);
                if (blocks.Count > 0)
                {
                    modeBlock = blocks.FirstOrDefault();
                }
            }

            if (onoffBlock != null)
            {
                var temp = DronesOnline;
                if (onoffBlock.IsWorking)
                {
                    DronesOnline = true;
                }
                else
                {
                    DronesOnline = false;
                }

                if (temp != DronesOnline)
                {
                    PlayAudioForDronesOnlineChanged();
                }
            }
            else
            {
                Sandbox.ModAPI.IMyGridTerminalSystem gridTerminal =
                    MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(MyEntity as IMyCubeGrid);

                List <Sandbox.ModAPI.Ingame.IMyTerminalBlock> blocks = new List <Sandbox.ModAPI.Ingame.IMyTerminalBlock>();
                gridTerminal.SearchBlocksOfName(onoff, blocks);
                if (blocks.Count > 0)
                {
                    onoffBlock = blocks.FirstOrDefault();
                }
            }
        }