public ScienceWindow(ScienceChecklistAddon Parent, SettingsWindow settingsWindow, HelpWindow helpWindow) { _parent = Parent; _settingsWindow = settingsWindow; _helpWindow = helpWindow; _logger = new Logger(this); _defaultSize = new Vector2(500, 400); _rect = wScale(new Rect(40, 40, _defaultSize.x, _defaultSize.y)); _defaultSize3 = new Vector2(400, 200); _rect3 = wScale(new Rect(40, 40, _defaultSize3.x, _defaultSize3.y)); _scrollPos = new Vector2(); _filter = new ExperimentFilter(_parent); _progressTexture = TextureHelper.LoadImage("icons\\scienceProgress.png", 13, 13); _completeTexture = TextureHelper.LoadImage("icons\\scienceComplete.png", 13, 13); _progressTextureCompact = TextureHelper.LoadImage("icons\\scienceProgressCompact.png", 8, 8); _completeTextureCompact = TextureHelper.LoadImage("icons\\scienceCompleteCompact.png", 8, 8); _currentSituationTexture = TextureHelper.LoadImage("icons\\currentSituation.png", 25, 21); _currentVesselTexture = TextureHelper.LoadImage("icons\\currentVessel.png", 25, 21); _unlockedTexture = TextureHelper.LoadImage("icons\\unlocked.png", 25, 21); _allTexture = TextureHelper.LoadImage("icons\\all.png", 25, 21); _searchTexture = TextureHelper.LoadImage("icons\\search.png", 25, 21); _clearSearchTexture = TextureHelper.LoadImage("icons\\clearSearch.png", 25, 21); _minimizeTexture = TextureHelper.LoadImage("icons\\minimize.png", 16, 16); _maximizeTexture = TextureHelper.LoadImage("icons\\maximize.png", 16, 16); _closeTexture = TextureHelper.LoadImage("icons\\close.png", 16, 16); _helpTexture = TextureHelper.LoadImage("icons\\help.png", 16, 16); _settingsTexture = TextureHelper.LoadImage("icons\\settings.png", 16, 16); _emptyTexture = new Texture2D(1, 1, TextureFormat.ARGB32, false); _emptyTexture.SetPixels(new[] { Color.clear }); _emptyTexture.Apply(); _parent.Config.HideCompleteEventsChanged += (s, e) => RefreshFilter(s, e); _parent.Config.CompleteWithoutRecoveryChanged += (s, e) => RefreshFilter(s, e); _parent.ScienceEventHandler.FilterUpdateEvent += (s, e) => RefreshFilter(s, e); _parent.ScienceEventHandler.SituationChanged += (s, e) => UpdateSituation(s, e); _parent.Config.UiScaleChanged += OnUiScaleChange; }
// Called by Unity once to initialize the class, just before Update is called. public void Start( ) { _logger.Trace("Start"); if (_addonInitialized == true) { // For some reason the addon can be instantiated several times by the KSP addon loader (generally when going to/from the VAB), // even though we set onlyOnce to true in the KSPAddon attribute. HammerMusicMute( ); // Ensure we enforce music volume anyway return; } _addonInitialized = true; _active = false; // Config Config = new Config( ); Config.Load( ); // Music Muting if (Config.MusicStartsMuted) { Muted = true; ScreenMessages.PostScreenMessage("[x] Science! - Music Mute"); } GameEvents.onGameSceneSwitchRequested.Add(this.onGameSceneSwitchRequested); GameEvents.onLevelWasLoaded.Add(this.onLevelWasLoaded); // _logger.Trace( "Making DMagic Factory" ); DMagic = new DMagicFactory( ); // _logger.Trace( "Made DMagic Factory" ); // _logger.Trace( "Making ScienceContext" ); Science = new ScienceContext(this); // _logger.Trace( "Made ScienceContext" ); // Start event handlers ScienceEventHandler = new xScienceEventHandler(this); // Settings window _settingsWindow = new SettingsWindow(this); Config.UseBlizzysToolbarChanged += Settings_UseBlizzysToolbarChanged; Config.RighClickMutesMusicChanged += Settings_RighClickMutesMusicChanged; // Help window _helpWindow = new HelpWindow(this); // Status window _alertNoise = gameObject.AddComponent <Noise>( ); _statusWindow = new StatusWindow(this); _statusWindow.NoiseEvent += OnPlayNoise; _statusWindow.WindowClosed += OnStatusWindowClosed; _statusWindow.OnCloseEvent += OnStatusWindowClosed; _statusWindow.OnOpenEvent += OnStatusWindowOpened; // Checklist window _checklistWindow = new ScienceWindow(this, _settingsWindow, _helpWindow); _checklistWindow.OnCloseEvent += OnChecklistWindowClosed; _checklistWindow.OnOpenEvent += OnChecklistWindowOpened; // ShipState Window _shipStateWindow = new ShipStateWindow(this); // Save and load checklist window config when the game scene is changed // We are only visible in some scenes GameEvents.onGameSceneSwitchRequested.Add(new EventData <GameEvents.FromToAction <GameScenes, GameScenes> > .OnEvent(this.OnGameSceneSwitch)); // Callbacks for buttons - we init when the "Launcher" toolbar is ready GameEvents.onGUIApplicationLauncherReady.Add(Load); GameEvents.onGUIApplicationLauncherDestroyed.Add(Unload); // Callbacks for F2 GameEvents.onHideUI.Add(OnHideUI); GameEvents.onShowUI.Add(OnShowUI); DontDestroyOnLoad(this); _logger.Trace("Done Start"); }