public Drone(IMyEntity ent, BroadcastingTypes broadcasting) { var ship = (IMyCubeGrid)ent; double maxEngagementRange = ConquestMod.MaxEngagementRange; broadcastingType = broadcasting; Ship = ship; var lstSlimBlock = new List<IMySlimBlock>(); GridTerminalSystem = MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(ship); //If it has any type of cockipt ship.GetBlocks(lstSlimBlock, (x) => x.FatBlock is IMyShipController); FindWeapons(); //If no cockpit the ship is either no ship or is broken. if (lstSlimBlock.Count != 0) { //Make the controls be the cockpit ShipControls = lstSlimBlock[0].FatBlock as IMyControllableEntity; _ownerId = ((Sandbox.ModAPI.IMyTerminalBlock)ShipControls).OwnerId; #region Activate Beacons && Antennas //Maximise radius on antennas and beacons. lstSlimBlock.Clear(); ship.GetBlocks(lstSlimBlock, (x) => x.FatBlock is IMyRadioAntenna); foreach (var block in lstSlimBlock) { IMyRadioAntenna antenna = (IMyRadioAntenna)block.FatBlock; if (antenna != null) { //antenna.GetActionWithName("SetCustomName").Apply(antenna, new ListReader<TerminalActionParameter>(new List<TerminalActionParameter>() { TerminalActionParameter.Get("Combat Drone " + _manualGats.Count) })); antenna.SetValueFloat("Radius", 5000);//antenna.GetMaximum<float>("Radius")); ITerminalAction act = antenna.GetActionWithName("OnOff_On"); 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; if (beacon != null) { beacon.SetValueFloat("Radius", 5000);//beacon.GetMaximum<float>("Radius")); ITerminalAction act = beacon.GetActionWithName("OnOff_On"); act.Apply(beacon); } } #endregion //SetWeaponPower(true); //AmmoManager.ReloadReactors(_allReactors); //AmmoManager.ReloadGuns(_manualGats); ship.GetBlocks(lstSlimBlock, x => x is IMyEntity); List<IMyTerminalBlock> massBlocks = new List<IMyTerminalBlock>(); GridTerminalSystem.GetBlocksOfType<IMyVirtualMass>(massBlocks); List<IMyTerminalBlock> allTerminalBlocks = new List<IMyTerminalBlock>(); GridTerminalSystem.GetBlocksOfType<IMyCubeBlock>(allTerminalBlocks); HealthBlockBase = allTerminalBlocks.Count; if (ShipControls != null) { navigation = new DroneNavigation(ship, ShipControls, _nearbyFloatingObjects, maxEngagementRange); } } Ship.OnBlockAdded += RecalcMaxHp; myNumber = numDrones; numDrones++; }
public Drone(IMyEntity ent, BroadcastingTypes broadcasting) { var ship = (IMyCubeGrid)ent; double maxEngagementRange = ConquestMod.MaxEngagementRange; broadcastingType = broadcasting; Ship = ship; var lstSlimBlock = new List <IMySlimBlock>(); GridTerminalSystem = MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(ship); //If it has any type of cockipt ship.GetBlocks(lstSlimBlock, (x) => x.FatBlock is IMyShipController); FindWeapons(); SetupActions(); //If no cockpit the ship is either no ship or is broken. if (lstSlimBlock.Count != 0) { //Make the controls be the cockpit ShipControls = lstSlimBlock[0].FatBlock as IMyControllableEntity; _ownerId = ((Sandbox.ModAPI.IMyTerminalBlock)ShipControls).OwnerId; #region Activate Beacons && Antennas //Maximise radius on antennas and beacons. lstSlimBlock.Clear(); ship.GetBlocks(lstSlimBlock, (x) => x.FatBlock is IMyRadioAntenna); foreach (var block in lstSlimBlock) { IMyRadioAntenna antenna = (IMyRadioAntenna)block.FatBlock; if (antenna != null) { //antenna.GetActionWithName("SetCustomName").Apply(antenna, new ListReader<TerminalActionParameter>(new List<TerminalActionParameter>() { TerminalActionParameter.Get("Combat Drone " + _manualGats.Count) })); antenna.SetValueFloat("Radius", 10000);//antenna.GetMaximum<float>("Radius")); _blockOn.Apply(antenna); } } lstSlimBlock = new List <IMySlimBlock>(); ship.GetBlocks(lstSlimBlock, (x) => x.FatBlock is IMyBeacon); foreach (var block in lstSlimBlock) { IMyBeacon beacon = (IMyBeacon)block.FatBlock; if (beacon != null) { beacon.SetValueFloat("Radius", 10000);//beacon.GetMaximum<float>("Radius")); _blockOn.Apply(beacon); } } #endregion //SetWeaponPower(true); //AmmoManager.ReloadReactors(_allReactors); //AmmoManager.ReloadGuns(_manualGats); ship.GetBlocks(lstSlimBlock, x => x is IMyEntity); List <IMyTerminalBlock> massBlocks = new List <IMyTerminalBlock>(); GridTerminalSystem.GetBlocksOfType <IMyVirtualMass>(massBlocks); List <IMyTerminalBlock> allTerminalBlocks = new List <IMyTerminalBlock>(); GridTerminalSystem.GetBlocksOfType <IMyCubeBlock>(allTerminalBlocks); HealthBlockBase = allTerminalBlocks.Count; if (ShipControls != null) { navigation = new DroneNavigation(ship, ShipControls, _nearbyFloatingObjects, maxEngagementRange); } } Ship.OnBlockAdded += RecalcMaxHp; myNumber = numDrones; numDrones++; }