Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The code to provide a city block tracker #52

Merged
merged 55 commits into from
Jul 31, 2023
Merged
Show file tree
Hide file tree
Changes from 50 commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
c4dab2f
First proof concept for map tags tracking cameras
drdozer Jun 26, 2023
f6b0e81
Merge branch 'master' of https://github.com/veger/TLBE
drdozer Jun 27, 2023
ef461ef
Added logic to render the current box being captured in the screensho…
drdozer Jun 27, 2023
0946fb0
Added an example of tinting to let us recolor the box
drdozer Jun 27, 2023
132ef8f
Merge branch 'master' of https://github.com/veger/TLBE
drdozer Jun 28, 2023
51fecbf
Now makes sure that there's a chart_tags table when migrating
drdozer Jun 28, 2023
cf1a3d1
Renders two rectangles for the target region and the current capture …
drdozer Jun 28, 2023
a60d03b
The updateChartTags function now only runs if there's a player
drdozer Jun 28, 2023
1dbc5cf
Added the chart_tags field to the camera mock.
drdozer Jun 28, 2023
a80a67d
The updateChartTags function now only runs if there's a player with a…
drdozer Jun 28, 2023
09d1afd
fixed a typo in the test mock of camera
drdozer Jun 28, 2023
0449aec
Update scripts/camera.lua to use the camera surface
drdozer Jun 28, 2023
12a290c
Resolved a git conflict in the migrations script.
drdozer Jun 29, 2023
081cb0c
Renamed chart_tags to chartTags
drdozer Jun 29, 2023
2e50e2b
Renamed the boxes to cammel from snake
drdozer Jun 29, 2023
257455d
Removing gimp file for the corner image
drdozer Jun 29, 2023
ecb9dcf
Moved -TLBE suffix to a tlbe- prefix
drdozer Jun 29, 2023
74ba513
Fixed ordering for the corner boxes so they display a little better.
drdozer Jun 29, 2023
7d3b708
the signals now have locale strings
drdozer Jun 29, 2023
1d1de5a
Refactored tag management. Cameras now dispose of tags when they are …
drdozer Jun 29, 2023
44cee22
Renamed modifyTag to createTag
drdozer Jun 29, 2023
bdffa4d
Format using sumneko.lua
veger Jun 29, 2023
e9f5ec9
Update changelog
veger Jun 29, 2023
8026c06
Merged head, and started work on the city block tracker.
drdozer Jun 29, 2023
cd633f0
Merge branch 'master' of github.com:drdozer/TLBE
drdozer Jun 29, 2023
88c2aad
Removed more snakecase that I missed before
drdozer Jun 29, 2023
32b015c
Fixed some resource locale strings
drdozer Jun 29, 2023
1a82af9
Just moving class declaration above the object containing functions.
drdozer Jun 30, 2023
816db10
I think the trcker size for city blocks was being halved from what it…
drdozer Jun 30, 2023
e64c75b
Default block zoom set to 1.5 as 1.1 was silly
drdozer Jun 30, 2023
3495571
Added in the first vaguely working city block tracker gui.
drdozer Jun 30, 2023
8c62646
Better detection of if the tracker has actually changed or not.
drdozer Jun 30, 2023
753db14
Basic gui appears to work.
drdozer Jun 30, 2023
a25afdf
Player-position-centering seems to work now.
drdozer Jun 30, 2023
c2c7317
Removed some debug printing
drdozer Jun 30, 2023
8578dbd
Update scripts/tracker.lua
drdozer Jul 1, 2023
f0605d3
Fixes nil dereference edge case for minPos and maxPos in a more elega…
drdozer Jul 1, 2023
381d3fe
Changed block scale to 2 decimal places, allowing scales like 1.25
drdozer Jul 1, 2023
d2bc694
Removed redundant comment
drdozer Jul 1, 2023
2f1c4b8
Update scripts/gui.lua
drdozer Jul 1, 2023
9ff175c
Reorder trackers in alphabetical order.
drdozer Jul 1, 2023
ef84f0f
Fixed blockScale to 2sf and removed a possible nil dereference
drdozer Jul 1, 2023
8136cfe
Merge branch 'master' of github.com:drdozer/TLBE
drdozer Jul 1, 2023
a4fe778
Fixed typo tacker->tracker
drdozer Jul 1, 2023
a6ee59a
Added lots of tooltips, and added better nil checking for numeric inp…
drdozer Jul 1, 2023
0d4087c
Partial fix to the block scaling issue - it requires the user to pres…
drdozer Jul 1, 2023
1e73cc3
City block size must now be at least 1x1 tile, never 0 or negative
drdozer Jul 2, 2023
65fd9ae
Merged conflict in local.cfg
drdozer Jul 31, 2023
c058b01
First attempt at unit testing
drdozer Jul 31, 2023
2efd662
Added a scale test
drdozer Jul 31, 2023
651a38c
Rescaling should not recenter
drdozer Jul 31, 2023
a13f235
Reverted the tints back to snakecase
drdozer Jul 31, 2023
d803495
Pulled [200~selectedTracker up to the top of onTextChanged()
drdozer Jul 31, 2023
8740518
Removed useless on_gu_leave event forwarder
drdozer Jul 31, 2023
6373a6f
Remove `comment` from the comment
veger Jul 31, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions control.lua
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ script.on_event(defines.events.on_gui_click, TLBE.GUI.onClick)
script.on_event(defines.events.on_gui_selection_state_changed, TLBE.GUI.onSelected)
script.on_event(defines.events.on_gui_text_changed, TLBE.GUI.onTextChanged)
script.on_event(defines.events.on_gui_checked_state_changed, TLBE.GUI.onStateChanged)
script.on_event(defines.events.on_gui_confirmed, TLBE.GUI.onGuiConfirmed)
script.on_event(defines.events.on_gui_leave, TLBE.GUI.onGuiConfirmed)
drdozer marked this conversation as resolved.
Show resolved Hide resolved
script.on_event(defines.events.on_runtime_mod_setting_changed, TLBE.Config.reload)
script.on_event(defines.events.on_player_created, on_player_created)
script.on_event(defines.events.on_player_joined_game, on_player_created)
Expand Down
19 changes: 19 additions & 0 deletions locale/en/locale.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ tracker-area=Area Tracker
tracker-base=Base Tracker
tracker-player=Player Tracker
tracker-rocket=Rocket Tracker
tracker-cityBlock=City Block Tracker

[gui]
button-base-recalculate=Recalculate base size
Expand All @@ -37,6 +38,12 @@ label-type=Type:
label-until-build=Follow until build
label-zoom=Zoom:
label-transitionperiod=Transition period:
label-cityblock-size=Block size:
label-cityblock-offset=Offset:
label-cityblock-block=Block:
label-cityblock-currentblock=Current:
label-cityblock-blockScale=Scale:
label-cityblock-centerOnPlayer=Select block:
label-transition-speedgain=Transition speed gain:
item-add-tracker=<Add Tracker>
item-new-tracker=<New Tracker>
Expand Down Expand Up @@ -66,6 +73,18 @@ tracker-area-player=Use player coordinates to fill in this corner.
tracker-smooth=Enable/Disable smooth behavior of the camera when this tracker is active.
tracker-until-build=Follow the player until an entity is build.
tracker-wrong-surface=Tracker is disabled because tracker surface differs from camera surface.
tracker-cityblock-size=The size of a single city block in tiles.
tracker-cityblock-size-x=The width of a single city block in tiles.
tracker-cityblock-size-y=The height of a single city block in tiles.
tracker-cityblock-offset=The number of tiles to shift the city blocks grid.
tracker-cityblock-offset-x=The number of tiles right to shift the city blocks grid.
tracker-cityblock-offset-y=The number of tiles down to shift the city blocks grid.
tracker-cityblock-currentblock=The city block to focus on, counting in whole blocks.
tracker-cityblock-currentblock-x=The position of the current city block, counting blocks rightwards.
tracker-cityblock-currentblock-y=The position of the current city block, counting blocks downwards.
tracker-cityblock-blockScale=How many city blocks to zoom out, centered on the current block.
tracker-cityblock-blockScale-value=A zoom of 3 will capture the current block and all of the neighbours. <enter> to set.
tracker-cityblock-player=Use player coordinates to select the current city block.

[controls]
tlbe-main-window-toggle=Open/Close camera settings
Expand Down
21 changes: 10 additions & 11 deletions prototypes/signal.lua
drdozer marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
local capture_tint = { 0.9, 0.9, 0.9 }
local target_tint = { 0.1, 0.6, 0.2 }
local captureTint = { 0.9, 0.9, 0.9 }
local targetTint = { 0.1, 0.6, 0.2 }

data:extend({
{
Expand All @@ -14,7 +14,7 @@ data:extend({
icons = {
{
icon = "__TLBE__/graphics/box-north-west.png",
tint = capture_tint
tint = captureTint
}
},
icon_size = 32,
Expand All @@ -28,7 +28,7 @@ data:extend({
icons = {
{
icon = "__TLBE__/graphics/box-south-west.png",
tint = capture_tint,
tint = captureTint,
}
},
icon_size = 32,
Expand All @@ -42,7 +42,7 @@ data:extend({
icons = {
{
icon = "__TLBE__/graphics/box-south-east.png",
tint = capture_tint
tint = captureTint
}
},
icon_size = 32,
Expand All @@ -57,7 +57,7 @@ data:extend({
icons = {
{
icon = "__TLBE__/graphics/box-north-east.png",
tint = capture_tint,
tint = captureTint,
}
},
icon_size = 32,
Expand All @@ -71,7 +71,7 @@ data:extend({
icons = {
{
icon = "__TLBE__/graphics/box-north-west.png",
tint = target_tint
tint = targetTint
}
},
icon_size = 32,
Expand All @@ -85,7 +85,7 @@ data:extend({
icons = {
{
icon = "__TLBE__/graphics/box-south-west.png",
tint = target_tint,
tint = targetTint,
}
},
icon_size = 32,
Expand All @@ -99,11 +99,10 @@ data:extend({
icons = {
{
icon = "__TLBE__/graphics/box-south-east.png",
tint = target_tint
tint = targetTint
}
},
icon_size = 32,
tint = { 0, 1, 0 },
icon_mipmaps = 1,
subgroup = "tlbe-virtual-signal",
order = "g"
Expand All @@ -114,7 +113,7 @@ data:extend({
icons = {
{
icon = "__TLBE__/graphics/box-north-east.png",
tint = target_tint,
tint = targetTint,
}
},
icon_size = 32,
Expand Down
213 changes: 210 additions & 3 deletions scripts/gui.lua
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
local GUI = {
allTrackers = { "area", "base", "player", "rocket" },
allTrackersLabels = { { "tracker-area" }, { "tracker-base" }, { "tracker-player" }, { "tracker-rocket" } },
allTrackers = { "area", "base", "cityblock", "player", "rocket" },
allTrackersLabels = { { "tracker-area" }, { "tracker-base" }, { "tracker-cityBlock" }, { "tracker-player" }, { "tracker-rocket" } },
allTrackersLabelsMap = {
area = { "tracker-area" },
base = { "tracker-base" },
cityBlock = { "tracker-cityBlock" },
player = { "tracker-player" },
rocket = { "tracker-rocket" }
rocket = { "tracker-rocket" },
}
}

Expand Down Expand Up @@ -212,6 +213,12 @@ function GUI.onClick(event)
GUI.updateTrackerConfig(playerSettings.gui.trackerInfo, selectedTracker)
GUI.updateTrackerInfo(playerSettings.gui.trackerInfo, selectedTracker)
end
elseif event.element.name == "tlbe-tracker-cityblock-player" then
local selectedTracker = playerSettings.trackers[playerSettings.guiPersist.selectedTracker]
Tracker.focusCityBlock(selectedTracker, player.position)

GUI.updateTrackerConfig(playerSettings.gui.trackerInfo, selectedTracker)
GUI.updateTrackerInfo(playerSettings.gui.trackerInfo, selectedTracker)
else
local _, index
_, _, index = event.element.name:find("^camera_tracker_(%d+)$")
Expand Down Expand Up @@ -591,6 +598,81 @@ function GUI.onTextChanged(event)
selectedTracker.maxPos.x = value
Tracker.areaUpdateCenterAndSize(selectedTracker)

GUI.updateTrackerConfig(playerSettings.gui.trackerInfo, selectedTracker)
GUI.updateTrackerInfo(playerSettings.gui.trackerInfo, selectedTracker)
end
elseif event.element.name == "tlbe-tracker-cityblock-size-x" and event.element.text ~= nil then
local selectedTracker = playerSettings.trackers[playerSettings.guiPersist.selectedTracker]
drdozer marked this conversation as resolved.
Show resolved Hide resolved
local value = tonumber(event.element.text)
if value ~= nil and value >= 1 then
selectedTracker.cityBlock.blockSize.x = math.floor(value)
Tracker.recalculateCityBlock(selectedTracker)

GUI.updateTrackerConfig(playerSettings.gui.trackerInfo, selectedTracker)
GUI.updateTrackerInfo(playerSettings.gui.trackerInfo, selectedTracker)
end
elseif event.element.name == "tlbe-tracker-cityblock-size-y" and event.element.text ~= nil then
local selectedTracker = playerSettings.trackers[playerSettings.guiPersist.selectedTracker]
local value = tonumber(event.element.text)
if value ~= nil and value >= 1 then
selectedTracker.cityBlock.blockSize.y = math.floor(value)
Tracker.recalculateCityBlock(selectedTracker)

GUI.updateTrackerConfig(playerSettings.gui.trackerInfo, selectedTracker)
GUI.updateTrackerInfo(playerSettings.gui.trackerInfo, selectedTracker)
end
elseif event.element.name == "tlbe-tracker-cityblock-offset-x" and event.element.text ~= nil then
local selectedTracker = playerSettings.trackers[playerSettings.guiPersist.selectedTracker]
local value = tonumber(event.element.text)
if value ~= nil then
selectedTracker.cityBlock.blockOffset.x = math.floor(value)
Tracker.recalculateCityBlock(selectedTracker)

GUI.updateTrackerConfig(playerSettings.gui.trackerInfo, selectedTracker)
GUI.updateTrackerInfo(playerSettings.gui.trackerInfo, selectedTracker)
end
elseif event.element.name == "tlbe-tracker-cityblock-offset-y" and event.element.text ~= nil then
local selectedTracker = playerSettings.trackers[playerSettings.guiPersist.selectedTracker]
local value = tonumber(event.element.text)
if value ~= nil then
selectedTracker.cityBlock.blockOffset.y = math.floor(value)
Tracker.recalculateCityBlock(selectedTracker)

GUI.updateTrackerConfig(playerSettings.gui.trackerInfo, selectedTracker)
GUI.updateTrackerInfo(playerSettings.gui.trackerInfo, selectedTracker)
end
elseif event.element.name == "tlbe-tracker-cityblock-currentblock-x" and event.element.text ~= nil then
local selectedTracker = playerSettings.trackers[playerSettings.guiPersist.selectedTracker]
local value = tonumber(event.element.text)
if value ~= nil then
selectedTracker.cityBlock.currentBlock.x = math.floor(value)
Tracker.recalculateCityBlock(selectedTracker)

GUI.updateTrackerConfig(playerSettings.gui.trackerInfo, selectedTracker)
GUI.updateTrackerInfo(playerSettings.gui.trackerInfo, selectedTracker)
end
elseif event.element.name == "tlbe-tracker-cityblock-currentblock-y" and event.element.text ~= nil then
local selectedTracker = playerSettings.trackers[playerSettings.guiPersist.selectedTracker]
local value = tonumber(event.element.text)
if value ~= nil then
selectedTracker.cityBlock.currentBlock.y = math.floor(value)
Tracker.recalculateCityBlock(selectedTracker)

GUI.updateTrackerConfig(playerSettings.gui.trackerInfo, selectedTracker)
GUI.updateTrackerInfo(playerSettings.gui.trackerInfo, selectedTracker)
end
end
end

function GUI.onGuiConfirmed(event)
local playerSettings = global.playerSettings[event.player_index]
if event.element.name == "tlbe-tracker-cityblock-blockScale-value" and event.element.text ~= nil then
local selectedTracker = playerSettings.trackers[playerSettings.guiPersist.selectedTracker]
local value = tonumber(event.element.text)
if value ~= nil then
selectedTracker.cityBlock.blockScale = math.floor(value * 100)/100
Tracker.recalculateCityBlock(selectedTracker)

GUI.updateTrackerConfig(playerSettings.gui.trackerInfo, selectedTracker)
GUI.updateTrackerInfo(playerSettings.gui.trackerInfo, selectedTracker)
end
Expand Down Expand Up @@ -1426,6 +1508,110 @@ function GUI.createTrackerConfigAndInfo(trackerInfo, tracker)
tooltip = { "tooltip.tracker-until-build" },
state = tracker.untilBuild
}
elseif tracker.type == "cityblock" then
trackerInfo.add {
type = "label",
caption = { "gui.label-cityblock-size" },
tooltip = { "tooltip.tracker-cityblock-size" },
style = "description_property_name_label"
}
local sizeFlow = trackerInfo.add { type = "flow", name = "cityblock-size" }
sizeFlow.add {
type = "textfield",
name = "tlbe-tracker-cityblock-size-x",
style = "tlbe_config_half_width_textfield",
tooltip = { "tooltip.tracker-cityblock-size-x" },
numeric = true,
allow_negative = true
}
sizeFlow.add { type = "label", caption = "/", style = "tlbe_config_half_width_label" }
sizeFlow.add {
type = "textfield",
name = "tlbe-tracker-cityblock-size-y",
style = "tlbe_config_half_width_textfield",
tooltip = { "tooltip.tracker-cityblock-size-y" },
numeric = true,
allow_negative = true
}

trackerInfo.add {
type = "label",
caption = { "gui.label-cityblock-offset" },
tooltip = { "tooltip.tracker-cityblock-offset" },
style = "description_property_name_label"
}
local offsetFlow = trackerInfo.add { type = "flow", name = "cityblock-offset" }
offsetFlow.add {
type = "textfield",
name = "tlbe-tracker-cityblock-offset-x",
style = "tlbe_config_half_width_textfield",
tooltip = { "tooltip.tracker-cityblock-offset-x" },
numeric = true,
allow_negative = true
}
offsetFlow.add { type = "label", caption = "/", style = "tlbe_config_half_width_label" }
offsetFlow.add {
type = "textfield",
name = "tlbe-tracker-cityblock-offset-y",
style = "tlbe_config_half_width_textfield",
tooltip = { "tooltip.tracker-cityblock-offset-y" },
numeric = true,
allow_negative = true
}

trackerInfo.add {
type = "label",
caption = { "gui.label-cityblock-currentblock" },
tooltip = { "tooltip.tracker-cityblock-currentblock" },
style = "description_property_name_label"
}
local blockFlow = trackerInfo.add { type = "flow", name = "cityblock-block" }
blockFlow.add {
type = "textfield",
name = "tlbe-tracker-cityblock-currentblock-x",
style = "tlbe_config_half_width_textfield",
tooltip = { "tooltip.tracker-cityblock-currentblock-x" },
numeric = true,
allow_negative = true
}
blockFlow.add { type = "label", caption = "/", style = "tlbe_config_half_width_label" }
blockFlow.add {
type = "textfield",
name = "tlbe-tracker-cityblock-currentblock-y",
style = "tlbe_config_half_width_textfield",
tooltip = { "tooltip.tracker-cityblock-currentblock-y" },
numeric = true,
allow_negative = true
}

trackerInfo.add {
type = "label",
caption = { "gui.label-cityblock-blockScale" },
tooltip = { "tooltip.tracker-cityblock-blockScale" },
style = "description_property_name_label"
}
trackerInfo.add {
type = "textfield",
name = "tlbe-tracker-cityblock-blockScale-value",
style = "tlbe_config_half_width_textfield",
tooltip = { "tooltip.tracker-cityblock-blockScale-value" },
numeric = true,
allow_decimal = true,
allow_negative = false
}

trackerInfo.add {
type = "label",
caption = { "gui.label-cityblock-centerOnPlayer" },
style = "description_property_name_label"
}
trackerInfo.add {
type = "sprite-button",
name = "tlbe-tracker-cityblock-player",
tooltip = { "tooltip.tracker-cityblock-player" },
sprite = "utility/show_player_names_in_map_view_black",
style = "tlbe_config_button"
}
end
end

Expand All @@ -1447,6 +1633,8 @@ function GUI.createTrackerConfigAndInfo(trackerInfo, tracker)
GUI.updateTrackerInfo(trackerInfo, tracker)
end

---@param trackerInfo any
---@param tracker Tracker.tracker
function GUI.updateTrackerConfig(trackerInfo, tracker)
if tracker == nil then
trackerInfo["tracker-name"].enabled = false
Expand Down Expand Up @@ -1488,6 +1676,25 @@ function GUI.updateTrackerConfig(trackerInfo, tracker)
blFlow["tlbe-tracker-left"].style = style
elseif tracker.type == "player" then
trackerInfo["tracker-untilbuild"].state = tracker.untilBuild
elseif tracker.type == "cityblock" then
local cityBlock = tracker.cityBlock
if cityBlock == nil then
return
end

local sizeFlow = trackerInfo["cityblock-size"]
sizeFlow["tlbe-tracker-cityblock-size-x"].text = string.format("%d", cityBlock.blockSize.x)
sizeFlow["tlbe-tracker-cityblock-size-y"].text = string.format("%d", cityBlock.blockSize.y)

local offsetFlow = trackerInfo["cityblock-offset"]
offsetFlow["tlbe-tracker-cityblock-offset-x"].text = string.format("%d", cityBlock.blockOffset.x)
offsetFlow["tlbe-tracker-cityblock-offset-y"].text = string.format("%d", cityBlock.blockOffset.y)

local blockFlow = trackerInfo["cityblock-block"]
blockFlow["tlbe-tracker-cityblock-currentblock-x"].text = string.format("%d", cityBlock.currentBlock.x)
blockFlow["tlbe-tracker-cityblock-currentblock-y"].text = string.format("%d", cityBlock.currentBlock.y)

trackerInfo["tlbe-tracker-cityblock-blockScale-value"].text = string.format("%g", cityBlock.blockScale)
end
end
end
Expand Down
Loading