Guest User

Untitled

a guest
Aug 31st, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.82 KB | None | 0 0
  1. using System;
  2. using UnityEngine;
  3.  
  4. namespace GUI1
  5. {
  6.                                                
  7.  
  8.     /*
  9.     If you are using applauncher with a mod that uses a partless loader, for example by adding this attribute to your class: [KSPAddon(KSPAddon.Startup.MainMenu, true)].
  10.     http:    <param name="startup">When this addon should be started.</param>  
  11.     <param name="once"> Whether KSP should start up your addon just once per game session, or every time the startup time is reached. </param>
  12.     If you want your addon to persist forever, even through scene changes, after being started once, set once to true. call DontDestroyOnLoad(this) in your Start() function.
  13.     <see href="https:    */
  14.  
  15.     [KSPAddon(KSPAddon.Startup.SpaceCentre, true)]
  16.  
  17.     public class GUI1: MonoBehaviour
  18.     {
  19.  
  20.        
  21.                 private ApplicationLauncherButton _appLauncherButton = null;
  22.                         private Texture2D _appLauncherIcon = GameDatabase.Instance.GetTexture("GUI1/gfx/applaunchericon", false);
  23.                 private const int _configWindowId = 001122;
  24.                 private bool _showWindow = false;
  25.                 private Rect _windowRect;
  26.  
  27.                                                                
  28.                                        
  29.         public void Awake()
  30.         {
  31.             Utils.Log("info", "Awake ...");
  32.  
  33.                                                            
  34.  
  35.             GameEvents.onGUIApplicationLauncherReady.Add(OnGUIAppLauncherReady);
  36.             GameEvents.onGUIApplicationLauncherDestroyed.Add(OnGUIAppLauncherDestroyed);
  37.         }
  38.                                                        
  39.         public void Start()
  40.         {
  41.  
  42.             DontDestroyOnLoad(this);
  43.             Utils.Log("info", "Started !");
  44.                         if (!_showWindow) OnGUIAppLauncherReady();          
  45.         }
  46.                                                                                
  47.         public void OnGUI()
  48.         {
  49.             if (_showWindow)
  50.             {
  51.                                                                
  52.  
  53.                 if (_windowRect == default(Rect))
  54.                 {
  55.                     const int width = 300;
  56.                     const int height = 100;
  57.  
  58.                     var x = (Screen.width / 2) - (width / 2);
  59.                     var y = (Screen.height / 2) - (height / 2);
  60.  
  61.                     _windowRect = new Rect(x, y, width, height);
  62.                 }
  63.  
  64.                 GUI.skin = HighLogic.Skin;
  65.                 _windowRect = GUILayout.Window(_configWindowId, _windowRect, OnConfigWindow, "GUI1");
  66.             }
  67.  
  68.         }
  69.                                        
  70.         private void OnGUIAppLauncherReady()
  71.         {
  72.             Utils.Log("info", "OnGUIAppLauncherReady()");
  73.             if (_appLauncherButton == null)
  74.             {
  75.                 Utils.Log("info", "OnGUIAppLauncherReady() - Populating AppLauncher ...");
  76.                 _appLauncherButton = ApplicationLauncher.Instance.AddModApplication(
  77.                                         () => OnAppLauncherEvent(AppLauncherEvent.OnTrue),
  78.                                         () => OnAppLauncherEvent(AppLauncherEvent.OnFalse),
  79.                                         () => OnAppLauncherEvent(AppLauncherEvent.OnHover),
  80.                                         () => OnAppLauncherEvent(AppLauncherEvent.OnHoverOut),
  81.                                         () => OnAppLauncherEvent(AppLauncherEvent.OnEnable),
  82.                                         () => OnAppLauncherEvent(AppLauncherEvent.OnDisable),
  83.                                         ApplicationLauncher.AppScenes.SPACECENTER | ApplicationLauncher.AppScenes.FLIGHT,
  84.                                         _appLauncherIcon);
  85.             }
  86.         }
  87.  
  88.         private void OnGUIAppLauncherDestroyed()
  89.         {
  90.             try
  91.             {
  92.                 Utils.Log("info", "OnGUIAppLauncherDestroyed()");
  93.                 ApplicationLauncher.Instance.RemoveModApplication(_appLauncherButton);
  94.                 _appLauncherButton = null;
  95.             }
  96.             catch(Exception e)
  97.             {
  98.                 Utils.Log("err", "OnGUIAppLauncherDestroyed()");
  99.                 Debug.LogException(e);
  100.             }
  101.         }
  102.  
  103.                                         private void OnAppLauncherEvent(AppLauncherEvent appLauncherEvent)
  104.         {
  105.            
  106.             switch (appLauncherEvent)
  107.             {
  108.                 case AppLauncherEvent.OnTrue:
  109.                     _showWindow = true;
  110.                     break;
  111.                 case AppLauncherEvent.OnFalse:
  112.                     _showWindow = false;
  113.                     break;
  114.                 case AppLauncherEvent.OnHover:
  115.                     break;
  116.                 case AppLauncherEvent.OnHoverOut:
  117.                     break;
  118.                 case AppLauncherEvent.OnEnable:
  119.                     Utils.Log("info", "AppLauncherEvent.OnEnable");
  120.                     break;
  121.                 case AppLauncherEvent.OnDisable:
  122.                     Utils.Log("info", "AppLauncherEvent.OnDisable");
  123.                     break;
  124.                 default:
  125.                     throw new ArgumentOutOfRangeException(nameof(appLauncherEvent));
  126.             }            
  127.         }
  128.  
  129.  
  130.         private enum AppLauncherEvent
  131.         {
  132.             OnTrue,
  133.             OnFalse,
  134.             OnHover,
  135.             OnHoverOut,
  136.             OnEnable,
  137.             OnDisable,
  138.         }
  139.  
  140.         private void OnConfigWindow(int windowId)
  141.         {
  142.             GUILayout.BeginHorizontal();
  143.             if (GUILayout.Button("Button 1"))
  144.             {
  145.                
  146.             }
  147.             if (GUILayout.Button("Button 2"))
  148.             {
  149.                
  150.             }
  151.             GUILayout.EndHorizontal();
  152.             GUI.DragWindow();
  153.         }
  154.     }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment