Browse Source

Bugfixes after test with Skylar!

Nathan Schneider 2 years ago
parent
commit
9a2c72c6a1

+ 1 - 1
mod.conf

@@ -1,7 +1,7 @@
 name = modpol
 title = Modpol
 author = ntnsndr <n@nathanschneider.info>
-description = Framework that enables diverse governance processes
+description = A framework that enables diverse governance processes
 license = MIT
 forum = https://forum.minetest.net/viewtopic.php?f=9&t=27598
 version = 0.1

+ 1 - 0
modpol_core/api.lua

@@ -5,6 +5,7 @@ local localdir = modpol.topdir
 --orgs
 dofile (localdir .. "/orgs/base.lua")
 dofile (localdir .. "/orgs/process.lua")
+dofile (localdir .. "/orgs/users.lua")
 
 --interactions
 dofile (localdir .. "/interactions/interactions.lua")

+ 5 - 3
modpol_core/interactions/interactions.lua

@@ -37,8 +37,10 @@ function modpol.interactions.dashboard(user)
    local user_pending_count = 0
    for k,v in ipairs(modpol.orgs.array) do
       if v.pending and v.pending[user] then
-         table.insert(user_pending, v.name)
-         user_pending_count = user_pending_count + 1
+         if modpol.util.num_pairs(v.pending[user]) ~= 0 then
+            table.insert(user_pending, v.name)
+            user_pending_count = user_pending_count + 1
+         end
       end
    end
    
@@ -108,7 +110,7 @@ function modpol.interactions.org_dashboard(user, org_string)
    print("Org: " .. org.name)
    print("Parent: " .. parent)
    print("Members: " .. table.concat(org.members, ", "))
-   print("Children: " .. table.concat(children, ", "))
+   print("Child orgs: " .. table.concat(children, ", "))
    print("Modules: " .. table.concat(modules, ", "))
    print("Pending: " .. process_msg)
    print()

+ 2 - 1
modpol_core/modules/add_child_org_consent.lua

@@ -66,7 +66,8 @@ function add_child_org_consent:create_child_org()
    modpol.interactions.message_org(
       self.initiator,
       self.org.name,
-      "Child org created: "..self.data.child_name)
+      "Consent reached: created child org "
+      ..self.data.child_name)
    if self.data.result then self.data.result() end
    self.org:delete_process(self.id)
 end

+ 1 - 1
modpol_core/modules/change_modules.lua

@@ -83,7 +83,7 @@ function change_modules:remove_module()
    local available_modules = {}
    for k,org_mod in pairs(self.org.modules) do
       if not org_mod.hide then
-         available_modules[org_mod.slug] = modpol.copy_table(org_mod)
+         available_modules[org_mod.slug] = modpol.util.copy_table(org_mod)
    end end
    local modules_list = {}
    local modules_count = 0

+ 2 - 2
modpol_core/modules/consent.lua

@@ -2,9 +2,9 @@
 -- A utility module for checking consent
 
 local consent = {
-    name = "Consent process utility",
+    name = "Consent process",
     slug = "consent",
-    desc = "A module other modules use for consent decisions",
+    desc = "A utility module other modules use for consent decisions",
     hide = true
 }
 

+ 4 - 2
modpol_core/orgs/base.lua

@@ -72,6 +72,8 @@ end
 -- ===========================================
 -- deletes all orgs except for the instance
 function modpol.orgs.reset()
+   local instance_members =
+      modpol.util.copy_table(modpol.instance.members)
     for id, org in ipairs(modpol.orgs.array) do
         if id > 1 then
             modpol.orgs.array[id] = "removed"
@@ -80,9 +82,9 @@ function modpol.orgs.reset()
 
     modpol.orgs.array[1] = nil
     modpol.instance = modpol.orgs.init_instance()
-    
+    modpol.instance.members = instance_members
 
-    modpol.ocutil.log('Reset all orgs')
+    modpol.ocutil.log('All orgs reset')
     modpol.orgs:record('Resetting all orgs', 'org_reset')
 end
 

+ 27 - 0
modpol_core/orgs/users.lua

@@ -0,0 +1,27 @@
+-- /users.lua
+-- User-related functions for Modular Politics
+
+-- ===================================================================
+-- Function: modpol.list_users
+-- Params: org
+-- Outputs: Table of user names
+--
+-- This may be overwritten by the platform-specific interface
+
+modpol.list_users = function(org)
+   local users = {}
+   if (org == nil) then -- no specified org; all players
+      if modpol.orgs["instance"]
+         and modpol.orgs["instance"]["members"] then
+         -- if instance exists and has membership
+         users = modpol.orgs["instance"]["members"]
+      else
+         users = {}
+      end
+   else -- if an org is specified
+      if (modpol.orgs[org] ~= nil) then -- org exists
+         users = modpol.orgs[org]["members"]
+      end
+   end
+   return users
+end

+ 2 - 1
modpol_core/util/misc.lua

@@ -10,7 +10,8 @@ function modpol.util.copy_table(t)
    return t2
 end
 
---- @function modpol.copy_table
+--- @function modpol.num_pairs
+-- @param t table with pairs
 -- Returns the number of elements in a pairs table
 function modpol.util.num_pairs(t)
    local i = 0

+ 1 - 0
modpol_minetest/api.lua

@@ -9,6 +9,7 @@ local localdir = minetest.get_modpath("modpol") .. "/modpol_minetest"
 
 --overrides
 dofile (localdir .. "/overrides/interactions.lua")
+dofile (localdir .. "/overrides/users.lua")
 
 --testing command for "singleplayer"
 function modpol.msg(text)

+ 0 - 1
modpol_minetest/chatcommands.lua

@@ -35,7 +35,6 @@ regchat(
       privs = {privs=true},
       func = function(user)
          modpol.orgs.reset()
-         modpol.instance:add_member(user)
          modpol.interactions.dashboard(user)
          return true, "Reset orgs"
       end,

+ 5 - 4
modpol_minetest/overrides/interactions.lua

@@ -53,9 +53,10 @@ function modpol.interactions.dashboard(user)
    local user_pending_count = 0
    for k,v in ipairs(modpol.orgs.array) do
       if v.pending and v.pending[user] then
-         modpol.msg(v.name)
-         table.insert(user_pending, v.name)
-         user_pending_count = user_pending_count + 1
+         if modpol.util.num_pairs(v.pending[user]) ~= 0 then
+            table.insert(user_pending, v.name)
+            user_pending_count = user_pending_count + 1
+         end
       end
    end
 
@@ -169,7 +170,7 @@ function modpol.interactions.org_dashboard(user, org_string)
        "label[0.5,1;Parent: "..parent..membership_toggle(parent).."]",
        "label[0.5,2;Members:]",
        "dropdown[2,1.5;7,0.8;user_orgs;"..formspec_list(org.members)..";;]",
-       "label[0.5,3;Children:]",
+       "label[0.5,3;Child orgs:]",
        "dropdown[2,2.5;7,0.8;children;"..formspec_list(children)..";;]",
        "label[0.5,4;Modules:]",
        "dropdown[2,3.5;7,0.8;modules;"..formspec_list(modules)..";;]",

+ 20 - 0
modpol_minetest/overrides/users.lua

@@ -0,0 +1,20 @@
+-- ===================================================================
+-- Function: modpol.list_users(org)
+-- Overwrites function at /users.lua
+-- Params:
+-- if nil, lists instance members; if an org name, lists its members
+-- Output: a table with names of players currently in the game
+modpol.list_users = function(org)
+    local users = {}
+    if (org == nil) then -- no specified org; all players
+       for _,player in ipairs(minetest.get_connected_players()) do
+          local name = player:get_player_name()
+          table.insert(users,name)
+       end
+    else -- if an org is specified
+       if (modpol.orgs[org] ~= nil) then -- org exists
+          users = modpol.orgs[org]["members"]
+       end
+    end
+    return users
+ end