update
authorRealBadAngel <mk@realbadangel.pl>
Mon, 11 Mar 2013 20:24:41 +0000 (21:24 +0100)
committerRealBadAngel <mk@realbadangel.pl>
Mon, 11 Mar 2013 20:24:41 +0000 (21:24 +0100)
stargate/io.lua [deleted file]
stargate/sounds/paperflip2.ogg [new file with mode: 0644]
stargate/stargate_gui.lua
stargate/textures/dot_icon.png
stargate/textures/left_icon.png [new file with mode: 0644]
stargate/textures/right_icon.png [new file with mode: 0644]
stargate/textures/stargate_icon.png [new file with mode: 0644]

diff --git a/stargate/io.lua b/stargate/io.lua
deleted file mode 100644 (file)
index 8b13789..0000000
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/stargate/sounds/paperflip2.ogg b/stargate/sounds/paperflip2.ogg
new file mode 100644 (file)
index 0000000..321bc48
Binary files /dev/null and b/stargate/sounds/paperflip2.ogg differ
index 93357d14ec1cc3bef645a87ce09276eeb8bfa716..940616d7488024dbc941e31c47b24239458cfb9f 100644 (file)
@@ -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)
index e73af1a5b44a43d19abb060b6b01433bc02e4460..3e109f39f5ba192afc15f0cbb54b5f6a875a3b6a 100644 (file)
Binary files a/stargate/textures/dot_icon.png and b/stargate/textures/dot_icon.png differ
diff --git a/stargate/textures/left_icon.png b/stargate/textures/left_icon.png
new file mode 100644 (file)
index 0000000..2534c77
Binary files /dev/null and b/stargate/textures/left_icon.png differ
diff --git a/stargate/textures/right_icon.png b/stargate/textures/right_icon.png
new file mode 100644 (file)
index 0000000..5c2e7c5
Binary files /dev/null and b/stargate/textures/right_icon.png differ
diff --git a/stargate/textures/stargate_icon.png b/stargate/textures/stargate_icon.png
new file mode 100644 (file)
index 0000000..243163c
Binary files /dev/null and b/stargate/textures/stargate_icon.png differ