11local GUI = {
2- allTrackers = { " area" , " base" , " cityblock" , " player" , " rocket" },
3- allTrackersLabels = { { " tracker-area" }, { " tracker-base" }, { " tracker-cityBlock" }, { " tracker-player" }, { " tracker-rocket" } },
2+ allTrackers = { " area" , " base" , " cityblock" , " cube" , " player" , " rocket" },
3+ allTrackersLabels = {
4+ { " tracker-area" },
5+ { " tracker-base" },
6+ { " tracker-cityBlock" },
7+ { " tracker-cube" },
8+ { " tracker-player" },
9+ { " tracker-rocket" },
10+ },
411 allTrackersLabelsMap = {
512 area = { " tracker-area" },
613 base = { " tracker-base" },
714 cityBlock = { " tracker-cityBlock" },
15+ cube = { " tracker-cube" },
816 player = { " tracker-player" },
917 rocket = { " tracker-rocket" },
1018 }
@@ -15,6 +23,21 @@ local Main = require("scripts.main")
1523local Tracker = require (" scripts.tracker" )
1624local Utils = require (" scripts.utils" )
1725
26+ local function getAvailableTrackerTypes ()
27+ local trackerTypes = {}
28+ local trackerLabels = {}
29+
30+ local ultracubeAvailable = Utils .isUltracubeAvailable ()
31+ for index , trackerType in ipairs (GUI .allTrackers ) do
32+ if trackerType ~= " cube" or ultracubeAvailable then
33+ table.insert (trackerTypes , trackerType )
34+ table.insert (trackerLabels , GUI .allTrackersLabels [index ])
35+ end
36+ end
37+
38+ return trackerTypes , trackerLabels
39+ end
40+
1841local ticks_per_half_second = 30
1942
2043local function getWindowPlayButtonStyle (selected )
@@ -448,7 +471,9 @@ function GUI.onSelected(event)
448471 end
449472 event .element .selected_index = 1
450473
451- local newTracker = Tracker .newTracker (player , GUI .allTrackers [trackerIndex ], playerSettings .trackers )
474+ local availableTrackerTypes = getAvailableTrackerTypes ()
475+ local trackerType = availableTrackerTypes [trackerIndex ]
476+ local newTracker = Tracker .newTracker (player , trackerType , playerSettings .trackers )
452477 table.insert (playerSettings .trackers , newTracker )
453478 playerSettings .guiPersist .selectedTracker = # playerSettings .trackers
454479
@@ -1111,11 +1136,13 @@ function GUI.createTrackerSettings(parent, playerGUI, guiPersist, cameras, track
11111136 local trackersFlow = flow .add { type = " flow" , direction = " vertical" , style = " tlbe_fancy_list_parent" }
11121137
11131138 -- New tracker GUI
1139+ local availableTrackerTypes , availableTrackerLabels = getAvailableTrackerTypes ()
1140+ playerGUI .availableTrackerTypes = availableTrackerTypes
11141141 trackersFlow .add {
11151142 type = " drop-down" ,
11161143 selected_index = 1 ,
11171144 name = " tlbe-tracker-add" ,
1118- items = { { " gui.item-new-tracker" }, table.unpack (GUI . allTrackersLabels ) },
1145+ items = { { " gui.item-new-tracker" }, table.unpack (availableTrackerLabels ) },
11191146 style = " tlbe_tracker_add_dropdown"
11201147 }
11211148
@@ -1235,7 +1262,7 @@ function GUI.addCameraTrackerButtons(index, selectedCamera, _, trackers, tracker
12351262 style = " tlbe_tracker_remove_button"
12361263 }
12371264
1238- if isActiveTracker then
1265+ if isActiveTracker and tracker . enabled then
12391266 trackerRow .add {
12401267 type = " sprite" ,
12411268 sprite = " utility/play" ,
@@ -1248,6 +1275,13 @@ function GUI.addCameraTrackerButtons(index, selectedCamera, _, trackers, tracker
12481275 style = " tlbe_fancy_list_box_image_reduce_size" ,
12491276 tooltip = { " tooltip.tracker-wrong-surface" }
12501277 }
1278+ elseif tracker .type == " cube" and not Utils .isUltracubeAvailable () then
1279+ trackerRow .add {
1280+ type = " sprite" ,
1281+ sprite = " utility/warning_icon" ,
1282+ style = " tlbe_fancy_list_box_image_reduce_size" ,
1283+ tooltip = { " tooltip.tracker-cube-not-available" }
1284+ }
12511285 else
12521286 trackerRow .add {
12531287 type = " empty-widget" ,
0 commit comments