private static void ChangeOwnershipToNearestPlayer( MyTerminalBlock block ) { Wrapper.GameAction( () => { double minDist = 0; MyPlayer nearest = null; foreach ( var player in MySession.Static.Players.GetOnlinePlayers() ) { var dist = Vector3D.DistanceSquared( player.GetPosition(), block.PositionComp.GetPosition() ); if ( nearest == null ) { nearest = player; minDist = dist; } else if ( dist < minDist ) nearest = player; } if ( nearest == null ) return; MyAPIGateway.Utilities.InvokeOnGameThread(()=>block.ChangeBlockOwnerRequest( nearest.Identity.IdentityId, MyOwnershipShareModeEnum.Faction )); } ); }
private void AddRow(MyTerminalBlock block) { MyGuiControlTable.Row row; MyGuiControlTable.Cell cell; row = new MyGuiControlTable.Row(block); cell = new MyGuiControlTable.Cell(block.CustomName); row.AddCell(cell); m_selectedBlocks.Add(row); }
private static void AddToClipboard(MyTerminalBlock block) { if (MySession.Static.ElapsedGameTime != m_lastAccess) { Clipboard.Clear(); m_lastAccess = MySession.Static.ElapsedGameTime; } Clipboard.Add(block); }
public virtual void OnAddedToGroup(MyGridLogicalGroupData group) { this.TerminalSystem = group.TerminalSystem; this.ResourceDistributor = group.ResourceDistributor; this.WeaponSystem = group.WeaponSystem; if (string.IsNullOrEmpty(this.ResourceDistributor.DebugName)) { this.ResourceDistributor.DebugName = this.m_cubeGrid.ToString(); } this.m_cubeGrid.OnFatBlockAdded += new Action <MyCubeBlock>(this.ResourceDistributor.CubeGrid_OnFatBlockAddedOrRemoved); this.m_cubeGrid.OnFatBlockRemoved += new Action <MyCubeBlock>(this.ResourceDistributor.CubeGrid_OnFatBlockAddedOrRemoved); this.ResourceDistributor.AddSink(this.GyroSystem.ResourceSink); this.ResourceDistributor.AddSink(this.ConveyorSystem.ResourceSink); this.ConveyorSystem.ResourceSink.IsPoweredChanged += new Action(this.ResourceDistributor.ConveyorSystem_OnPoweredChanged); foreach (MyBlockGroup group2 in this.m_cubeGrid.BlockGroups) { this.TerminalSystem.AddUpdateGroup(group2, false, false); } this.TerminalSystem.GroupAdded += this.m_terminalSystem_GroupAdded; this.TerminalSystem.GroupRemoved += this.m_terminalSystem_GroupRemoved; foreach (MyCubeBlock block in this.m_cubeGrid.GetFatBlocks()) { if (!block.MarkedForClose) { MyTerminalBlock block2 = block as MyTerminalBlock; if (block2 != null) { this.TerminalSystem.Add(block2); } MyResourceSourceComponent source = block.Components.Get <MyResourceSourceComponent>(); if (source != null) { this.ResourceDistributor.AddSource(source); } MyResourceSinkComponent sink = block.Components.Get <MyResourceSinkComponent>(); if (sink != null) { this.ResourceDistributor.AddSink(sink); } IMyRechargeSocketOwner owner = block as IMyRechargeSocketOwner; if (owner != null) { owner.RechargeSocket.ResourceDistributor = group.ResourceDistributor; } IMyGunObject <MyDeviceBase> gun = block as IMyGunObject <MyDeviceBase>; if (gun != null) { this.WeaponSystem.Register(gun); } } } MyResourceDistributorComponent resourceDistributor = this.ResourceDistributor; resourceDistributor.OnPowerGenerationChanged = (Action <bool>)Delegate.Combine(resourceDistributor.OnPowerGenerationChanged, new Action <bool>(this.OnPowerGenerationChanged)); this.TerminalSystem.BlockManipulationFinishedFunction(); this.ResourceDistributor.UpdateBeforeSimulation(); }
public void Add(MyTerminalBlock block) { if (block.MarkedForClose) return; Debug.Assert(!m_blocks.Contains(block), "Block to add is already in terminal"); m_blocks.Add(block); var handler = BlockAdded; if (handler != null) handler(block); }
public void Add(MyTerminalBlock block) { if (block.MarkedForClose || block.IsBeeingRemoved) return; Debug.Assert(!m_blockTable.ContainsKey(block.EntityId), "Block to add is already in terminal"); m_blockTable.Add(block.EntityId, block); m_blocks.Add(block); var handler = BlockAdded; if (handler != null) handler(block); }
public void Initialize(Vector3 panelOrientation, bool isTwoSided, float panelOffset, MyTerminalBlock solarBlock) { m_initialized = true; m_panelOrientation = panelOrientation; m_isTwoSided = isTwoSided; m_panelOffset = panelOffset; m_solarBlock = solarBlock; //Warning: this will change the NeedsUpdate variable on the entity NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME; }
public MyDebugRenderComponentSolarPanel(MyTerminalBlock solarBlock):base(solarBlock) { m_solarBlock = solarBlock; MyGameLogicComponent logicComponent; if (m_solarBlock.Components.TryGet(out logicComponent)) { m_solarComponent = logicComponent as MySolarGameLogicComponent; } if (m_solarComponent == null) { System.Diagnostics.Debug.Fail("No solar component was found!"); } }
public void Remove(MyTerminalBlock block) { if (block.MarkedForClose) return; Debug.Assert(m_blocks.Contains(block), "Block to remove is not in terminal"); m_blocks.Remove(block); for (int i = 0; i < BlockGroups.Count; i++) { var group = BlockGroups[i]; if (group.Blocks.Contains(block)) group.Blocks.Remove(block); if (group.Blocks.Count == 0) { RemoveGroup(group); i--; } } var handler = BlockRemoved; if (handler != null) handler(block); }
private void block_CustomNameChanged(MyTerminalBlock obj) { m_nameChanged = true; }
void block_ShowInTerminalChanged(MyTerminalBlock obj) { ClearBlockList(); PopulateBlockList(); }
public void UpdateCubeBlock(MyTerminalBlock block) { if (block == null) return; if (m_terminalSystem != null) { m_terminalSystem.BlockAdded -= TerminalSystem_BlockAdded; m_terminalSystem.BlockRemoved -= TerminalSystem_BlockRemoved; m_terminalSystem.GroupAdded -= TerminalSystem_GroupAdded; m_terminalSystem.GroupRemoved -= TerminalSystem_GroupRemoved; } var grid = block.CubeGrid; m_terminalSystem = grid.GridSystems.TerminalSystem; m_tmpGroup = new MyBlockGroup(grid); m_terminalSystem.BlockAdded += TerminalSystem_BlockAdded; m_terminalSystem.BlockRemoved += TerminalSystem_BlockRemoved; m_terminalSystem.GroupAdded += TerminalSystem_GroupAdded; m_terminalSystem.GroupRemoved += TerminalSystem_GroupRemoved; SelectBlocks(new MyTerminalBlock[] { block }); }
void block_CustomNameChanged(MyTerminalBlock obj) { System.Diagnostics.Debug.Assert(m_blockListbox != null, "block_CustomNameChanged was not unregistered!"); if (m_blockListbox == null) return; ProfilerShort.Begin("MyTerminalControlPanel.block_CustomNameChanged"); foreach (var item in m_blockListbox.Items) { if (item.UserData == obj) { UpdateItemAppearance(obj, item); break; } } if (CurrentBlocks.Count > 0 && CurrentBlocks[0] == obj) m_blockNameLabel.Text = obj.CustomName.ToString(); ProfilerShort.End(); }
private MyGuiControlListbox.Item AddBlockToList(MyTerminalBlock block) { var item = new MyGuiControlListbox.Item(userData: block); UpdateItemAppearance(block, item); block.CustomNameChanged += block_CustomNameChanged; block.PropertiesChanged += block_CustomNameChanged; block.ShowInTerminalChanged += block_ShowInTerminalChanged; m_blockListbox.Add(item); return item; }
void TerminalSystem_BlockAdded(MyTerminalBlock obj) { AddBlockToList(obj); }
void gyro_PropertiesChanged(MyTerminalBlock sender) { MarkDirty(); }
private void gyro_EnabledChanged(MyTerminalBlock obj) { MarkDirty(); }
private void reflector_EnabledChanged(MyTerminalBlock obj) { Debug.Assert(obj is MyReflectorLight); m_reflectorsEnabledNeedsRefresh = true; }
public virtual void UnregisterFromSystems(MyCubeBlock block) { if (block.GetType() != typeof(MyCubeBlock)) { if (this.ResourceDistributor != null) { MyResourceSourceComponent source = block.Components.Get <MyResourceSourceComponent>(); if (source != null) { this.ResourceDistributor.RemoveSource(source); } MyResourceSinkComponent sink = block.Components.Get <MyResourceSinkComponent>(); if (sink != null) { this.ResourceDistributor.RemoveSink(sink, true, false); } IMyRechargeSocketOwner owner = block as IMyRechargeSocketOwner; if (owner != null) { owner.RechargeSocket.ResourceDistributor = null; } } if (this.WeaponSystem != null) { IMyGunObject <MyDeviceBase> gun = block as IMyGunObject <MyDeviceBase>; if (gun != null) { this.WeaponSystem.Unregister(gun); } } if (this.TerminalSystem != null) { MyTerminalBlock block5 = block as MyTerminalBlock; if (block5 != null) { this.TerminalSystem.Remove(block5); } } if (block.HasInventory) { this.ConveyorSystem.Remove(block); } IMyConveyorEndpointBlock block2 = block as IMyConveyorEndpointBlock; if (block2 != null) { this.ConveyorSystem.RemoveConveyorBlock(block2); } IMyConveyorSegmentBlock segmentBlock = block as IMyConveyorSegmentBlock; if (segmentBlock != null) { this.ConveyorSystem.RemoveSegmentBlock(segmentBlock); } MyReflectorLight reflector = block as MyReflectorLight; if (reflector != null) { this.ReflectorLightSystem.Unregister(reflector); } MyDataBroadcaster broadcaster = block.Components.Get <MyDataBroadcaster>(); if (broadcaster != null) { this.RadioSystem.Unregister(broadcaster); } MyDataReceiver reciever = block.Components.Get <MyDataReceiver>(); if (reciever != null) { this.RadioSystem.Unregister(reciever); } if (MyFakes.ENABLE_WHEEL_CONTROLS_IN_COCKPIT) { MyMotorSuspension motor = block as MyMotorSuspension; if (motor != null) { this.WheelSystem.Unregister(motor); } } IMyLandingGear gear = block as IMyLandingGear; if (gear != null) { this.LandingSystem.Unregister(gear); } MyGyro gyro = block as MyGyro; if (gyro != null) { this.GyroSystem.Unregister(gyro); } MyCameraBlock camera = block as MyCameraBlock; if (camera != null) { this.CameraSystem.Unregister(camera); } } block.OnUnregisteredFromGridSystems(); }
public virtual void RegisterInSystems(MyCubeBlock block) { if (block.GetType() != typeof(MyCubeBlock)) { MyCubeBlock block1; if (this.ResourceDistributor != null) { MyResourceSourceComponent source = block.Components.Get <MyResourceSourceComponent>(); if (source != null) { this.ResourceDistributor.AddSource(source); } MyResourceSinkComponent sink = block.Components.Get <MyResourceSinkComponent>(); if (!(block is MyThrust) && (sink != null)) { this.ResourceDistributor.AddSink(sink); } IMyRechargeSocketOwner owner = block as IMyRechargeSocketOwner; if (owner != null) { owner.RechargeSocket.ResourceDistributor = this.ResourceDistributor; } } if (this.WeaponSystem != null) { IMyGunObject <MyDeviceBase> gun = block as IMyGunObject <MyDeviceBase>; if (gun != null) { this.WeaponSystem.Register(gun); } } if (this.TerminalSystem != null) { MyTerminalBlock block6 = block as MyTerminalBlock; if (block6 != null) { this.TerminalSystem.Add(block6); } } if ((block == null) || !block.HasInventory) { block1 = null; } else { block1 = block; } MyCubeBlock block2 = block1; if (block2 != null) { this.ConveyorSystem.Add(block2); } IMyConveyorEndpointBlock endpointBlock = block as IMyConveyorEndpointBlock; if (endpointBlock != null) { endpointBlock.InitializeConveyorEndpoint(); this.ConveyorSystem.AddConveyorBlock(endpointBlock); } IMyConveyorSegmentBlock segmentBlock = block as IMyConveyorSegmentBlock; if (segmentBlock != null) { segmentBlock.InitializeConveyorSegment(); this.ConveyorSystem.AddSegmentBlock(segmentBlock); } MyReflectorLight reflector = block as MyReflectorLight; if (reflector != null) { this.ReflectorLightSystem.Register(reflector); } if (block.Components.Contains(typeof(MyDataBroadcaster))) { MyDataBroadcaster broadcaster = block.Components.Get <MyDataBroadcaster>(); this.RadioSystem.Register(broadcaster); } if (block.Components.Contains(typeof(MyDataReceiver))) { MyDataReceiver reciever = block.Components.Get <MyDataReceiver>(); this.RadioSystem.Register(reciever); } if (MyFakes.ENABLE_WHEEL_CONTROLS_IN_COCKPIT) { MyMotorSuspension motor = block as MyMotorSuspension; if (motor != null) { this.WheelSystem.Register(motor); } } IMyLandingGear gear = block as IMyLandingGear; if (gear != null) { this.LandingSystem.Register(gear); } MyGyro gyro = block as MyGyro; if (gyro != null) { this.GyroSystem.Register(gyro); } MyCameraBlock camera = block as MyCameraBlock; if (camera != null) { this.CameraSystem.Register(camera); } } block.OnRegisteredToGridSystems(); }
void UpdateReceiver(MyTerminalBlock block) { PowerReceiver.Update(); }
private void UpdateReceiver(MyTerminalBlock block) { ResourceSink.Update(); }
private void thrust_EnabledChanged(MyTerminalBlock obj) { MarkDirty(); if (CubeGrid.Physics != null && !CubeGrid.Physics.RigidBody.IsActive) CubeGrid.ActivatePhysics(); }
void TerminalSystem_BlockAdded(MyTerminalBlock obj) { var assembler = obj as MyAssembler; if (assembler != null) { if (m_assemblersByKey.Count == 0) { HideError(m_controlsParent); } var key = m_assemblerKeyCounter++; m_assemblersByKey.Add(key, assembler); m_comboboxAssemblers.AddItem(key, assembler.CustomName); if (m_assemblersByKey.Count == 1) m_comboboxAssemblers.SelectItemByIndex(0); assembler.CustomNameChanged += assembler_CustomNameChanged; } }
void TerminalSystem_BlockRemoved(MyTerminalBlock obj) { obj.CustomNameChanged -= block_CustomNameChanged; obj.PropertiesChanged -= block_CustomNameChanged; Debug.Assert(m_blockListbox != null); if (m_blockListbox != null && (obj.ShowInTerminal || m_showAllTerminalBlocks)) { m_blockListbox.Remove((item) => (item.UserData == obj)); } }
private void CustomDataClicked(MyTerminalBlock myTerminalBlock) { myTerminalBlock.OpenWindow(true, true); }
private void UpdateItemAppearance(MyTerminalBlock block, MyGuiControlListbox.Item item) { item.Text.Clear().Append(block.CustomName); if (!block.IsFunctional) { item.ColorMask = Vector4.One; item.Text.AppendStringBuilder(MyTexts.Get(MySpaceTexts.Terminal_BlockIncomplete)); item.FontOverride = MyFontEnum.Red; } else if (!block.HasPlayerAccess(m_controller.Identity.IdentityId)) { item.ColorMask = Vector4.One; item.Text.AppendStringBuilder(MyTexts.Get(MySpaceTexts.Terminal_BlockAccessDenied)); item.FontOverride = MyFontEnum.Red; } else if (block.ShowInTerminal == false) { item.ColorMask = 0.6f * m_colorHelper.GetGridColor(block.CubeGrid).ToVector4(); item.FontOverride = null; } else { item.ColorMask = m_colorHelper.GetGridColor(block.CubeGrid).ToVector4(); item.FontOverride = null; } }
void assembler_CustomNameChanged(MyTerminalBlock block) { Debug.Assert(block is MyAssembler && m_assemblersByKey.ContainsValue(block as MyAssembler)); foreach (var entry in m_assemblersByKey) { if (entry.Value == block) { var comboItem = m_comboboxAssemblers.TryGetItemByKey(entry.Key); comboItem.Value.Clear().AppendStringBuilder(block.CustomName); } } }
public void SelectBlocks(MyTerminalBlock[] blocks) { m_tmpGroup.Blocks.Clear(); m_tmpGroup.Blocks.AddArray(blocks); m_currentGroups.Clear(); CurrentBlocks.Clear(); CurrentBlocks.AddArray(blocks); SelectBlocks(); }
private void motor_EnabledChanged(MyTerminalBlock obj) { Debug.Assert(obj is MyMotorBase); m_wheelsChanged = true; }
public void Init(IMyGuiControlsParent controlsParent, MyPlayer controller, MyCubeGrid grid, MyTerminalBlock currentBlock, MyGridColorHelper colorHelper) { m_controlsParent = controlsParent; m_controller = controller; m_colorHelper = colorHelper; if (grid == null) { foreach (var control in controlsParent.Controls) control.Visible = false; var label = MyGuiScreenTerminal.CreateErrorLabel(MySpaceTexts.ScreenTerminalError_ShipNotConnected, "ErrorMessage"); controlsParent.Controls.Add(label); return; } m_terminalSystem = grid.GridSystems.TerminalSystem; m_tmpGroup = new MyBlockGroup(grid); m_blockSearch = (MyGuiControlTextbox)m_controlsParent.Controls.GetControlByName("FunctionalBlockSearch"); m_blockSearch.TextChanged += blockSearch_TextChanged; m_blockSearchClear = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("FunctionalBlockSearchClear"); m_blockSearchClear.ButtonClicked += blockSearchClear_ButtonClicked; m_blockListbox = (MyGuiControlListbox)m_controlsParent.Controls.GetControlByName("FunctionalBlockListbox"); m_blockNameLabel = (MyGuiControlLabel)m_controlsParent.Controls.GetControlByName("BlockNameLabel"); m_blockNameLabel.Text = ""; m_groupName = (MyGuiControlTextbox)m_controlsParent.Controls.GetControlByName("GroupName"); m_groupName.TextChanged += m_groupName_TextChanged; m_showAll = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("ShowAll"); m_showAll.Selected = m_showAllTerminalBlocks; m_showAll.ButtonClicked += showAll_Clicked; m_showAll.SetToolTip(MySpaceTexts.Terminal_ShowAllInTerminal); m_showAll.IconRotation = 0f; m_showAll.Icon = new MyGuiHighlightTexture { Normal = @"Textures\GUI\Controls\button_hide.dds", Highlight = @"Textures\GUI\Controls\button_unhide.dds", SizePx = new Vector2(40f, 40f), }; m_showAll.Size = new Vector2(0, 0); m_showAll.HighlightType = MyGuiControlHighlightType.FORCED; m_showAll.IconOriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP; m_groupSave = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("GroupSave"); m_groupSave.TextEnum = MySpaceTexts.TerminalButton_GroupSave; m_groupSave.TextAlignment = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER; m_groupSave.ButtonClicked += groupSave_ButtonClicked; m_groupDelete = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("GroupDelete"); m_groupDelete.ButtonClicked += groupDelete_ButtonClicked; m_groupDelete.Enabled = false; m_blockListbox.ItemsSelected += blockListbox_ItemSelected; RefreshBlockList(); m_terminalSystem.BlockAdded += TerminalSystem_BlockAdded; m_terminalSystem.BlockRemoved += TerminalSystem_BlockRemoved; m_terminalSystem.GroupAdded += TerminalSystem_GroupAdded; m_terminalSystem.GroupRemoved += TerminalSystem_GroupRemoved; if (currentBlock != null) SelectBlocks(new MyTerminalBlock[] { currentBlock }); }
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; }
void TerminalSystem_BlockRemoved(MyTerminalBlock obj) { var removedAssembler = obj as MyAssembler; if (removedAssembler != null) { removedAssembler.CustomNameChanged -= assembler_CustomNameChanged; int? key = null; foreach (var entry in m_assemblersByKey) { if (entry.Value == removedAssembler) { key = entry.Key; break; } } if (key.HasValue) { m_assemblersByKey.Remove(key.Value); m_comboboxAssemblers.RemoveItem(key.Value); } if (removedAssembler == m_selectedAssembler) { if (m_assemblersByKey.Count > 0) m_comboboxAssemblers.SelectItemByIndex(0); else ShowError(MySpaceTexts.ScreenTerminalError_NoAssemblers, m_controlsParent); } } }
private void block_OnClose(MyEntity obj) { UnregisterEvents(); m_block = null; }