]> git.lizzy.rs Git - Crafter.git/commitdiff
Make capes code cleaner
authoroilboi <47129783+oilboi@users.noreply.github.com>
Mon, 22 Jun 2020 00:55:48 +0000 (20:55 -0400)
committeroilboi <47129783+oilboi@users.noreply.github.com>
Mon, 22 Jun 2020 00:55:48 +0000 (20:55 -0400)
mods/skins/init.lua

index 6c8fc6d14298409e6953fa34de385a6de9d5f3d4..9b9dd1084ae3cad7d666c76c70995390aa5f8869 100644 (file)
@@ -83,48 +83,31 @@ local fetch_function = function(name)
 end
 
 
-local capes             = {} --capes class
-capes.pos               = nil
-capes.object            = nil
-capes.old_pos           = nil
-capes.current_animation = nil
-capes.deg               = nil
-capes.body_yaw          = nil
-capes.cape_yaw          = nil
-capes.cape_pitch        = nil
-capes.goal              = nil
-capes.owner             = nil
-
-capes.pi                = math.pi
-
-capes.dir_to_yaw        = minetest.dir_to_yaw
-capes.new_vector        = vector.new
-capes.distance          = vector.distance
-capes.direction         = vector.direction
-capes.floor             = math.floor
-capes.abs               = math.abs
-capes.pairs             = pairs
-capes.is_player         = minetest.is_player
+
+
+
+
+local pi = math.pi
 
 -- simple degrees calculation
-capes.degrees = function(yaw)
-    return(yaw*180.0/capes.pi)
+local degrees = function(yaw)
+    return(yaw*180.0/pi)
 end
 
 -- built in engine trigonometry
-capes.pitch = function(pos,pos2)
+local pitch = function(pos,pos2)
     return(
-        capes.floor(
-            capes.degrees(
-                capes.dir_to_yaw(
-                    capes.new_vector(
-                        capes.distance(
-                            capes.new_vector(
+        math.floor(
+            degrees(
+                minetest.dir_to_yaw(
+                    vector.new(
+                        vector.distance(
+                            vector.new(
                                 pos.x,
                                 0,
                                 pos.z
                             ),
-                            capes.new_vector(
+                            vector.new(
                                 pos2.x,
                                 0,
                                 pos2.z
@@ -134,23 +117,23 @@ capes.pitch = function(pos,pos2)
                         pos.y - pos2.y
                     )
                 )
-                + capes.pi
+                + pi
             )
         )
     )
 end
 
 -- calculation to calculate the yaw of the old position
-capes.cape_yaw_calculation = function(pos,pos2)
+local cape_yaw_calculation = function(pos,pos2)
     return(
-        capes.dir_to_yaw(
-            capes.direction(
-                capes.new_vector(
+        minetest.dir_to_yaw(
+            vector.direction(
+                vector.new(
                     pos2.x,
                     0     ,
                     pos2.z
                 ),
-                capes.new_vector(
+                vector.new(
                     pos.x,
                     0    ,
                     pos.z
@@ -161,7 +144,7 @@ capes.cape_yaw_calculation = function(pos,pos2)
 end
 
 -- corrects degrees
-capes.yaw_correction = function(yaw)
+yaw_correction = function(yaw)
     if yaw < -180 then
         yaw = yaw + 360
     elseif yaw > 180 then
@@ -171,15 +154,16 @@ capes.yaw_correction = function(yaw)
 end
 
 -- returns if the cape can be "blown"
-capes.move_cape = function(yaw,yaw2)
-    capes.cape_yaw = capes.yaw_correction(capes.degrees(yaw-yaw2))
-    return(capes.cape_yaw >= -90 and capes.cape_yaw <= 90)
+local cape_yaw
+local move_cape = function(yaw,yaw2)
+    cape_yaw = yaw_correction(degrees(yaw-yaw2))
+    return(cape_yaw >= -90 and cape_yaw <= 90)
 end
 
 -- applies movement to the cape
-capes.cape_smoothing = function(object,current,cape_goal)
+local cape_smoothing = function(object,current,cape_goal)
     if current ~= cape_goal then
-        if capes.abs(current-cape_goal) <= 3 then --this stops jittering
+        if math.abs(current-cape_goal) <= 3 then --this stops jittering
             object:set_animation({x=cape_goal,y=cape_goal}, 0, 0, false)
         elseif current < cape_goal then
             object:set_animation({x=current+3,y=current+3}, 0, 0, false)
@@ -197,9 +181,7 @@ cape_object.initial_properties = {
     pointable = false,
     collisionbox = {0, 0, 0, 0, 0, 0}
 }
-
 cape_object.texture_set = false
-
 cape_object.on_activate = function(self)
     minetest.after(0,function()
          --don't waste any cpu
@@ -218,53 +200,52 @@ cape_object.on_activate = function(self)
     end)
 end
 
+local object
+local pos
+local current_animation
+local current_animation
+local cape_yaw
+local body_yaw
+local goal
 cape_object.on_step = function(self,dtime)
-    capes.object            = self.object
-    capes.pos               = capes.object:get_pos()
-    capes.old_pos           = self.old_pos
-    capes.current_animation = capes.object:get_animation() -- if fails assign other values to nil
-    capes.current_animation = capes.current_animation.x
-    capes.owner             = self.owner
-
-    if capes.is_player(capes.owner) and capes.old_pos then
+    object            = self.object
+    pos               = object:get_pos()
+    current_animation = object:get_animation() -- if fails assign other values to nil
+    current_animation = current_animation.x
+    goal              = nil
+    if minetest.is_player(self.owner) and self.old_pos then
         --do not allow cape to flutter if player is moving backwards
-        capes.cape_yaw = capes.cape_yaw_calculation(capes.pos,capes.old_pos)
-        capes.body_yaw = self.owner:get_look_horizontal()
+        cape_yaw = cape_yaw_calculation(pos,self.old_pos)
+        body_yaw = self.owner:get_look_horizontal()
         
-        if capes.move_cape(capes.cape_yaw,capes.body_yaw) then
-            capes.goal = capes.pitch(capes.pos,capes.old_pos)
+        if move_cape(cape_yaw,body_yaw) then
+            goal = pitch(pos,self.old_pos)
         else
-            capes.goal = 160
+            goal = 160
         end
 
-        capes.cape_smoothing(capes.object,capes.current_animation,capes.goal)
-    elseif not capes.is_player(capes.owner) then
-        self.object:remove()
+        cape_smoothing(object,current_animation,goal)
+    elseif not minetest.is_player(self.owner) then
+        object:remove()
     end
 
-    self.old_pos = capes.pos
+    self.old_pos = pos
 end
 
 minetest.register_entity("skins:cape",cape_object)
 
 
-local cape_handler         = {}
-local cape_table           = {} -- holds all cape objects
-cape_handler.object        = nil
-cape_handler.lua_entity    = nil
-cape_handler.name          = nil
-cape_handler.temp_cape     = nil
-cape_handler.pairs        = pairs
+local pool2 = {}
 
 
-cape_handler.custom    = {
+local custom    = {
     sfan5      = true,
     appguru    = true,
     tacotexmex = true,
     oilboi     = true,
     wuzzy      = true,
 }
-cape_handler.core_devs = {
+local core_devs = {
     celeron55  = true,
     nore       = true,
     nerzhul    = true,
@@ -276,7 +257,7 @@ cape_handler.core_devs = {
     thetermos  = true,
     krock      = true,
 }
-cape_handler.patrons   = {
+local patrons   = {
     tacotexmex = true,
     ufa        = true,
     monte48    = true,
@@ -284,61 +265,73 @@ cape_handler.patrons   = {
 
 
 -- simple check if has cape
-cape_handler.get_texture = function(player)
-    cape_handler.name = player:get_player_name()
-
-    --cape handling
-    cape_handler.name = string.lower(player:get_player_name())
-
-    cape_handler.temp_cape = nil
-
-    if cape_handler.custom[cape_handler.name] then
-        cape_handler.temp_cape = "cape_"..cape_handler.name..".png"
-    elseif cape_handler.core_devs[cape_handler.name] then
-        cape_handler.cape_handler.temp_cape = "cape_core.png"
-    elseif cape_handler.patrons[cape_handler.name] then
-        cape_handler.cape_handler.temp_cape = "cape_patron.png"
+local name
+local temp_cape
+local get_texture = function(player)
+    name = string.lower(player:get_player_name())
+
+    temp_cape = nil
+
+    if custom[name] then
+        temp_cape = "cape_"..name..".png"
+    elseif core_devs[name] then
+        temp_cape = "cape_core.png"
+    elseif patrons[name] then
+        temp_cape = "cape_patron.png"
     end
-    return(cape_handler.temp_cape)
+    return(temp_cape)
 end
 
 -- adds cape to player
-cape_handler.add_cape = function(player)
-    if cape_handler.get_texture(player) then
-        cape_handler.object = minetest.add_entity(player:get_pos(),"skins:cape")
-        cape_handler.lua_entity = cape_handler.object:get_luaentity()
-        cape_handler.lua_entity.owner = player
-        cape_handler.lua_entity.texture_type = cape_handler.temp_cape
-        cape_handler.object:set_attach(player, "Cape_bone", vector.new(0,0,0), vector.new(0,0,0))
-        cape_table[player:get_player_name()] = cape_handler.object
+local name
+local temp_pool
+local texture
+local object
+local lua_entity
+local add_cape = function(player)
+    if get_texture(player) then
+        texture = get_texture(player)
+        if texture then
+            name = player:get_player_name()
+            temp_pool = pool2[name]
+
+            object = minetest.add_entity(player:get_pos(),"skins:cape")
+
+            lua_entity = object:get_luaentity()
+
+            lua_entity.owner = player
+            lua_entity.texture_type = texture
+            object:set_attach(player, "Cape_bone", vector.new(0,0,0), vector.new(0,0,0))
+            pool2[name] = object
+        end
     end
 end
 
 -- looping check to see if cape deleted
-cape_handler.readd_capes = function()
-    for name,def in cape_handler.pairs(cape_table) do
-        cape_handler.player = minetest.get_player_by_name(name)
-        if cape_handler.player and cape_table[name] and not cape_table[name]:get_luaentity() then
-            cape_handler.add_cape(cape_handler.player)
-        elseif not cape_handler.player then
-            cape_table[name] = nil
+local player
+local function readd_capes()
+    for name,def in pairs(pool2) do
+        player = minetest.get_player_by_name(name)
+        if pool2[name] and not pool2[name]:get_luaentity() then
+            add_cape(player)
+        elseif not minetest.is_player(name) then
+            pool2[name] = nil
         end
     end
     minetest.after(3,function()
-        cape_handler.readd_capes()
+        readd_capes()
     end)
 end
 
 minetest.register_on_mods_loaded(function()
     minetest.after(3,function()
-        cape_handler.readd_capes()
+        readd_capes()
     end)
 end)
 
 
-local name
 minetest.register_on_joinplayer(function(player)
-    cape_handler.add_cape(player)
+    add_cape(player)
 
     minetest.after(0,function()
         fetch_function(player:get_player_name())