mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-03-17 20:58:13 +02:00
Delete minimap.lua
This commit is contained in:
parent
37c8127b7f
commit
e188f47719
254
minimap.lua
254
minimap.lua
@ -1,254 +0,0 @@
|
||||
local Public = {}
|
||||
|
||||
local ICT = require 'maps.amap.ic.table'
|
||||
local Functions = require 'maps.amap.ic.functions'
|
||||
local Gui = require 'maps.amap.ic.gui'
|
||||
|
||||
local function validate_player(player)
|
||||
if not player then
|
||||
return false
|
||||
end
|
||||
if not player.valid then
|
||||
return false
|
||||
end
|
||||
if not player.character then
|
||||
return false
|
||||
end
|
||||
if not player.connected then
|
||||
return false
|
||||
end
|
||||
if not game.players[player.name] then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
local function create_button(player)
|
||||
local button =
|
||||
player.gui.top.add(
|
||||
{
|
||||
type = 'sprite-button',
|
||||
name = 'minimap_button',
|
||||
sprite = 'utility/map',
|
||||
tooltip = 'Open or close minimap.'
|
||||
}
|
||||
)
|
||||
button.visible = false
|
||||
end
|
||||
|
||||
function Public.toggle_button(player)
|
||||
if not player.gui.top['minimap_button'] then
|
||||
create_button(player)
|
||||
end
|
||||
local ic = ICT.get()
|
||||
local button = player.gui.top['minimap_button']
|
||||
if Functions.get_player_surface(ic, player) then
|
||||
button.visible = true
|
||||
else
|
||||
button.visible = false
|
||||
end
|
||||
end
|
||||
|
||||
local function get_player_data(player)
|
||||
local ic = ICT.get()
|
||||
local player_data = ic.minimap[player.index]
|
||||
if ic.minimap[player.index] then
|
||||
return player_data
|
||||
end
|
||||
|
||||
ic.minimap[player.index] = {
|
||||
surface = ic.allowed_surface,
|
||||
zoom = 0.30,
|
||||
map_size = 360,
|
||||
auto_map = true
|
||||
}
|
||||
return ic.minimap[player.index]
|
||||
end
|
||||
|
||||
function Public.toggle_auto(player)
|
||||
local ic = ICT.get()
|
||||
local switch = player.gui.left.minimap_toggle_frame['switch_auto_map']
|
||||
if not switch or not switch.valid then
|
||||
return
|
||||
end
|
||||
|
||||
if switch.switch_state == 'left' then
|
||||
ic.minimap[player.index].auto_map = true
|
||||
elseif switch.switch_state == 'right' then
|
||||
ic.minimap[player.index].auto_map = false
|
||||
end
|
||||
end
|
||||
|
||||
local function kill_minimap(player)
|
||||
local frame = player.gui.left.minimap_toggle_frame
|
||||
if not frame or not frame.valid then
|
||||
return
|
||||
end
|
||||
if frame.visible then
|
||||
frame.destroy()
|
||||
end
|
||||
end
|
||||
|
||||
local function kill_frame(player)
|
||||
if player.gui.left.minimap_toggle_frame then
|
||||
local element = player.gui.left.minimap_toggle_frame.minimap_frame
|
||||
if not element or not element.valid then
|
||||
return
|
||||
end
|
||||
element.destroy()
|
||||
end
|
||||
end
|
||||
|
||||
local function draw_minimap(player, surface, position)
|
||||
local ic = ICT.get()
|
||||
surface = surface or game.surfaces[ic.allowed_surface]
|
||||
if not surface or not surface.valid then
|
||||
return
|
||||
end
|
||||
local cars = ic.cars
|
||||
|
||||
local entity = Functions.get_entity_from_player_surface(cars, player)
|
||||
if not position then
|
||||
if not entity or not entity.valid then
|
||||
kill_minimap(player)
|
||||
kill_frame(player)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
position = position or entity.position
|
||||
local player_data = get_player_data(player)
|
||||
local frame = player.gui.left.minimap_toggle_frame
|
||||
if not frame then
|
||||
frame =
|
||||
player.gui.left.add(
|
||||
{type = 'frame', direction = 'vertical', name = 'minimap_toggle_frame', caption = 'Minimap'}
|
||||
)
|
||||
end
|
||||
frame.visible = true
|
||||
local element = frame['minimap_frame']
|
||||
if not element then
|
||||
element =
|
||||
player.gui.left.minimap_toggle_frame.add(
|
||||
{
|
||||
type = 'camera',
|
||||
name = 'minimap_frame',
|
||||
position = position,
|
||||
surface_index = surface.index,
|
||||
zoom = player_data.zoom,
|
||||
tooltip = 'LMB: Increase zoom level.\nRMB: Decrease zoom level.\nMMB: Toggle camera size.'
|
||||
}
|
||||
)
|
||||
element.style.margin = 1
|
||||
element.style.minimal_height = player_data.map_size
|
||||
element.style.minimal_width = player_data.map_size
|
||||
return
|
||||
end
|
||||
element.position = position
|
||||
end
|
||||
|
||||
function Public.minimap(player, surface, position)
|
||||
local frame = player.gui.left['minimap_toggle_frame']
|
||||
local ic = ICT.get()
|
||||
if frame and frame.visible then
|
||||
kill_minimap(player)
|
||||
else
|
||||
if Functions.get_player_surface(ic, player) and not surface and not position then
|
||||
draw_minimap(player)
|
||||
else
|
||||
draw_minimap(player, surface, position)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Public.update_minimap()
|
||||
local ic = ICT.get()
|
||||
for k, player in pairs(game.connected_players) do
|
||||
if Functions.get_player_surface(ic, player) and player.gui.left.minimap_toggle_frame then
|
||||
kill_frame(player)
|
||||
draw_minimap(player)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Public.toggle_minimap(event)
|
||||
local element = event.element
|
||||
if not element then
|
||||
return
|
||||
end
|
||||
if not element.valid then
|
||||
return
|
||||
end
|
||||
if element.name ~= 'minimap_frame' then
|
||||
return
|
||||
end
|
||||
local player = game.players[event.player_index]
|
||||
local player_data = get_player_data(player)
|
||||
if event.button == defines.mouse_button_type.right then
|
||||
player_data.zoom = player_data.zoom - 0.07
|
||||
if player_data.zoom < 0.07 then
|
||||
player_data.zoom = 0.07
|
||||
end
|
||||
element.zoom = player_data.zoom
|
||||
return
|
||||
end
|
||||
if event.button == defines.mouse_button_type.left then
|
||||
player_data.zoom = player_data.zoom + 0.07
|
||||
if player_data.zoom > 2 then
|
||||
player_data.zoom = 2
|
||||
end
|
||||
element.zoom = player_data.zoom
|
||||
return
|
||||
end
|
||||
if event.button == defines.mouse_button_type.middle then
|
||||
player_data.map_size = player_data.map_size + 50
|
||||
if player_data.map_size > 650 then
|
||||
player_data.map_size = 250
|
||||
end
|
||||
element.style.minimal_height = player_data.map_size
|
||||
element.style.minimal_width = player_data.map_size
|
||||
element.style.maximal_height = player_data.map_size
|
||||
element.style.maximal_width = player_data.map_size
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function Public.changed_surface(event)
|
||||
local player = game.players[event.player_index]
|
||||
if not validate_player(player) then
|
||||
return
|
||||
end
|
||||
|
||||
local ic = ICT.get()
|
||||
local surface = game.surfaces[ic.allowed_surface]
|
||||
if not surface or not surface.valid then
|
||||
return
|
||||
end
|
||||
local wd = player.gui.top['wave_defense']
|
||||
local diff = player.gui.top['difficulty_gui']
|
||||
|
||||
if Functions.get_player_surface(ic, player) then
|
||||
Public.toggle_button(player)
|
||||
Public.minimap(player, surface)
|
||||
if wd and wd.visible then
|
||||
wd.visible = false
|
||||
end
|
||||
if diff and diff.visible then
|
||||
diff.visible = false
|
||||
end
|
||||
elseif player.surface.index == surface.index then
|
||||
Gui.remove_toolbar(player)
|
||||
Public.toggle_button(player)
|
||||
kill_minimap(player)
|
||||
if wd and not wd.visible then
|
||||
wd.visible = true
|
||||
end
|
||||
if diff and not diff.visible then
|
||||
diff.visible = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Public.kill_minimap = kill_minimap
|
||||
|
||||
return Public
|
Loading…
x
Reference in New Issue
Block a user