public void Awake() { LoadTexture("GameData/kOS/GFX/font_sml.png", ref FontImage); LoadTexture("GameData/kOS/GFX/monitor_minimal.png", ref TerminalImage); LoadTexture("GameData/kOS/GFX/buttons.png", ref ButtonImage); for (var i = 0; i < CPU.FUNCTION_BUTTON_COUNT; i++) { FunctionButtonDrawInfo state = new FunctionButtonDrawInfo(); state.Bounds = new Rect(19 + i * 30, 362, 28, 28); state.VisBounds = new Rect(19 - 5 + i * 30, 362 - 5, 28 + 10, 28 + 10); state.Number = i; if (i == 3) state.Onstate = true; ButtonDrawInfos.Add(state); } }
// Draw function buttons on the terminal void drawButton(FunctionButtonDrawInfo drawInfo) { // Respect the state of the window GUI.color = isLocked ? COLOR : COLOR_ALPHA; #region Draw button background GUI.BeginGroup(drawInfo.VisBounds); int x,y; bool isDown = Cpu.ButtonStates[drawInfo.Number].DownState; x = isDown ? -37 : 0; // Different coords if button is down // Draw background GUI.DrawTexture(new Rect(x, -54, ButtonImage.width, ButtonImage.height), ButtonImage); GUI.EndGroup(); // Draw button glow if state is on try { if (Cpu.ButtonStates[drawInfo.Number].LightState == true) { GUI.BeginGroup(drawInfo.VisBounds); GUI.color = isLocked ? BUTTON_GLOW_GREEN : BUTTON_GLOW_GREEN_ALPHA; GUI.DrawTexture(new Rect(x, -91, ButtonImage.width, ButtonImage.height), ButtonImage); GUI.color = isLocked ? COLOR : COLOR_ALPHA; GUI.EndGroup(); } } catch (Exception e) { throw new Exception(e.ToString() + " while tring to draw button " + drawInfo.Number); } #endregion #region Draw Number int downOffset = isDown ? 1 : 0; int drawnNumber = drawInfo.Number + 1; GUI.BeginGroup(new Rect(drawInfo.VisBounds.xMin + 8 + downOffset, drawInfo.VisBounds.yMin + 8 + downOffset, 20, 20)); // Figure out texture coords for the number if (drawnNumber < 5) { x = 88; y = drawnNumber * 20; } else { x = 108; y = (drawnNumber - 5) * 20; } GUI.DrawTexture(new Rect(-x, -y, ButtonImage.width, ButtonImage.height), ButtonImage); GUI.EndGroup(); #endregion }