예제 #1
0
        private void GetMiningDrillActions()
        {
            List <IMySlimBlock> blocks = new List <IMySlimBlock>();

            Ship.GetBlocks(blocks, (x) => x.FatBlock != null && x.FatBlock is IMyShipDrill);
            if ((_blockOn == null || _blockOff == null) && blocks.Count > 0)
            {
                List <ITerminalAction> actions = new List <ITerminalAction>();
                var block = (IMyShipDrill)blocks[0].FatBlock;
                block.GetActions(actions);

                string actionsString = "";
                actions.ForEach(x => actionsString += ", " + x.Name);

                //_fireRocket = block.GetActionWithName("Shoot_once");
                //_fireGun = block.GetActionWithName("Shoot");
                _blockOff = block.GetActionWithName("OnOff_Off");
                _blockOn  = block.GetActionWithName("OnOff_On");
            }
            //DrillsOn();
        }
예제 #2
0
        private void SetupActions()
        {
            if (_fireGun == null && _allWeapons.Count > 0 && _allWeapons[0] != null)
            {
                var actions = new List <ITerminalAction>();

                ((IMyUserControllableGun)_allWeapons[0].FatBlock).GetActions(actions);
                if (_fireRocket == null)
                {
                    foreach (var act in actions)
                    {
                        Util.GetInstance().Log("[Drone.IsAlive] Action Name " + act.Name.Replace(" ", "_"), "weapons.txt");
                        switch (act.Name.ToString())
                        {
                        case "Shoot_once":
                            _fireRocket = act;
                            break;

                        case "Shoot_On":
                            _fireGun = act;
                            break;

                        case "Toggle_block_Off":
                            _blockOff = act;
                            break;

                        case "Toggle_block_On":
                            _blockOn = act;
                            break;
                        }
                    }

                    Util.GetInstance()
                    .Log(
                        "[Drone.IsAlive] Has Missile attack -> " + (_fireRocket != null) + " Has Gun Attack " +
                        (_fireRocket != null) + " off " + (_blockOff != null) + " on " + (_blockOn != null),
                        "weapons.txt");
                }
            }
        }
예제 #3
0
        //Disables all beacons and antennas and deletes the ship.
        public void DeleteShip()
        {
            var lstSlimBlock = new List <IMySlimBlock>();

            Ship.GetBlocks(lstSlimBlock, (x) => x.FatBlock is IMyRadioAntenna);
            foreach (var block in lstSlimBlock)
            {
                IMyRadioAntenna antenna = (IMyRadioAntenna)block.FatBlock;
                ITerminalAction act     = antenna.GetActionWithName("OnOff_Off");
                act.Apply(antenna);
            }

            lstSlimBlock = new List <IMySlimBlock>();
            Ship.GetBlocks(lstSlimBlock, (x) => x.FatBlock is IMyBeacon);
            foreach (var block in lstSlimBlock)
            {
                IMyBeacon       beacon = (IMyBeacon)block.FatBlock;
                ITerminalAction act    = beacon.GetActionWithName("OnOff_Off");
                act.Apply(beacon);
            }

            MyAPIGateway.Entities.RemoveEntity(Ship as IMyEntity);
            Ship = null;
        }
예제 #4
0
        /*
         * let me explain this stupid method....... nope, not much to explain because this is what I Had to do to get it to work.
         */
        private void FindWeapons()
        {
            if (Ship == null)
                return;

            _allWeapons.Clear();
            _allReactors.Clear();
            _manualGuns.Clear();
            _manualRockets.Clear();

            Ship.GetBlocks(_manualRockets, (x) => x.FatBlock != null && (x.FatBlock is IMySmallMissileLauncher));
            Ship.GetBlocks(_manualGuns, (x) => x.FatBlock != null && (x.FatBlock is IMySmallGatlingGun));

            Ship.GetBlocks(_allReactors, (x) => x.FatBlock != null && x.FatBlock is IMyReactor);
            Ship.GetBlocks(_allWeapons, (x) => x.FatBlock != null && (x.FatBlock is IMyUserControllableGun));

            if (_fireGun==null && _manualRockets.Count > 0 && _manualRockets[0] != null)
            {
                var actions = new List<ITerminalAction>();
                var block = (IMySmallMissileLauncher)_manualRockets[0].FatBlock;
                block.GetActions(actions);

                if (_fireRocket == null)
                {
                    foreach (var act in actions)
                    {
                        Util.GetInstance().Log("[Drone.IsAlive] Action Name " + act.Name.Replace(" ", "_"), "drone.txt");
                        switch (act.Name.ToString())
                        {
                            case "Shoot_once":
                                _fireRocket = act;
                                break;
                            case "Shoot_On":
                                _fireGun = act;
                                break;
                            //case "OnOff_Off":
                            //    _blockOff = act;
                            //    break;
                            //case "OnOff_On":
                            //    _blockOn = act;
                            //    break;
                        }
                    }
                    Util.GetInstance().Log("[Drone.IsAlive] Action Length " + actions.Count, "drone.txt");

                    //_fireRocket = block.GetActionWithName("Shoot_once");
                    //_fireGun = block.GetActionWithName("Shoot");
                    _blockOff = block.GetActionWithName("OnOff_Off");
                    _blockOn = block.GetActionWithName("OnOff_On");

                    Util.GetInstance()
                        .Log(
                            "[Drone.IsAlive] Has Missile attack -> " + (_fireRocket != null) + " Has Gun Attack " +
                            (_fireRocket != null) + " off " + (_blockOff != null) + " on " + (_blockOn != null),
                            "drone.txt");
                }
            }

            _weaponCount = _allWeapons.Count(x => (x.FatBlock).IsWorking || (x.FatBlock).IsFunctional);
        }
예제 #5
0
        private void SetupActions()
        {
            if (_fireGun == null && _allWeapons.Count > 0 && _allWeapons[0] != null)
            {
                var actions = new List<ITerminalAction>();

                ((IMyUserControllableGun)_allWeapons[0].FatBlock).GetActions(actions);
                if (_fireRocket == null)
                {
                    foreach (var act in actions)
                    {
                        Util.GetInstance().Log("[Drone.IsAlive] Action Name " + act.Name.Replace(" ", "_"), "weapons.txt");
                        switch (act.Name.ToString())
                        {
                            case "Shoot_once":
                                _fireRocket = act;
                                break;
                            case "Shoot_On":
                                _fireGun = act;
                                break;
                            case "Toggle_block_Off":
                                _blockOff = act;
                                break;
                            case "Toggle_block_On":
                                _blockOn = act;
                                break;
                        }
                    }

                    Util.GetInstance()
                        .Log(
                            "[Drone.IsAlive] Has Missile attack -> " + (_fireRocket != null) + " Has Gun Attack " +
                            (_fireRocket != null) + " off " + (_blockOff != null) + " on " + (_blockOn != null),
                            "weapons.txt");
                }
            }
        }