limit available operations per step: moving(8),placing(5), inserting(5)
faster text render string, changed length limit
This commit is contained in:
parent
86c1317f06
commit
f110b93dc3
19
commands.lua
19
commands.lua
@ -80,6 +80,8 @@ basic_robot.commands.move = function(name,dir)
|
|||||||
local obj = basic_robot.data[name].obj;
|
local obj = basic_robot.data[name].obj;
|
||||||
local pos = pos_in_dir(obj, dir)
|
local pos = pos_in_dir(obj, dir)
|
||||||
|
|
||||||
|
check_operations(name,0.25,true)
|
||||||
|
|
||||||
-- can move through walkable nodes
|
-- can move through walkable nodes
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].walkable then return end
|
if minetest.registered_nodes[minetest.get_node(pos).name].walkable then return end
|
||||||
-- up; no levitation!
|
-- up; no levitation!
|
||||||
@ -168,6 +170,8 @@ end
|
|||||||
|
|
||||||
|
|
||||||
basic_robot.commands.insert_item = function(name,item, inventory,dir)
|
basic_robot.commands.insert_item = function(name,item, inventory,dir)
|
||||||
|
|
||||||
|
check_operations(name,0.4,true)
|
||||||
local obj = basic_robot.data[name].obj;
|
local obj = basic_robot.data[name].obj;
|
||||||
local tpos = pos_in_dir(obj, dir); -- position of target block
|
local tpos = pos_in_dir(obj, dir); -- position of target block
|
||||||
local luaent = obj:get_luaentity();
|
local luaent = obj:get_luaentity();
|
||||||
@ -337,6 +341,8 @@ basic_robot.commands.write_text = function(name,dir,text)
|
|||||||
end
|
end
|
||||||
|
|
||||||
basic_robot.commands.place = function(name,nodename, param2,dir)
|
basic_robot.commands.place = function(name,nodename, param2,dir)
|
||||||
|
|
||||||
|
check_operations(name,0.4,true)
|
||||||
local obj = basic_robot.data[name].obj;
|
local obj = basic_robot.data[name].obj;
|
||||||
local pos = pos_in_dir(obj, dir)
|
local pos = pos_in_dir(obj, dir)
|
||||||
local luaent = obj:get_luaentity();
|
local luaent = obj:get_luaentity();
|
||||||
@ -493,6 +499,7 @@ local render_text = function(text,linesize)
|
|||||||
local count = math.floor(string.len(text)/linesize)+1;
|
local count = math.floor(string.len(text)/linesize)+1;
|
||||||
local width = 18; local height = 24;
|
local width = 18; local height = 24;
|
||||||
local tex = "";
|
local tex = "";
|
||||||
|
local ret = {};
|
||||||
local y = 0; local x=0;
|
local y = 0; local x=0;
|
||||||
for i=1,string.len(text) do
|
for i=1,string.len(text) do
|
||||||
local cb = string.byte(text,i);
|
local cb = string.byte(text,i);
|
||||||
@ -501,26 +508,26 @@ local render_text = function(text,linesize)
|
|||||||
y=y+1; x=0
|
y=y+1; x=0
|
||||||
else
|
else
|
||||||
c = string.format("%03d",cb)..".png"
|
c = string.format("%03d",cb)..".png"
|
||||||
tex = tex .. ":" .. (x*width) .. "," .. (y*height) .. "=" .. c;
|
ret[#ret+1] = ":" .. (x*width) .. "," .. (y*height) .. "=" .. c;
|
||||||
|
--tex = tex .. ":" .. (x*width) .. "," .. (y*height) .. "=" .. c;
|
||||||
if x==linesize-1 then y=y+1 x=0 else x=x+1 end
|
if x==linesize-1 then y=y+1 x=0 else x=x+1 end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local background = "(black_screen.png^[resize:"..(linesize*width).. "x".. (linesize*height) ..")";
|
local background = "(black_screen.png^[resize:"..(linesize*width).. "x".. (linesize*height) ..")";
|
||||||
tex = "([combine:"..(linesize*width).."x"..(linesize*height)..tex..")";
|
--tex = "([combine:"..(linesize*width).."x"..(linesize*height)..tex..")";
|
||||||
tex = background .. "^" .. tex;
|
return background .. "^" .."([combine:"..(linesize*width).."x"..(linesize*height)..table.concat(ret,"")..")";
|
||||||
return tex;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
basic_robot.commands.display_text = function(obj,text,linesize,size)
|
basic_robot.commands.display_text = function(obj,text,linesize,size)
|
||||||
if not linesize or linesize<1 then linesize = 20 end
|
if not linesize or linesize<1 then linesize = 20 elseif linesize>40 then linesize = 40 end
|
||||||
if size and size<=0 then size = 1 end
|
if size and size<=0 then size = 1 end
|
||||||
|
|
||||||
if string.len(text)>linesize*linesize then text = string.sub(text,1,linesize*linesize) end
|
if string.len(text)>linesize*linesize then text = string.sub(text,1,linesize*linesize) end
|
||||||
local tex = render_text(text,linesize);
|
local tex = render_text(text,linesize);
|
||||||
if not size then return tex end
|
if not size then return tex end
|
||||||
|
|
||||||
if string.len(tex)<60000 then
|
if string.len(tex)<=1600 then
|
||||||
obj:set_properties({textures={"arrow.png","basic_machine_side.png",tex,"basic_machine_side.png","basic_machine_side.png","basic_machine_side.png"},visual_size = {x=size,y=size}})
|
obj:set_properties({textures={"arrow.png","basic_machine_side.png",tex,"basic_machine_side.png","basic_machine_side.png","basic_machine_side.png"},visual_size = {x=size,y=size}})
|
||||||
else
|
else
|
||||||
self.label("error: string too long")
|
self.label("error: string too long")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user