Improve injector interface

Make the injector's mode button lag-resistant.  Display the mode on
the button, as is done with other machines' toggle buttons.  Describe
the modes using the same words that are now used to distinguish the
corresponding pipeworks objects.  Expand name to "self-contained
injector", now that the pipeworks objects are also called "injector".
Show injector item image along with the item name at the head of the form.
This commit is contained in:
Zefram 2014-08-01 18:25:20 +01:00
parent daa6135211
commit 8275091347
5 changed files with 31 additions and 38 deletions

View File

@ -52,9 +52,8 @@ Upgrade Slots = Verbesserungsfaecher
In: = Rein: In: = Rein:
Out: = Raus: Out: = Raus:
Slot %d = Fach %d Slot %d = Fach %d
Mode: %s = Methode: %s Itemwise = Einzelstuecke
single items = Einzelstuecke Stackwise = Ganzer Stapel
whole stacks = Ganzer Stapel
## Machine names ## Machine names
# $1: Tier # $1: Tier
@ -77,7 +76,7 @@ Hydro %s Generator = %s Wassermuehle
Nuclear %s Generator Core = %s Reaktorkern Nuclear %s Generator Core = %s Reaktorkern
Small Solar %s Generator = %s Solarmodul Small Solar %s Generator = %s Solarmodul
Wind %s Generator = %s Windmuehle Wind %s Generator = %s Windmuehle
Injector = Injektor Self-Contained Injector = Selbstversorger-Injektor
Constructor Mk%d = Konstruktor Modell %d Constructor Mk%d = Konstruktor Modell %d
Frame = Rahmen Frame = Rahmen
Frame Motor = Rahmenmotor Frame Motor = Rahmenmotor

View File

@ -48,6 +48,8 @@ Inventory move disallowed due to protection =
%s Improperly Placed = %s No Colocado Apropiadamente %s Improperly Placed = %s No Colocado Apropiadamente
Range = Alcance Range = Alcance
Enable/Disable = Habilitar/Deshabilitar Enable/Disable = Habilitar/Deshabilitar
Itemwise =
Stackwise =
## Machine names ## Machine names
# $1: Tier # $1: Tier
@ -70,7 +72,7 @@ Hydro %s Generator = Molino de Agua %s
Nuclear %s Generator Core = Nucleo de Reactor Nuclear %s Nuclear %s Generator Core = Nucleo de Reactor Nuclear %s
Small Solar %s Generator = Panel Solar %s Small Solar %s Generator = Panel Solar %s
Wind %s Generator = Molino de Viento %s Wind %s Generator = Molino de Viento %s
Injector = Self-Contained Injector =
Constructor Mk%d = Constructor Mk%d =
Frame = Frame =
Frame Motor = Frame Motor =

View File

@ -49,9 +49,8 @@ Upgrade Slots =
In: = Ingresso: In: = Ingresso:
Out: = Uscita: Out: = Uscita:
Slot %d = Slot %d =
Mode: %s = Modalità: %s Itemwise = Singolo elemento
single items = Singolo elemento Stackwise = pila completa
whole stacks = pila completa
## Machine names ## Machine names
# $1: Tier # $1: Tier
@ -74,7 +73,7 @@ Hydro %s Generator = Turbina Elettrica %s
Nuclear %s Generator Core = Reattore nucleare %s Nuclear %s Generator Core = Reattore nucleare %s
Small Solar %s Generator = %s Pannello solare Small Solar %s Generator = %s Pannello solare
Wind %s Generator = %s Generatore eolico Wind %s Generator = %s Generatore eolico
Injector = Ignettore Self-Contained Injector = Ignettore
Constructor Mk%d = Costruttore Mk%d Constructor Mk%d = Costruttore Mk%d
Frame = Cornice Frame = Cornice
Frame Motor = Cornice del motore Frame Motor = Cornice del motore

View File

@ -54,9 +54,8 @@ Upgrade Slots =
In: = In: =
Out: = Out: =
Slot %d = Slot %d =
Mode: %s = Itemwise =
single items = Stackwise =
whole stacks =
Ignoring Mesecon Signal = Ignoring Mesecon Signal =
Controlled by Mesecon Signal = Controlled by Mesecon Signal =
@ -82,7 +81,7 @@ Hydro %s Generator =
Nuclear %s Generator Core = Nuclear %s Generator Core =
Small Solar %s Generator = Small Solar %s Generator =
Wind %s Generator = Wind %s Generator =
Injector = Self-Contained Injector =
Constructor Mk%d = Constructor Mk%d =
Frame = Frame =
Frame Motor = Frame Motor =

View File

@ -54,8 +54,21 @@ minetest.register_craft({
} }
}) })
local function set_injector_formspec(meta)
local is_stack = meta:get_string("mode") == "whole stacks"
meta:set_string("formspec",
"invsize[8,9;]"..
"item_image[0,0;1,1;technic:injector]"..
"label[1,0;"..S("Self-Contained Injector").."]"..
(is_stack and
"button[0,1;2,1;mode_item;"..S("Stackwise").."]" or
"button[0,1;2,1;mode_stack;"..S("Itemwise").."]")..
"list[current_name;main;0,2;8,2;]"..
"list[current_player;main;0,5;8,4;]")
end
minetest.register_node("technic:injector", { minetest.register_node("technic:injector", {
description = S("Injector"), description = S("Self-Contained Injector"),
tiles = {"technic_injector_top.png", "technic_injector_bottom.png", "technic_injector_side.png", tiles = {"technic_injector_top.png", "technic_injector_bottom.png", "technic_injector_side.png",
"technic_injector_side.png", "technic_injector_side.png", "technic_injector_side.png"}, "technic_injector_side.png", "technic_injector_side.png", "technic_injector_side.png"},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, tubedevice=1}, groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, tubedevice=1},
@ -63,17 +76,11 @@ minetest.register_node("technic:injector", {
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.env:get_meta(pos) local meta = minetest.env:get_meta(pos)
meta:set_string("formspec", meta:set_string("infotext", S("Self-Contained Injector"))
"invsize[8,9;]"..
"label[0,0;"..S("Injector").."]"..
"button[0,1;.8,.8;mode;]"..
"label[.8,1;"..S("Mode: %s"):format("single items").."]"..
"list[current_name;main;0,2;8,2;]"..
"list[current_player;main;0,5;8,4;]")
meta:set_string("infotext", S("Injector"))
local inv = meta:get_inventory() local inv = meta:get_inventory()
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
meta:set_string("mode","single items") meta:set_string("mode","single items")
set_injector_formspec(meta)
end, end,
can_dig = function(pos,player) can_dig = function(pos,player)
local meta = minetest.env:get_meta(pos); local meta = minetest.env:get_meta(pos);
@ -82,22 +89,9 @@ minetest.register_node("technic:injector", {
end, end,
on_receive_fields = function(pos, formanme, fields, sender) on_receive_fields = function(pos, formanme, fields, sender)
local meta = minetest.env:get_meta(pos) local meta = minetest.env:get_meta(pos)
local mode=meta:get_string("mode") if fields.mode_item then meta:set_string("mode", "single items") end
if fields.mode then if fields.mode_stack then meta:set_string("mode", "whole stacks") end
if mode == "single items" then set_injector_formspec(meta)
mode = "whole stacks"
else
mode = "single items"
end
meta:set_string("mode", mode)
end
meta:set_string("formspec",
"invsize[8,9;]"..
"label[0,0;"..S("Injector").."]"..
"button[0,1;.8,.8;mode;]"..
"label[.8,1;"..S("Mode: %s"):format(S(mode)).."]"..
"list[current_name;main;0,2;8,2;]"..
"list[current_player;main;0,5;8,4;]")
end, end,
allow_metadata_inventory_put = technic.machine_inventory_put, allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take, allow_metadata_inventory_take = technic.machine_inventory_take,