diff options
Diffstat (limited to 'stargate')
| -rw-r--r-- | stargate/io.lua | 1 | ||||
| -rw-r--r-- | stargate/sounds/paperflip2.ogg | bin | 0 -> 20582 bytes | |||
| -rw-r--r-- | stargate/stargate_gui.lua | 163 | ||||
| -rw-r--r-- | stargate/textures/dot_icon.png | bin | 731 -> 661 bytes | |||
| -rw-r--r-- | stargate/textures/left_icon.png | bin | 0 -> 2030 bytes | |||
| -rw-r--r-- | stargate/textures/right_icon.png | bin | 0 -> 1988 bytes | |||
| -rw-r--r-- | stargate/textures/stargate_icon.png | bin | 0 -> 1711 bytes | 
7 files changed, 106 insertions, 58 deletions
| diff --git a/stargate/io.lua b/stargate/io.lua deleted file mode 100644 index 8b13789..0000000 --- a/stargate/io.lua +++ /dev/null @@ -1 +0,0 @@ - diff --git a/stargate/sounds/paperflip2.ogg b/stargate/sounds/paperflip2.oggBinary files differ new file mode 100644 index 0000000..321bc48 --- /dev/null +++ b/stargate/sounds/paperflip2.ogg diff --git a/stargate/stargate_gui.lua b/stargate/stargate_gui.lua index 93357d1..940616d 100644 --- a/stargate/stargate_gui.lua +++ b/stargate/stargate_gui.lua @@ -1,11 +1,11 @@  -- default GUI page  stargate.default_page = "main" -stargate.players={} +stargate_network["players"]={}  stargate.current_page={} -stargate.save_data = function() -	local data = minetest.serialize( stargate_network ) -	local path = minetest.get_worldpath().."/mod_stargate.data" +stargate.save_data = function(table_pointer) +	local data = minetest.serialize( stargate_network[table_pointer] ) +	local path = minetest.get_worldpath().."/stargate_"..table_pointer..".data"  	local file = io.open( path, "w" )  	if( file ) then  		file:write( data ) @@ -15,12 +15,12 @@ stargate.save_data = function()  	end  end -stargate.restore_data = function() -	local path = minetest.get_worldpath().."/mod_stargate.data" +stargate.restore_data = function(table_pointer) +	local path = minetest.get_worldpath().."/stargate_"..table_pointer..".data"  	local file = io.open( path, "r" )  	if( file ) then  		local data = file:read("*all") -		stargate_network = minetest.deserialize( data ) +		stargate_network[table_pointer] = minetest.deserialize( data )  		file:close()  	return true  	else return nil @@ -28,26 +28,42 @@ stargate.restore_data = function()  end  -- load Stargates network data -if stargate.restore_data()==nil then -	print ("[stargate] network data not found. Creating new file.") -	if stargate.save_data()==nil then -		print ("[stargate] Cannot load nor create new file!") -		--crash or something here? -	else -		print ("[stargate] New data file created.") +if stargate.restore_data("registered_players") ~= nil then +	print(dump(stargate_network["registered_players"])) +	for __,tab in ipairs(stargate_network["registered_players"]) do +		if stargate.restore_data(tab["player_name"]) == nil  then +			print ("[stargate] Error loading data!") +		end  	end +else +	print ("[stargate] Error loading data! Creating new file.") +	stargate_network["registered_players"]={} +	stargate.save_data("registered_players") +	print(dump(stargate_network["registered_players"]))  end  -- register_on_joinplayer  minetest.register_on_joinplayer(function(player)  	local player_name = player:get_player_name() -	stargate.players[player_name]={} -	stargate.players[player_name]["formspec"]="" -	stargate.players[player_name]["current_page"]=stargate.default_page -	stargate.players[player_name]["own_gates"]={} -	stargate.players[player_name]["own_gates_count"]=0 -	stargate.players[player_name]["public_gates"]={} -	stargate.players[player_name]["public_gates_count"]=0 +	local registered=nil +	for __,tab in ipairs(stargate_network["registered_players"]) do +		if tab["player_name"] ==  player_name then registered = true break end +	end +	if registered == nil then +		local new={} +		new["player_name"]=player_name +		table.insert(stargate_network["registered_players"],new) +		stargate.save_data("registered_players") +		stargate.save_data(player_name) +	end +	stargate_network["players"][player_name]={} +	stargate_network["players"][player_name]["formspec"]="" +	stargate_network["players"][player_name]["current_page"]=stargate.default_page +	stargate_network["players"][player_name]["own_gates"]={} +	stargate_network["players"][player_name]["own_gates_count"]=0 +	stargate_network["players"][player_name]["public_gates"]={} +	stargate_network["players"][player_name]["public_gates_count"]=0 +	stargate_network["players"][player_name]["current_index"]=0  end)  stargate.registerGate = function(player_name,pos) @@ -59,7 +75,7 @@ stargate.registerGate = function(player_name,pos)  	new_gate["type"]="private"  	new_gate["description"]=""  	table.insert(stargate_network[player_name],new_gate) -	if stargate.save_data()==nil then +	if stargate.save_data(player_name)==nil then  		print ("[stargate] Couldnt update network file!")  	end  end @@ -71,7 +87,7 @@ stargate.unregisterGate = function(player_name,pos)  			break  		end  	end -	if stargate.save_data()==nil then +	if stargate.save_data(player_name)==nil then  		print ("[stargate] Couldnt update network file!")  	end  end @@ -83,35 +99,36 @@ stargate.gateFormspecHandler = function(pos, node, clicker, itemstack)  	local owner=meta:get_string("owner")  	if player_name~=owner then return end  	local current_gate=nil -	stargate.players[player_name]["own_gates"]={} -	stargate.players[player_name]["public_gates"]={} +	stargate_network["players"][player_name]["own_gates"]={} +	stargate_network["players"][player_name]["public_gates"]={}  	local own_gates_count=0  	for __,gates in ipairs(stargate_network[player_name]) do  		if gates["pos"].x==pos.x and gates["pos"].y==pos.y and gates["pos"].z==pos.z then  			current_gate=gates  		else  		own_gates_count=own_gates_count+1 -		table.insert(stargate.players[player_name]["own_gates"],gates) +		table.insert(stargate_network["players"][player_name]["own_gates"],gates)  		end  	end -	stargate.players[player_name]["own_gates_count"]=own_gates_count +	stargate_network["players"][player_name]["own_gates_count"]=own_gates_count  	if current_gate==nil then   		print ("Gate not registered in network! Please remove it and place once again.")  		return nil  	end -	stargate.players[player_name]["current_index"]=0 -	stargate.players[player_name]["current_gate"]=current_gate -	stargate.players[player_name]["dest_type"]="own" +	stargate_network["players"][player_name]["current_index"]=0 +	stargate_network["players"][player_name]["current_gate"]=current_gate +	stargate_network["players"][player_name]["dest_type"]="own"  	local formspec=stargate.get_formspec(player_name,"main") -	stargate.players[player_name]["formspec"]=formspec -	minetest.show_formspec(player_name, "stargate:main", formspec) +	stargate_network["players"][player_name]["formspec"]=formspec +	print(dump(formspec)) +	if formspec ~=nil then minetest.show_formspec(player_name, "stargate_main", formspec) end  end  -- get_formspec  stargate.get_formspec = function(player_name,page) -	if player_name==nil then return "" end -	stargate.players[player_name]["current_page"]=page -	local current_gate=stargate.players[player_name]["current_gate"] +	if player_name==nil then return nil end +	stargate_network["players"][player_name]["current_page"]=page +	local current_gate=stargate_network["players"][player_name]["current_gate"]  	local formspec = "size[14,10]"  	--background  	formspec = formspec .."background[-0.19,-0.2,;14.38,10.55;ui_form_bg.png]" @@ -123,7 +140,7 @@ stargate.get_formspec = function(player_name,page)  	formspec = formspec.."label[0,1.1;Destination: ]"  	formspec = formspec.."label[0,1.7;Aviable destinations:]"  	formspec = formspec.."image_button[3.5,1.8;.6,.6;toggle_icon.png;toggle_dest_type;]" -	formspec = formspec.."label[4,1.7;Type: "..stargate.players[player_name]["dest_type"].."]" +	formspec = formspec.."label[4,1.7;Filter: "..stargate_network["players"][player_name]["dest_type"].."]"  	if page=="main" then  	formspec = formspec.."image_button[6.5,.6;.6,.6;pencil_icon.png;edit_desc;]" @@ -134,54 +151,58 @@ stargate.get_formspec = function(player_name,page)  	formspec = formspec.."field[7.3,.7;5,1;desc_box;Edit gate description:;"..current_gate["description"].."]"  	end -	local list_index=stargate.players[player_name]["current_index"] -	print(dump(stargate.players[player_name]["own_gates_count"])) +	local list_index=stargate_network["players"][player_name]["current_index"]  	local page=math.floor(list_index / (30) + 1) -	local pagemax = math.floor((stargate.players[player_name]["own_gates_count"]+1) / (30) + 1) -	for y=0,9,1 do +	local pagemax = math.floor((stargate_network["players"][player_name]["own_gates_count"]+1) / (30) + 1) +	for y=0,7,1 do  	for x=0,2,1 do -		print(dump(list_index)) -		print(dump(stargate.players[player_name]["own_gates"][list_index+1])) -		local gate_temp=stargate.players[player_name]["own_gates"][list_index+1] +		local gate_temp=stargate_network["players"][player_name]["own_gates"][list_index+1]  		if gate_temp then -			formspec = formspec.."image_button["..(x*5)..","..(4+y*.8)..";.6,.6;dot_icon.png;list_button"..list_index..";]" -			formspec = formspec.."label["..(x*5+.8)..","..(4+y*.8)..";("..gate_temp["pos"].x..","..gate_temp["pos"].y..","..gate_temp["pos"].z..")]" +			formspec = formspec.."image_button["..(x*4.5)..","..(2.5+y*.9)..";.6,.6;stargate_icon.png;list_button"..list_index..";]" +			formspec = formspec.."label["..(x*4.5+.5)..","..(2.3+y*.9)..";("..gate_temp["pos"].x..","..gate_temp["pos"].y..","..gate_temp["pos"].z..") "..gate_temp["type"].."]" +			formspec = formspec.."label["..(x*4.5+.5)..","..(2.7+y*.9)..";"..gate_temp["description"].."]"  		end  		list_index=list_index+1  	end -	end	 +	end +	formspec = formspec.."image_button[6.5,1.8;.6,.6;left_icon.png;page_left;]" +	formspec = formspec.."image_button[6.9,1.8;.6,.6;right_icon.png;page_right;]" +	formspec=formspec.."label[7.5,1.7;Page: "..page.." of "..pagemax.."]"  	return formspec  end  -- register_on_player_receive_fields  minetest.register_on_player_receive_fields(function(player, formname, fields) +	print(dump(formname)) +	--if formname ~= "stargate:main" then return end  	local player_name = player:get_player_name() -	local current_gate=stargate.players[player_name]["current_gate"] +	local current_gate=stargate_network["players"][player_name]["current_gate"]  	local formspec  	if fields.toggle_type then  		if current_gate["type"] == "private" then  -			current_gate["type"]="public" -		else current_gate["type"]="private" end +			current_gate["type"] = "public" +		else current_gate["type"] = "private" end  		formspec= stargate.get_formspec(player_name,"main") -		stargate.players[player_name]["formspec"]=formspec +		stargate_network["players"][player_name]["formspec"] = formspec  		minetest.show_formspec(player_name, "stargate:main", formspec)  		minetest.sound_play("click", {to_player=player_name, gain = 0.5})  		return  	end  	if fields.toggle_dest_type then -		if stargate.players[player_name]["dest_type"] == "all own" then  -			stargate.players[player_name]["dest_type"]="all public" -		else stargate.players[player_name]["dest_type"]="all own" end -		formspec= stargate.get_formspec(player_name,"main") -		stargate.players[player_name]["formspec"]=formspec +		if stargate_network["players"][player_name]["dest_type"] == "all own" then  +			stargate_network["players"][player_name]["dest_type"] = "all public" +		else stargate_network["players"][player_name]["dest_type"] = "all own" end +		stargate_network["players"][player_name]["current_index"] = 0 +		formspec = stargate.get_formspec(player_name,"main") +		stargate_network["players"][player_name]["formspec"] = formspec  		minetest.show_formspec(player_name, "stargate:main", formspec)  		minetest.sound_play("click", {to_player=player_name, gain = 0.5})  		return  	end  	if fields.edit_desc then  		formspec= stargate.get_formspec(player_name,"edit_desc") -		stargate.players[player_name]["formspec"]=formspec +		stargate_network["players"][player_name]["formspec"]=formspec  		minetest.show_formspec(player_name, "stargate:main", formspec)  		minetest.sound_play("click", {to_player=player_name, gain = 0.5})  		return @@ -190,9 +211,37 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)  	if fields.save_desc then  		current_gate["description"]=fields.desc_box  		formspec= stargate.get_formspec(player_name,"main") -		stargate.players[player_name]["formspec"]=formspec +		stargate_network["players"][player_name]["formspec"]=formspec  		minetest.show_formspec(player_name, "stargate:main", formspec)  		minetest.sound_play("click", {to_player=player_name, gain = 0.5})  		return  	end +	 +	-- page controls +	local start=math.floor(stargate_network["players"][player_name]["current_index"]/30 +1 ) +	local start_i=start +	local pagemax = math.floor((stargate_network["players"][player_name]["own_gates_count"]) / (30) + 1) +	 +	if fields.page_left then +		minetest.sound_play("paperflip2", {to_player=player_name, gain = 1.0}) +		start_i = start_i - 1 +		if start_i < 1 then	start_i = 1	end +		if not (start_i	== start) then +			stargate_network["players"][player_name]["current_index"] = (start_i-1)*30+1 +			formspec = stargate.get_formspec(player_name,"main") +			stargate_network["players"][player_name]["formspec"] = formspec +			minetest.show_formspec(player_name, "stargate:main", formspec) +		end +	end +	if fields.page_right then +		minetest.sound_play("paperflip2", {to_player=player_name, gain = 1.0}) +		start_i = start_i + 1  +		if start_i > pagemax then start_i =  pagemax end +		if not (start_i	== start) then +			stargate_network["players"][player_name]["current_index"] = (start_i-1)*30+1 +			formspec = stargate.get_formspec(player_name,"main") +			stargate_network["players"][player_name]["formspec"] = formspec +			minetest.show_formspec(player_name, "stargate:main", formspec) +		end +	end  end) diff --git a/stargate/textures/dot_icon.png b/stargate/textures/dot_icon.pngBinary files differ index e73af1a..3e109f3 100644 --- a/stargate/textures/dot_icon.png +++ b/stargate/textures/dot_icon.png diff --git a/stargate/textures/left_icon.png b/stargate/textures/left_icon.pngBinary files differ new file mode 100644 index 0000000..2534c77 --- /dev/null +++ b/stargate/textures/left_icon.png diff --git a/stargate/textures/right_icon.png b/stargate/textures/right_icon.pngBinary files differ new file mode 100644 index 0000000..5c2e7c5 --- /dev/null +++ b/stargate/textures/right_icon.png diff --git a/stargate/textures/stargate_icon.png b/stargate/textures/stargate_icon.pngBinary files differ new file mode 100644 index 0000000..243163c --- /dev/null +++ b/stargate/textures/stargate_icon.png | 
