public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { SyncFlag = true; var sinkComp = new MyResourceSinkComponent(); sinkComp.Init( BlockDefinition.ResourceSinkGroup, BlockDefinition.RequiredPowerInput, () => (Enabled && IsFunctional) ? ResourceSink.MaxRequiredInput : 0f); ResourceSink = sinkComp; base.Init(objectBuilder, cubeGrid); MyObjectBuilder_TextPanel ob = (MyObjectBuilder_TextPanel)objectBuilder; PrivateTitle.Append(ob.Title); PrivateDescription.Append(ob.Description); PublicDescription.Append(ob.PublicDescription); PublicTitle.Append(ob.PublicTitle); m_currentPos = ob.CurrentShownTexture; AccessFlag = ob.AccessFlag; if (Sync.IsServer && Sync.Clients != null) { Sync.Clients.ClientRemoved += TextPanel_ClientRemoved; } FontColor = ob.FontColor; BackgroundColor = ob.BackgroundColor; NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME; Render.NeedsDrawFromParent = true; this.ChangeInterval = ob.ChangeInterval; FontSize = ob.FontSize; ShowTextFlag = ob.ShowText; if (ob.SelectedImages != null) { foreach (var savedTextureName in ob.SelectedImages) { foreach (var textureDefinition in m_definitions) { if (textureDefinition.Id.SubtypeName == savedTextureName) { m_selectedTexturesToDraw.Add(textureDefinition); break; } } } m_currentPos = Math.Min(m_currentPos, m_selectedTexturesToDraw.Count); RaisePropertiesChanged(); } ResourceSink.Update(); ResourceSink.IsPoweredChanged += PowerReceiver_IsPoweredChanged; SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged; }
public override void UpdateAfterSimulation() { base.UpdateAfterSimulation(); if (IsBeingHacked) { PrivateDescription.Clear(); SendChangeDescriptionMessage(PrivateDescription, false); } ResourceSink.Update(); if (IsFunctional && IsWorking) { if (ShowTextOnScreen && IsInRange() == false) { if (!m_isOutofRange) { m_isOutofRange = true; ReleaseRenderTexture(); } return; } if (ShowTextOnScreen && (NeedsToDrawText() || m_isOutofRange || m_forceUpdateText)) { m_descriptionChanged = false; m_forceUpdateText = false; m_fontColorChanged = false; m_fontSizeChanged = false; m_backgroundColorChanged = false; m_fontChanged = false; Render.RenderTextToTexture(ShowTextFlag == ShowTextOnScreenFlag.PUBLIC ? m_publicDescription.ToString() : m_privateDescription.ToString(), FontSize * BlockDefinition.TextureResolution / DEFAULT_RESOLUTION, FontColor, BackgroundColor, BlockDefinition.TextureResolution, BlockDefinition.TextureAspectRadio); FailedToRenderTexture = false; } m_isOutofRange = false; if (ShowTextOnScreen == false) { UpdateTexture(); } } else if (IsOpen) { SendChangeOpenMessage(false); if (m_textBox != null) { m_textBox.CloseScreen(); //m_textBox = null; } MyScreenManager.CloseScreen(typeof(MyGuiScreenTerminal)); } }
public override void UpdateAfterSimulation() { base.UpdateAfterSimulation(); if (IsBeingHacked) { PrivateDescription.Clear(); SyncObject.SendChangeDescriptionMessage(PrivateDescription, false); } PowerReceiver.Update(); if (IsFunctional && IsWorking) { if (ShowTextOnScreen && IsInRange() == false) { if (!m_isOutofRange) { m_isOutofRange = true; ReleaseRenderTexture(); } return; } if (ShowTextOnScreen && (NeedsToDrawText() || m_isOutofRange || m_forceUpdateText)) { m_descriptionChanged = false; m_forceUpdateText = false; m_fontColorChanged = false; m_fontSizeChanged = false; m_backgroundColorChanged = false; Render.RenderTextToTexture(EntityId, ShowTextFlag == ShowTextOnScreenFlag.PUBLIC ? m_publicDescription.ToString() : m_privateDescription.ToString(), FontSize * BlockDefinition.TextureResolution / DEFAULT_RESOLUTION, FontColor, BackgroundColor, BlockDefinition.TextureResolution, BlockDefinition.TextureAspectRadio); FailedToRenderTexture = false; } m_isOutofRange = false; if (ShowTextOnScreen == false) { UpdateTexture(); } } }