53 lines
2.1 KiB
Lua
53 lines
2.1 KiB
Lua
--[[
|
|
"author": "ThaPear"
|
|
"name": "Item Count"
|
|
--]]
|
|
local Event = require('__stdlib__/stdlib/event/event')
|
|
|
|
local function get_or_create_itemcount_gui(player)
|
|
local gui = player.gui.center.itemcount
|
|
if not gui then
|
|
gui = player.gui.center.add {type = 'label', name = 'itemcount', caption = '0', direction = 'vertical'}
|
|
gui.style.font = 'default-bold'
|
|
end
|
|
local enabled = player.mod_settings['picker-item-count'].value
|
|
gui.visible = enabled and player.cursor_stack.valid_for_read
|
|
return gui
|
|
end
|
|
|
|
local function get_itemcount_counts(event)
|
|
local player = game.players[event.player_index]
|
|
local stack = player.cursor_stack and player.cursor_stack.valid_for_read and player.cursor_stack
|
|
local gui = get_or_create_itemcount_gui(player)
|
|
if stack and (stack.prototype.stackable or stack.prototype.stack_size > 1) then
|
|
local inventory_count = player.get_item_count(stack.name)
|
|
local vehicle_count
|
|
if player.vehicle and player.vehicle.get_inventory(defines.inventory.car_trunk) then
|
|
vehicle_count = player.vehicle.get_inventory(defines.inventory.car_trunk).get_item_count(stack.name)
|
|
end
|
|
gui.caption = inventory_count .. (vehicle_count and (' (' .. vehicle_count .. ')') or '')
|
|
else
|
|
gui.caption = ''
|
|
end
|
|
end
|
|
|
|
local item_count_events = {
|
|
defines.events.on_player_cursor_stack_changed,
|
|
defines.events.on_player_driving_changed_state,
|
|
defines.events.on_player_main_inventory_changed,
|
|
defines.events.on_player_ammo_inventory_changed
|
|
}
|
|
Event.register(item_count_events, get_itemcount_counts)
|
|
|
|
local function update_item_count_settings(event)
|
|
local player = game.players[event.player_index]
|
|
if event.setting == 'picker-item-count' then
|
|
local enabled = player.mod_settings['picker-item-count'].value
|
|
local gui = get_or_create_itemcount_gui(player)
|
|
gui.visible = enabled and player.cursor_stack.valid_for_read or false
|
|
end
|
|
end
|
|
Event.register(defines.events.on_runtime_mod_setting_changed, update_item_count_settings)
|
|
|
|
return get_or_create_itemcount_gui
|