Page 8 of 11

Re: [Release] HUD Selector v1.17

Posted: Thu Mar 10, 2022 10:23 am
by Cholmondely
Help!

I wish to update some older HUDs for compatibility with HUD Selector.

But I don't understand the instructions.
Norby wrote: Fri Jul 04, 2014 11:34 pm
Other HUDs can join by the following steps:
* must be the plist differently named than hud.plist
* must define a worldScript (for example in Config/script.js) with similar this.name than the plist
* set your HUD in startUp and add your HUD and plist name into HUDSelector:

Code: Select all

  this.name = "yourhud";
  this.startUp = function () {
    player.ship.hud =  this.name + ".plist";
    var w = worldScripts.hudselector;
    if( w ) w.$HUDSelectorAddHUD("Your HUD", this.name);
  }
* if your HUD define different plists for 4:3, 16:10 and 16:9 screens named to "yourhud.plist", "yourhud10.plist" and "yourhud9.plist" then give all of them to AddHUD:

Code: Select all

   if( h ) h.$HUDSelectorAddHUD("Your HUD", this.name, this.name+"10", this.name+"9" );
HUDSelector will set the proper plist for the current screen but will not follow the window resizes, for example if you switch to fullscreen during flight. In this case you can set your HUD again by activating the HUDSelector equipment.

* You can define a callback function in your worldScript to start/stop some parts of your scripted HUD:

Code: Select all

  this.$HUDSelectorCallBack = function ( off ) {
    var w = worldScripts["yourhud"];
    if( off ) { //do things to disable your HUD like rename functions
      if( w.shipWillLaunchFromStation ) {
        w.$save_shipWillLaunchFromStation = w.shipWillLaunchFromStation;
        delete w.shipWillLaunchFromStation;
      }
    } else { //do things to activate your HUD like restore disabled functions
      if( !w.shipWillLaunchFromStation )
        eval("w.shipWillLaunchFromStation = "+w.$save_shipWillLaunchFromStation);
    }
  }
There are a built-in support for some existing Multi-Function Display (MFD) OXPs, these will be set as default MFDs.
New MFDs can register in startUp:

Code: Select all

 var h = worldScripts.hudselector;
 if( h && h.$HUDSelectorAddMFD ) h.$HUDSelectorAddMFD(this.name);
If the name of the MFD defined in setMultiFunctionText() call is different from the worldscript name then must give the name in the second parameter:

Code: Select all

 var h = worldScripts.hudselector;
 if( h && h.$HUDSelectorAddMFD ) h.$HUDSelectorAddMFD(this.name, "nameOfTheMFD");
Can anybody explain the relevant bits of this to me please (and possibly even provide an example!)?

* must be the plist differently named than hud.plist ... ?

* must define a worldScript (for example in Config/script.js) with similar this.name than the plist ... !

* set your HUD in startUp and add your HUD and plist name into HUDSelector: ... I can't find any of the various HUD Selector recognised HUDS listed anywhere inside the .oxp (eg XenonHUD, VimanaHUD, Coluber HUD, Dangerous HUD...)

et cetera, et cetera...

Re: [Release] HUD Selector v1.17

Posted: Sun Mar 13, 2022 12:03 pm
by Cholmondely
Help!!
Cholmondely wrote: Thu Mar 10, 2022 10:23 am
Help!

I wish to update some older HUDs for compatibility with HUD Selector.

But I don't understand the instructions.
Norby wrote: Fri Jul 04, 2014 11:34 pm
Other HUDs can join by the following steps:
* must be the plist differently named than hud.plist
* must define a worldScript (for example in Config/script.js) with similar this.name than the plist
* set your HUD in startUp and add your HUD and plist name into HUDSelector:

Code: Select all

  this.name = "yourhud";
  this.startUp = function () {
    player.ship.hud =  this.name + ".plist";
    var w = worldScripts.hudselector;
    if( w ) w.$HUDSelectorAddHUD("Your HUD", this.name);
  }
* if your HUD define different plists for 4:3, 16:10 and 16:9 screens named to "yourhud.plist", "yourhud10.plist" and "yourhud9.plist" then give all of them to AddHUD:

Code: Select all

   if( h ) h.$HUDSelectorAddHUD("Your HUD", this.name, this.name+"10", this.name+"9" );
HUDSelector will set the proper plist for the current screen but will not follow the window resizes, for example if you switch to fullscreen during flight. In this case you can set your HUD again by activating the HUDSelector equipment.

* You can define a callback function in your worldScript to start/stop some parts of your scripted HUD:

Code: Select all

  this.$HUDSelectorCallBack = function ( off ) {
    var w = worldScripts["yourhud"];
    if( off ) { //do things to disable your HUD like rename functions
      if( w.shipWillLaunchFromStation ) {
        w.$save_shipWillLaunchFromStation = w.shipWillLaunchFromStation;
        delete w.shipWillLaunchFromStation;
      }
    } else { //do things to activate your HUD like restore disabled functions
      if( !w.shipWillLaunchFromStation )
        eval("w.shipWillLaunchFromStation = "+w.$save_shipWillLaunchFromStation);
    }
  }
There are a built-in support for some existing Multi-Function Display (MFD) OXPs, these will be set as default MFDs.
New MFDs can register in startUp:

Code: Select all

 var h = worldScripts.hudselector;
 if( h && h.$HUDSelectorAddMFD ) h.$HUDSelectorAddMFD(this.name);
If the name of the MFD defined in setMultiFunctionText() call is different from the worldscript name then must give the name in the second parameter:

Code: Select all

 var h = worldScripts.hudselector;
 if( h && h.$HUDSelectorAddMFD ) h.$HUDSelectorAddMFD(this.name, "nameOfTheMFD");
Can anybody explain the relevant bits of this to me please (and possibly even provide an example!)?

* must be the plist differently named than hud.plist ... ?

* must define a worldScript (for example in Config/script.js) with similar this.name than the plist ... !

* set your HUD in startUp and add your HUD and plist name into HUDSelector: ... I can't find any of the various HUD Selector recognised HUDS listed anywhere inside the .oxp (eg XenonHUD, VimanaHUD, Coluber HUD, Dangerous HUD...)

et cetera, et cetera...

Re: [Release] HUD Selector v1.17

Posted: Sun Mar 13, 2022 5:24 pm
by Old Murgh
Cholmondely wrote: Sun Mar 13, 2022 12:03 pm
Help!!
A plea like that, I wish I could help.. But in the face of such code, I feel as helpless as you seem to. :(

Re: [Release] HUD Selector v1.17

Posted: Thu Mar 17, 2022 12:55 am
by phkb
Cholmondely wrote: Sun Mar 13, 2022 12:03 pm
must be the plist differently named than hud.plist ... ?
Yes.
Cholmondely wrote: Sun Mar 13, 2022 12:03 pm
set your HUD in startUp and add your HUD and plist name into HUDSelector:
In Xenon HUD, the code which does this is:

Code: Select all

	var h = worldScripts.hudselector;
	if (h) h.$HUDSelectorAddHUD("Xenon HUD", this.name);
Cholmondely wrote: Sun Mar 13, 2022 12:03 pm
Can anybody explain the relevant bits of this to me please (and possibly even provide an example!)?
Coluber HUD is probably the simplest example (Xenon and Vimana are both "everything and the kitchen sink" types of HUDs, so the actual HUD Selector code can get a little lost in the mix).

So, from the Coluber HUD OXP, there are two HUD plist files, one for normal flight mode, and one for when you're docked. The dock version has "-dock" in the filename. The content of these plist files is not important right now - the important thing is that there's two of them that are used in different game states (in space or docked).

Everything else is covered in the "script.js" file. The script file allows for some custom crosshair images to be used, so I'll strip out those references to concentrate on the HUD selector code. That leaves the following code:

Code: Select all

"use strict";
this.name = "coluber_hud_ch01";
this.author = "Captain Beatnik [email protected], Norby [email protected]";
this.licence = "CC BY-NC-SA 4.0";

this.startUp = function () {
	player.ship.hud =  this.name + "-dock.plist";
	var h = worldScripts.hudselector;
	if( h ) h.$HUDSelectorAddHUD("Coluber HUD CH01", this.name);
}

this.shipWillDockWithStation = function(station) {
	player.ship.hud =  this.name + "-dock.plist";
}

this.shipWillLaunchFromStation = function() {
	player.ship.hud =  this.name + ".plist";
}

this.$HUDSelectorCallBack = function ( off ) {
	var w = worldScripts.coluber_hud_ch01;
	if( off ) { //do things to disable your HUD like rename functions
		if( w.shipWillDockWithStation ) {
			w.$save_shipWillDockWithStation = w.shipWillDockWithStation;
			delete w.shipWillDockWithStation;
		}
		if( w.shipWillLaunchFromStation ) {
			w.$save_shipWillLaunchFromStation = w.shipWillLaunchFromStation;
			delete w.shipWillLaunchFromStation;
		}
	} else { //do things to activate your HUD like restore disabled functions
		//  if the player is docked, use the docked version of the HUD
		if (player.ship.docked) player.ship.hud =  this.name + "-dock.plist";
		if( !w.shipWillLaunchFromStation ) {
			eval("w.shipWillDockWithStation = "+w.$save_shipWillDockWithStation);
			eval("w.shipWillLaunchFromStation = "+w.$save_shipWillLaunchFromStation);
		}
	}
}
Going through this bit by bit:

Code: Select all

this.startUp = function () {
	player.ship.hud =  this.name + "-dock.plist";
	var h = worldScripts.hudselector;
	if( h ) h.$HUDSelectorAddHUD("Coluber HUD CH01", this.name);
}
This code, the "startUp" function world script, runs once when the game starts. When executed, it will set the players HUD file to the Coluber HUD docked version (because you are always docked on startup).

Next we create a reference to the HUD selector worldscript file. If HUD selector isn't installed, the next line of code won't execute. But if it is installed, we execute the $HUDSelectorAddHUD function, passing in the name of the HUD, and the name of the script file.

If there was only one HUD plist file (edit to add: and there was no additional functionality implemented thru worldscript events), that's it. Job done. The HUD is now linked into HUD selector. However, because there are two HUD plists, that are swapped in or out based on your docked status, there's a bit more work to do.

Coluber HUD implements two worldscripts for switching the HUD: shipWillDockWithStation and shipWillLaunchFromStation. However, if another HUD has been selected via HUD Selector, we don't want those functions to be executed, otherwise mass confusion will occur. So, we add the $HUDSelectorCallBack function. HUD Selector will look for and execute this function in a HUD's worldscript whenever it changes the HUD, to either disable or enable the HUD. It notifies the HUD about which state to move to via the passed in paramater, "off". If that value is true, the HUD is being turned off. If it's false, the HUD is being turned on.

When the HUD is being turned off, we need to hide our two worldscript functions from Oolite, by copying the function to a new location and deleting the original. Here's the code for the first worldscript:

Code: Select all

	var w = worldScripts.coluber_hud_ch01;
	if( off ) { //do things to disable your HUD like rename functions
		if( w.shipWillDockWithStation ) {
			w.$save_shipWillDockWithStation = w.shipWillDockWithStation;
			delete w.shipWillDockWithStation;
		}
First, we're adding a reference to the Coluber HUD script, which will make the code afterwards a little easier to read.
Next, we're checking if the "off" parameter is true. If it is, we then check to see if the shipWillDockWithStation is in the place we expect it to be. We're doing this just in case things have gotten out of sync somehow. In 99.999% of cases, shipWillDockWithStation will be present. If so, we then copy the function to a new location, one that won't be picked up by Oolite. And then we delete the original function.

(Note for purists: This code isn't actually "copying" anything. It's setting a new reference to an existing object, then deleting the original reference to that object. However, for the sake of making this tutorial easier to understand for the inexperienced out there, I'm using "copy" terminology.)

The next section of code does the same thing for the shipWillLaunchFromStation worldscript function.

At this point, Coluber HUD has been disabled.

Now, if HUD selector enables Coluber HUD, the function is called again, only now, "off" is false. Let's look at the code that runs in that instance:

Code: Select all

	} else { //do things to activate your HUD like restore disabled functions
		//  if the player is docked, use the docked version of the HUD
		if (player.ship.docked) player.ship.hud =  this.name + "-dock.plist";
		if( !w.shipWillLaunchFromStation ) {
			eval("w.shipWillDockWithStation = "+w.$save_shipWillDockWithStation);
			eval("w.shipWillLaunchFromStation = "+w.$save_shipWillLaunchFromStation);
		}
	}
The first thing that happens is that the player's HUD is set to Coluber's docked HUD. (Note: there is actually a bit of a bug in the assumption here. HUD Selector can switch HUD's during flight, so really this code should be doing a check of whether we're in flight or not before setting the HUD)
After this, we are checking to see if there is a shipWillLaunchFromStation function present in our worldscript. If HUD Selector was run previously, then in 99.999% of cases it won't be there. When it doesn't find that function, it then executes two "eval" statements to copy our saved versions of the two worldscript functions back to their original places.

A small visualisation might help is showing what's going on.
If Coluber HUD is the only HUD installed, or if it has been enabled by HUD selector, it's worldscript would look like this:

Code: Select all

    this.startUp () {...}
    this.shipWillDockWithStation () {...}
    this.shipWIllLaunchFromStation () {...}
If Coluber HUD has been disabled by HUD selector, it's worldscript would look like this:

Code: Select all

    this.startUp () {...}
    this.$save_shipWillDockWithStation () {...}
    this.$save_shipWillLaunchFromStation () {...}
And that's it. The important thing to note is that, as more bells and whistles are added to a HUD's worldscript, more code needs to be added to the $HUDSelectorCallback function to disable or enable those functions to prevent HUD's from conflicting with each other.

Hopefully that helps a bit.

Re: [Release] HUD Selector v1.17

Posted: Fri Mar 18, 2022 10:15 am
by Cholmondely
phkb wrote: Thu Mar 17, 2022 12:55 am
Cholmondely wrote: Sun Mar 13, 2022 12:03 pm
must be the plist differently named than hud.plist ... ?
Yes

...

Hopefully that helps a bit.
Nick, "thank you" for this, going to all this trouble! I've printed it out to help with my tweaking.

So, I want to put up KillerWolf's Steampunk HUD on the Expansions Manager.

And therefore add-in HUDSelector compatibility.

I was looking at the wiki page, trying to puzzle it out (I still don't understand the sentence above - two .plists?

There is only the one - the hud.plist - in Steampunk HUD. What is this second differently named .plist? I presume that it is replaced by the new script.js in the Config folder which contains the code in your second answer above var h = worldScripts.hudselector; if (h) h.$HUDSelectorAddHUD("Xenon HUD", this.name);).




Steampunk HUD has just a Config folder & an Images folder (and a ReadMe). The Config folder has merely the hud.plist, the Images folder has the hud.png, a second steamwolffolded.png (with the contrast lens folded down - it is currently just beneath the station's docking port on the viewscreen), and a Thumbs.db (Whatever that is... I can't manage to open it to sneak a peek!).

Using the second image requires editing the hud.plist outside the game. There is no in-game swapping between the images. I don't yet have the skills to do anything about this. Or to add MFD's.

BUT! KillerWolf's blessed hud.plist looks like this (legacy script):

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>dials</key><!-- these are drawn, in order, after the legends -->
	<array>
		<dict><!-- Targetting enhancement -->
			<key>equipment_required</key>
			<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
			<key>selector</key>
			<string>drawTargetReticle:</string>
		</dict>
		<dict><!-- station aegis, uses Images/aegis.png as indicator -->
			<key>alpha</key>
			<real>1.2</real>
			<key>selector</key>
			<string>drawAegis:</string>
			<key>x</key>
			<integer>-114</integer>
			<key>y</key>
			<integer>-208</integer>
			<key>width</key>
			<integer>12</integer>
			<key>height</key>
			<integer>15</integer>
		</dict>
		<dict><!-- scanner -->
			<key>alpha</key>
			<real>0.1</real>
			<key>selector</key>
			<string>drawScanner:</string>
			<key>x</key>
			<integer>0</integer>
			<key>y</key>
			<integer>-168</integer>
			<key>height</key>
			<real>42</real>
			<key>width</key>
			<real>152</real>
         		<key>rgb_color</key>
         		<array>
            		<real>0.93</real>
            		<real>0.93</real>
            		<real>0.93</real>
         		</array>
		</dict>
		<dict><!-- scanner zoom indicator, uses Images/zoom.png to provide 5 levels -->
			<key>selector</key>
			<string>drawScannerZoomIndicator:</string>
			<key>height</key>
			<integer>8</integer>
			<key>x</key>
			<integer>-80</integer>
			<key>y</key>
			<integer>-233</integer>
         		<key>rgb_color</key>
         		<array>
            		<real>0.0</real>
            		<real>1.0</real>
            		<real>0.0</real>
         		</array>

		</dict>
		<dict><!-- wasp indicator status -->
			<key>alpha</key>
			<real>0.60</real>
			<key>height</key>
			<integer>12</integer>
			<key>width</key>
			<integer>12</integer>
			<key>selector</key>
			<string>drawScoopStatus:</string>
			<key>x</key>
			<integer>107</integer>
			<key>y</key>
			<integer>-207</integer>
		</dict>
		<dict><!-- missile display, x and y give the location, the x-spacing is given by spacing, the size defines the icon size -->
			<key>height</key>
			<integer>4</integer>
			<key>selector</key>
			<string>drawMissileDisplay:</string>
			<key>spacing</key>
			<integer>8</integer>
			<key>width</key>
			<integer>4</integer>
			<key>x</key>
			<integer>-190</integer>
			<key>y</key>
			<integer>-219</integer>
		</dict>
		<dict><!-- status indicator light, x and y give the location, the size defines the icon size -->
			<key>alpha</key>
			<real>0.2</real>
			<key>height</key>
			<integer>7</integer>
			<key>selector</key>
			<string>drawStatusLight:</string>
			<key>width</key>
			<integer>8</integer>
			<key>x</key>
			<integer>153</integer>
			<key>y</key>
			<integer>-130</integer>
		</dict>
		<dict><!-- ship's clock, x and y give the location, the size defines the character size -->
			<key>height</key>
			<integer>9</integer>
			<key>selector</key>
			<string>drawClock:</string>
			<key>width</key>
			<integer>10</integer>
			<key>x</key>
			<integer>-33</integer>
			<key>y</key>
			<integer>-238</integer>
		</dict>
		<dict><!-- speed bar, can draw a surround 2 units out from the dial size specified -->
			<key>draw_surround</key>
			<false/>
			<key>height</key>
			<integer>8</integer>
			<key>selector</key>
			<string>drawSpeedBar:</string>
			<key>width</key>
			<integer>72</integer>
			<key>x</key>
			<integer>263</integer>
			<key>y</key>
			<integer>-150</integer>
		</dict>
		<dict><!-- fuel bar -->
			<key>height</key>
			<integer>4</integer>
			<key>selector</key>
			<string>drawFuelBar:</string>
			<key>width</key>
			<integer>40</integer>
			<key>x</key>
			<integer>-274</integer>
			<key>y</key>
			<integer>-198</integer>
		</dict>
		<dict><!-- compass, uses Images/compass.png as background and Images/reddot.png and Images/greendot.png -->
			<key>selector</key>
			<string>drawCompass:</string>
			<key>height</key>
			<integer>37</integer>
			<key>width</key>
			<real>37</real>
			<key>x</key>
			<integer>291</integer>
			<key>y</key>
			<integer>-196</integer>
		</dict>
		<dict><!-- cabin temperature bar -->
			<key>height</key>
			<integer>45</integer>
			<key>selector</key>
			<string>drawCabinTempBar:</string>
			<key>width</key>
			<integer>6</integer>
			<key>x</key>
			<integer>152</integer>
			<key>y</key>
			<integer>-199</integer>
		</dict>
		<dict><!-- altitude bar -->
			<key>height</key>
			<integer>30</integer>
			<key>selector</key>
			<string>drawAltitudeBar:</string>
			<key>width</key>
			<integer>9</integer>
			<key>x</key>
			<integer>-159</integer>
			<key>y</key>
			<integer>-162</integer>
		</dict>

		<dict><!-- weapon temperature bar -->
			<key>height</key>
			<integer>45</integer>
			<key>selector</key>
			<string>drawWeaponTempBar:</string>
			<key>width</key>
			<integer>6</integer>
			<key>x</key>
			<integer>133</integer>
			<key>y</key>
			<integer>-199</integer>
		</dict>
		<dict><!-- forward shield bar, can draw a surround 2 units out from the dial size specified -->
			<key>draw_surround</key>
			<false/>
			<key>height</key>
			<integer>5</integer>
			<key>selector</key>
			<string>drawForwardShieldBar:</string>
			<key>width</key>
			<integer>51</integer>
			<key>x</key>
			<integer>-267</integer>
			<key>y</key>
			<integer>-147</integer>
		</dict>
		<dict><!-- aft shield bar, can draw a surround 2 units out from the dial size specified -->
			<key>draw_surround</key>
			<false/>
			<key>height</key>
			<integer>5</integer>
			<key>selector</key>
			<string>drawAftShieldBar:</string>
			<key>width</key>
			<integer>51</integer>
			<key>x</key>
			<integer>-267</integer>
			<key>y</key>
			<integer>-160</integer>
		</dict>
		<dict><!-- energy gauge, can draw a surround 2 units out from the dial size specified -->
			<key>draw_surround</key>
			<false/>
			<key>height</key>
			<integer>50</integer>
			<key>selector</key>
			<string>drawEnergyGauge:</string>
			<key>width</key>
			<integer>33</integer>
			<key>x</key>
			<integer>214</integer>
			<key>y</key>
			<integer>-211</integer>
			<key>labelled</key>
			<false/>
		</dict>
	</array>
	<key>legends</key><!-- these are drawn, in order, before the dials, add any other images you want here -->
	<array>
		<dict>
			<key>image</key>
			<string>hud.png</string>
			<key>width</key>
			<real>640</real>
			<key>height</key>
			<real>480</real>
			<key>x</key>
			<integer>0</integer>
			<key>y</key>
			<integer>0</integer>
			<key>alpha</key>
			<real>2.00</real>
		</dict>
    </array>
</dict>
</plist>
Looking at the Coluber HUD code, it seems that I need do nothing with any of this (phew!)...

Image

This looks to me as though it would be a delightful complement to Marcoooooooooose's Odyssey (but how does one fit in his 20 missiles?)

Image

Re: [Release] HUD Selector v1.17

Posted: Fri Mar 18, 2022 11:53 am
by Cholmondely
Heh! Fun and games...

Created the script.js file, added a manifest.plist.

The Steampunk HUD now appears on the list of HUD options from HUD Selector. But shows the Large/ExtraLarge HUD!

When I select the Default HUD on the list, I get the Steampunk instead!

Fun! Joy! Thrills! I obviously need to sacrifice Cody to the Witchspace Lobster to get it to work properly. But how do I get my grubby paws on him? How do I get to Inaccessible Island? And what happens when I run out of Codys?

Also, the scanner is utterly useless - can't see either a dicky-bird or a dinosaur on it. Whom should I sacrifice to sort this one out?

Will proceed with this exciting, exhilarating, entrancing experimentation... (laboratory slowly saturating with the sacrificially slain...)

Image
Some more of cbr's red lobsters

Re: [Release] HUD Selector v1.17

Posted: Sat Mar 19, 2022 1:11 am
by phkb
Coluber HUD has two HUD plist files: coluber_hud_ch01-dock.plist, and coluber_hud_ch01.plist; and it switches between them as required. The Steampunk HUD only has a single hud.plist file, so no switching required.
Cholmondely wrote: Fri Mar 18, 2022 11:53 am
Created the script.js file, added a manifest.plist.
You should also rename the hud.plist file to something like "steampunk_hud.plist". The content of the HUD file (whether XML or OpenStep format) is irrelevant. You shouldn't need to touch the code inside.
Because there is only 1 HUD file, your script.js file should look something like this:

Code: Select all

"use strict";

this.name = "steampunk_hud";
// you can add other properties here (like this.author and this.licence, etc)

this.startUp = function() {
	player.ship.hud =  this.name + ".plist";
	var h = worldScripts.hudselector;
	if( h ) h.$HUDSelectorAddHUD("Steampunk HUD", this.name);
}
And that's it. Important to note: I renamed the hud.plist file "steampunk_hud.plist" and the script file has the same name (ie "steampunk_hud"). Having those things match allows for the code to do "player.ship.hud = this.name + ".plist". You should make sure these to identifiers line up exactly.

Any images used by the HUD, as long as they're referenced by the plist file, will get picked up whenever the HUD is used, and ignored otherwise. As mentioned, you shouldn't need to make any changes to the content of the hud plist files.

Re: [Release] HUD Selector v1.17

Posted: Sat Mar 19, 2022 9:04 pm
by Cholmondely
phkb wrote: Sat Mar 19, 2022 1:11 am
Coluber HUD has two HUD plist files: coluber_hud_ch01-dock.plist, and coluber_hud_ch01.plist; and it switches between them as required. The Steampunk HUD only has a single hud.plist file, so no switching required.
Cholmondely wrote: Fri Mar 18, 2022 11:53 am
Created the script.js file, added a manifest.plist.
You should also rename the hud.plist file to something like "steampunk_hud.plist". The content of the HUD file (whether XML or OpenStep format) is irrelevant. You shouldn't need to touch the code inside.
Because there is only 1 HUD file, your script.js file should look something like this:

Code: Select all

"use strict";

this.name = "steampunk_hud";
// you can add other properties here (like this.author and this.licence, etc)

this.startUp = function() {
	player.ship.hud =  this.name + ".plist";
	var h = worldScripts.hudselector;
	if( h ) h.$HUDSelectorAddHUD("Steampunk HUD", this.name);
}
And that's it. Important to note: I renamed the hud.plist file "steampunk_hud.plist" and the script file has the same name (ie "steampunk_hud"). Having those things match allows for the code to do "player.ship.hud = this.name + ".plist". You should make sure these to identifiers line up exactly.

Any images used by the HUD, as long as they're referenced by the plist file, will get picked up whenever the HUD is used, and ignored otherwise. As mentioned, you shouldn't need to make any changes to the content of the hud plist files.
Thank you for your help! It's now out on the Expansions Manager, thanks to you.

Re: [Release] HUD Selector v1.16

Posted: Mon Jul 03, 2023 3:40 pm
by Cholmondely
Norby wrote: Sat Aug 15, 2015 7:53 am
that time is vanished.
Norby: how do I enable the other dials on a HUD-Selector compliant HUD?

I've tried (F4 screen while docked > Ship systems > HUD and MFD selector) with several HUDs - and failed dismally. What am I doing wrong?

Re: [Release] HUD Selector v1.17

Posted: Mon Jul 03, 2023 11:38 pm
by phkb
Cholmondely wrote: Mon Jul 03, 2023 3:40 pm
What am I doing wrong?
First, make sure CombatMFD is installed.
After that, what dial do you want to make available, and in which HUD?

Re: [Release] HUD Selector v1.17

Posted: Wed Jul 05, 2023 5:26 pm
by Cholmondely
Image

Any of them!

I tried with the Vimana (the one I always seem to end up using - although I did use the Deeper Space when I tried out Marcooooose's Odyssey last year (it just seemed to fit, aesthetically).

Nothing I do makes anything appear.

Deeper Space HUD:
Image

Re: [Release] HUD Selector v1.17

Posted: Thu Jul 06, 2023 2:45 am
by phkb
Cholmondely wrote: Wed Jul 05, 2023 5:26 pm
Any of them!
Right!

I notice you've been tweaking the layout of DeeperSpace HUD, as the current flight speed number display is slightly out of alignment to where the same value is on my rig (based on a fresh download of the HUD from GitHub).

In any case, here's what I see on my screen:
Image

You'll notice the yellow "200" there near the speed bar. That comes from adding this to the HUD plist file:

Code: Select all

...
dials = (
	... lots of other dials...
	{
		data_source = "combatSpeed";
		selector = "drawCustomText:";
		alert_conditions = 14;
		alpha = 1.0;
		height = 13;
		width = 15;
		x = -300;
		y = -127;
		y_origin = 0;
		x_origin = 1;
	},
);
...
There are a number of important values in this code snippet.
data_source This value is how CombatMFD links up with the HUD and knows where to put the number.
selector This tells Oolite what type of dial is being implemented (in this case, some custom text).
alert_conditions This tells Oolite under what conditions should this dial be shown (in this case, every condition except when docked).
alpha This tells Oolite (basically) how opaque to draw this text (in this case, with no opaqueness as all).
height How tall are the characters in this text.
width How wide are the characters in this text.
x and y The co-ordinates for where to place this text item.
x-origin and y-origin What the x and y co-ordinates are relative to. With y_origin = 0, that means the centre of the screen, so a y value of -127 means 127 points down the screen, towards the bottom. With x_origin = 1, that means the right side of the screen, so an x value of -300 is 300 points towards left, starting from the right side.

You will need to create a custom dial for each of the Combat MFD values you want to see on the HUD.

If it helps at all, I now have a tweaked version of Deeperspace HUD that is compatible with HUD Selector I can zip up for you.

Re: [Release] HUD Selector v1.17

Posted: Fri Jul 07, 2023 6:52 am
by Cholmondely
So if I understand correctly, the instructions leave out the crucial fact that you need to manually "write in" the dials to your .oxp before you can use HUDSelector to activate them. Which explains why I never got anywhere.

"Thank You", Nick!



Might it be an idea to tweak Norby's masterpiece to include a "dumb-pilot" comprehensible note about this? Perhaps on the F4 Custom Dials screen itself?



So I presume that the various dials in VimanaHUD are drawn from the CombatMFD - and that my various attempts to transmogrify the Vimana units of measurement to Cavezzi failed because I never thought to tweak the Combat MFD.



I never tweaked my copy of Deeper Space (merely downloaded and unzipped it), so my speed bar alignment should be identical to yours! A mystery...



Reference:
Custom HUD dials
----------------

Oolite v1.81 provide drawCustomText: HUD dial which can display information without an MFD.
You still must buy the CombatMFD equipment for the following but you must not show up the MFD if your HUD has support for these (like the Original and Small HUDs in HUDSelector).

CombatMFD fills up the following dials with values, so HUD designers can use these:

data_source description
combatAftSh aft shield numeric value, including capacitors
combatAftShP aft shield percent value, over 100% if upgraded
combatAlt altitude over the nearest planet, moon or sun in km
combatAltR altitude over a planet, moon or sun in radius
combatCredits credits of player
combatCTemp cabin temp
combatDmgEq name of the lastly damaged equipment
combatDEqNum number of the damaged equipment
combatEnergy energy of player ship in numeric form
combatEnergyP energy of player ship in percent
combatFwSh forward shield numeric value, including capacitors
combatFwShP forward shield percent value, over 100% if upgraded
combatFuel remaining fuel in the main tank in ly, min. 0.0, max. 7.0
combatFuelReq required fuel of a declared hyperjump
combatFuelRes reserve fuel in extra tanks (integer)
combatLegal legal status of player, Clean/Offender/Fugitive
combatLegalNum legal status of player, bounty
combatNewTelT name of the newest target detected by Telescope
combatOneShot letters of One-shot indicator (BCEGHPRU)
combatSCTDist distance of space compass target
combatSEE letters of SEE indicator about the player ship (CMBSAHE)
combatSEEMax maximum number of ship durability: max of shield+armour+energy
combatSEENum number of ship durability: shield+armour+energy
combatSpeed actual speed of player ship in m/s
combatTDist distance of the current target
combatTDmg damaged/weak/derelict status of the current target
combatTEnergy energy of the current target, use for debug only
combatTLaser laser weapon of the current target
combatTLegal legal status of the current target, if derelict then Towbar status
combatTLRange range of the target's laser weapon
combatTMissile missile type fired by the target, Normal/Hard/Unknown
combatTMissNum number of missiles fired by the target so far
combatTName full name of the current target
combatTRadius shield radius of the current target
combatTSpeed speed of the current target

Re: [Release] HUD Selector v1.17

Posted: Wed Sep 06, 2023 3:39 am
by phkb
I've got an update for HUD Selector that I'd like a few people to try out before I update the Expansion Manager. The main goal of this update was to make it more user friendly - some of the screens relied a bit on inside knowledge to understand, and the layout was hard to read at times. At the same time, I've tried to streamline the process a bit, hopefully increasing performance and making things work better together. What I'm scared of is that I've inadvertently broken something by undoing something Norby put in with good reason. So, any help with testing would be appreciated.

Here's a link to the download: HUDSelector-1.19.oxz

One of the things I tried to do was to make use of some of the new key control bells and whistles added to trunk recently. So, if you're using the Trunk version, your feedback would be greatly appreciated. The biggest change was on the MFD selection page, where previously you could only press enter to select the next MFD option in the list. Now, you can use the left and right arrows to go back and forth in the list. No more having to "go around the horn" if you press enter one too many times. You can also use ESC to exit any of the pages. If you don't have Trunk, the old system will be in play.

Here are some screenshots of the new layout:
Image
Also notice in the shot below that I've given all the MFD's a proper description, rather than some of the more obscure entries that would appear there previously.
Image

Image

Re: [Release] HUD Selector v1.17

Posted: Fri Sep 22, 2023 6:01 am
by Cholmondely
The above is a great improvement! Thank you!


Alas, my previous version of HUD Selector did not always preserve my MFDs from one launch to another.

The current version does (thank heavens!) - but still does not preserve my MFDs from one saved game to another.

Worse, it does not preserve the HUD itself - from one save game to another - and if the HUD is chosen before launching, it disappears at launch!

Code: Select all

Opening log for Oolite version 1.90 (x86-64) under Mac OS X Version 10.15.3 (Build 19D2064) at 2023-09-22 03:20:08 +0000.
Machine type: MacBookAir9,1, 8192 MiB memory, 2 (4 logical) x x86 (family 0x38435547) @ 1100 MHz.
Build options: OpenAL, new planets.

04:20:10.544 [searchPaths.dumpAll] +[ResourceManager logPaths] (ResourceManager.m:2240): Resource paths: 
    ~/Desktop/Oolite/  Oolite 1.90.app/Contents/Resources
    ~/Library/Application Support/Oolite/Managed AddOns
    ~/Library/Application Support/Oolite/AddOns
    ~/.Oolite/AddOns
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.BreakableHUDIFFScanner.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/HUDSelector-1.19.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Oolite.oxp.phkb.Sunskimmers.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Commander_McLane.FlyingDutchman.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/asteroid_tweaks_1.4.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.BreakableTorusDrive.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.spicy_hermits.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.dybal.SniperLock_Fix-1.0.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.NewtSoup.MiningIFFScannerUpgrade.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Day.Diplomacy (phkb'd).oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.Planetfall.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.Engine_Sound.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.SolarFlares.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.ZygoUgo.Asteroids_resources.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Wildeblood.galaxy_names.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.cim.Song_of_the_Labyrinth_Startup_1.1.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.SystemDataConfig.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.cag.Telescope.2.11.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.GalCopMissions.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.market_observer.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.CargoSpotter.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.MoonsTexturePack.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.TrafficLights.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Svengali.Library.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/XenonUI_SWEconomy_Addition.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Commander_McLane.Sell_Equipment.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.BreakableEnergyUnit.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.VimanaX_HUD.v.1.4.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Neelix.WaypointHere.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.GalCopGalacticRegistry.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Oolite.oxp.Griff.Griff_shipset_decals.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/XenonUI.tweaked.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.LittleBear.AsteroidStorm.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.DrNil.YAH.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Cholmondely.Hints.0.5.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.EquipmentStorage.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.MineralStoreReset.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.dertien.Z_GrOovY_SmallSystemStations.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.LaveAcademy.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.cim.extracts-tre-clan.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.cag.station_options.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.ContractsOnBB.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.Bigships.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.BreakableEngines.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.Pods.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Diagoras.MiningContracts.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.XenonUIResourcesH.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Jaguar_Company_2.6.0.oxp
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.RingRacer.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.Smugglers_TGU.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.ILS.v.1.15.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Autopause.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.trophy_collector.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.PlanetaryCompassPackC.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.SunGear.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.PlanetaryCompassPackB.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.ArexackHeretic.CargoWreck.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.LMSS.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.HardWay.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.another_commander.188NSGMaps.1_1.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.Tracker.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/FontDangerousSquare.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.FastTargetSelector.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.GalCopMostWanted.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.Planetfall_Markets.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/in-system_traders_0.3.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Fighter_hud_mkii_1.4.1.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.smivs.Cup_of_Tea-v1.2.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.PlanetaryCompassPackA.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.smivs.Liners.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.LaserArrangement.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.NoMarketNotification.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Feudal_States 2.1.5.oxp
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.dybal.BarrelRoll.Cholly'd.oxp
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.EquipmentRemoveItemColor.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Wildeblood.Display_Reputation.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.nicksta.primeable-equipment-mfd.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.LogEvents.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.PlanetaryCompassPackD.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.Coluber_HUD_Custom.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Lone_Wolf.NavalGridNext.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.ChangeViewSound.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.ye_olde_hermits_1.0.1.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.Towbar.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.PlanetarySystemsTexturePack_H.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.HDBG.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Stashes-0.3.1.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.BulletinBoardSystem.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.BreakableWitchDrive.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Spara.SothisTC.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.WelcomeMat.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.hoqllnq.missile-beep.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.EnhancedPassengerContracts.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.FlightLog.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.cim.systemfeatures.sunspots.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.PlanetarySystemsTexturePack_D.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.Ship_Storage_Helper_0.38.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.cim.gsagostinho.systemfeatures.rings.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.DeathComms.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.start_choices.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/BroadcastCommsMFD.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Oolite.oxp.Switeck.Auto-ECM_0.4.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.FreighterConvoys.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.MaintenanceTuneUp.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.RiskyBusiness.2.0.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.DrNil.Commies.2.18.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.PlanetarySystemsTexturePack_E.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.PlanetarySystemsTexturePack_G.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Commander_McLane.Fireworks.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Wildeblood.Undocumented_Launch.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.BreakableShieldGenerators.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.CombatMFD.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.HDBG-A.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.InSystemCargoDelivery.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.IronHide.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.TechnicalReferenceLibrary-1.0.1.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.YAH-Mobile.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.audible_docking_clearance.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.PlanetarySystemsTexturePack_F.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.PlanetarySystemsTexturePack_B.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.smivs.GalDrivePod.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Old StarSystemLaneIndicator.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.SafetyCatch.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.cim.comms-pack-a.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Escort_Formations_1.3.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.random_hits.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Commander_McLane.Randomshipnames.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.SW_Economy.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.alnivel.RoutePlanner.0.2.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Disembodied.FreeTradeZone.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Nicksta.Target-System-Plugins_0.81.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.Illegal_Goods_Tweak.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Killer Wolf.Sothis_station.1_02.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.PlanetarySystemsTexturePack_C.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.PlanetarySystemsTexturePack_A.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.alnivel.InterfaceReordering.0.2.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Configurable_Populator.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.PlanetarySystems.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.yah_more.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.RepairBots.2.14.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.ZygoUgo.Explosions.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.Moons.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/UsefulMFDs.0.6.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.PoliceIFFScanner.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/RockHermitBeacons-1.3.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.EricWalch.TionislaReporter.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.CommandersLog.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.Headlights.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.DrNil.YAH-SetB.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.hermit_tweaks_0.1.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.cag.Telescope_Extender.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.HomeSystem.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.BountySystem.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Oolite.oxp.redspear.fighter_explorers.oxp
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.ExplorersClub.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.AutoPrimeEquipment.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.spara.market_inquirer.oxp
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.EmailSystem.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.blackwolf.wanted_posters.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.DrNil.YAH-SetC.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.smivs.ExtraFuelTanks.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.DrNil.YAH-SetA.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Ngalo.PaintMissiles.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Rescue_stations_1.5.4.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.RetroRockets.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Switeck.Misjump-Inducer_v0.3.oxp
    ~/Library/Application Support/Oolite/Managed AddOns/RRSBlackBoxHC_0.1.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/[email protected]
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Ramirez.BlOombergMarkets.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.Trails.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.SMax.PlanetFallMarketSaver.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.TrafficControl.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.DrNil.YAH-SetD.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/Oolite.oxp.LittleBear.GalacticAlmanac.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.ByronArn.AutoRefuel.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.InternalFuelTank.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CommonSenseOTB.SniperLock.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Griff.Asteroids.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Svengali.BGS.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.HabitableMainPlanets.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/CommsLogMFD.v.1.7.9.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.phkb.LinersMarkets.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Svengali.GNN.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Thargoid.PlanetaryCompass.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Rorschachhamster.Satellites.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Griff.Station_Bundle.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Montana05.resource_pack_01.OXZ
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.DrNil.YAH-SetE.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.DrNil.YAH-SetG.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.cim.combat-simulator.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Ramirez.FuelTank.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Svengali.Pagroove.BGSSoundset.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.stranger.OrbitalStations.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CmdCheyd.DH_AdvancedNavigationComputer.oxz
    ~/Library/Application Support/Oolite/Managed AddOns/LitF+v0.06.1.oxp
    ~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.DrNil.YAH-SetF.oxz
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Commander_McLane.Anarchies.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.EricWalch.DeepSpaceDredger.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.cim.ships-library free:old.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Mandoman.MandotechIndStationV1.4.tweaked.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.SimonB.ubertharg.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.okti.Coyote's Run.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.csotb.MilitaryTargettingSystem.v1.oxp
    ~/Library/Application Support/Oolite/AddOns/Povray_Planets_Galaxy2_Textures.oxp
    ~/Library/Application Support/Oolite/AddOns/Povray_Planets_Galaxy5_Textures.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.stranger.Famous Planets Music Pack.oxp
    ~/Library/Application Support/Oolite/AddOns/YAH_Constore_Remover_1.01.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.phkb.Cargo_Handling.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Norby.MinerCobra.oxp
    ~/Library/Application Support/Oolite/AddOns/FaceSun.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.spara.behemoth.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Ramirez.Dictators._(Cholly'd).oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Staer9.Icesteroids.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.phkb.StationDockControl.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.redspear.weapon_laws(1.4) tweaked.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Commander_McLane.Railgun.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.stranger.Famous Planets ST Texture Pack C.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Draco_Caeles.GenerationShips.oxp
    ~/Library/Application Support/Oolite/AddOns/Galactic_navy_light_destroyer_cholly'd.oxp
    ~/Library/Application Support/Oolite/AddOns/Oolite.oxp.Runghold.SecComFinder4GalacticNavy0.6.1.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.stranger.Famous Planets ST Texture Pack B.oxp
    ~/Library/Application Support/Oolite/AddOns/Navy Destroyer_cholly'd.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.stranger.Famous Planets ST Texture Pack A.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.spara.ImperialAstrofactory.v.2.4.2.(cholly'd).oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.stranger.Famous Planets Overhaul 1.3.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.LittleBear.AssassinsGuild.oxp
    ~/Library/Application Support/Oolite/AddOns/griff_asteroids_ice_versions.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Ramirez.ResistanceCommander_1.6.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.stranger.Feudal Raiders 0.2.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.captsolo.tori2.02.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Okti.LongRangeScanner v0.3.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Killer Wolf.nephthys_station.oxp
    ~/Library/Application Support/Oolite/AddOns/Galactic Hyperdrive 1.1.3.oxp
    ~/Library/Application Support/Oolite/AddOns/galactic_navy_facelift_cholly'd.oxp
    ~/Library/Application Support/Oolite/AddOns/Povray_Planets_Galaxy7_Textures.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Murgh.wpb.oxp
    ~/Library/Application Support/Oolite/AddOns/griff_cargopods2014_withGlow.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Matt634.Galactic_Navy 5.4.4.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Pagroove.Superhub.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Killer Wolf.hathor_station.oxp
    ~/Library/Application Support/Oolite/AddOns/Asteroids3D1.2.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Ngalo.NPC_Equipment_Damage.12.21.oxp
    ~/Library/Application Support/Oolite/AddOns/oolite.oxp.Draco_Caeles.Transhab.oxp
And when inflight I used the HUDSelector equipment to select my HUD, I found this in the latest.log:

Code: Select all

04:23:41.460 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_HUDSELECTOR
04:23:43.362 [script.javaScript.exception.unexpectedType] ReportJSError (OOJavaScriptEngine.m:204): ***** JavaScript exception (hudselector 1.19): TypeError: h is undefined
04:23:51.656 [script.javaScript.exception.unexpectedType] ReportJSError (OOJavaScriptEngine.m:204): ***** JavaScript exception (hudselector 1.19): TypeError: h is undefined
04:23:55.448 [script.javaScript.exception.unexpectedType] ReportJSError (OOJavaScriptEngine.m:204): ***** JavaScript exception (hudselector 1.19): TypeError: h is undefined
04:23:56.609 [script.javaScript.exception.unexpectedType] ReportJSError (OOJavaScriptEngine.m:204): ***** JavaScript exception (hudselector 1.19): TypeError: h is undefined
04:23:57.846 [script.javaScript.exception.unexpectedType] ReportJSError (OOJavaScriptEngine.m:204): ***** JavaScript exception (hudselector 1.19): TypeError: h is undefined
04:23:58.821 [script.javaScript.exception.unexpectedType] ReportJSError (OOJavaScriptEngine.m:204): ***** JavaScript exception (hudselector 1.19): TypeError: h is undefined
04:24:00.229 [LogEvents] GlobalLog (OOJSGlobal.m:266): ship lost EQ_VIMANAX_FONT_NARROW
04:24:00.230 [LogEvents] GlobalLog (OOJSGlobal.m:266): ship got EQ_VIMANAX_FONT_NARROW
04:24:00.232 [script.javaScript.exception.unexpectedType] ReportJSError (OOJavaScriptEngine.m:204): ***** JavaScript exception (hudselector 1.19): TypeError: h is undefined
04:24:03.628 [LogEvents] GlobalLog (OOJSGlobal.m:266): ship lost EQ_VIMANAX_FONT_NARROW
04:24:03.628 [LogEvents] GlobalLog (OOJSGlobal.m:266): ship got EQ_VIMANAX_FONT_NARROW
04:24:03.630 [script.javaScript.exception.unexpectedType] ReportJSError (OOJavaScriptEngine.m:204): ***** JavaScript exception (hudselector 1.19): TypeError: h is undefined
04:24:09.781 [LogEvents] GlobalLog (OOJSGlobal.m:266): ship lost EQ_VIMANAX_FONT_NARROW
04:24:09.781 [LogEvents] GlobalLog (OOJSGlobal.m:266): ship got EQ_VIMANAX_FONT_NARROW
04:24:09.785 [script.javaScript.exception.unexpectedType] ReportJSError (OOJavaScriptEngine.m:204): ***** JavaScript exception (hudselector 1.19): TypeError: h is undefined
04:24:16.853 [LogEvents] GlobalLog (OOJSGlobal.m:266): mfd 0 changed to tsplugins_srs
And shortly after, this (while priming all the equipment for the Primeable Equipment MFD):

Code: Select all

04:28:17.927 [LogEvents] GlobalLog (OOJSGlobal.m:266): selected mfd 0
...
04:28:36.195 [LogEvents] GlobalLog (OOJSGlobal.m:266): VIEW_FORWARD
04:28:39.304 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_ADV_NAV_COMP
04:28:40.037 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_TELESCOPE
04:28:40.397 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_SHIPS_LIBRARY
...
04:28:40.767 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_RESERVE_TANK
04:28:41.153 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_CLOAKING_DEVICE
04:28:41.452 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_BROADCASTCOMMSMFD
04:28:41.763 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_RETROROCKETS
04:28:42.087 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_AUTOPAUSE
04:28:42.394 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_BARREL_ROLL
04:28:42.707 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_HUDSELECTOR
04:28:42.966 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_TRACKER
04:28:43.318 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_TARGETSELECTOR_MODECHANGER
04:28:43.688 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed 
04:28:44.067 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_TARGETSELECTOR
04:28:44.541 [LogEvents] GlobalLog (OOJSGlobal.m:266): primed EQ_TSP_TARGET_BANKING_MODULE
04:28:44.790 [script.javaScript.exception.notDefined] ReportJSError (OOJavaScriptEngine.m:204): ***** JavaScript exception (hudselector 1.19): ReferenceError: expandDescriptions is not defined