From d9dec875752a070660f4b762577a3d1f7a098afd Mon Sep 17 00:00:00 2001 From: tacigar Date: Sun, 18 Sep 2016 09:04:18 +0900 Subject: [PATCH] [DELETE] Delete modules/ --- modules/_aux.lua | 92 --------------- modules/farming_module.lua | 209 ---------------------------------- modules/lumberjack_module.lua | 192 ------------------------------- 3 files changed, 493 deletions(-) delete mode 100644 modules/_aux.lua delete mode 100644 modules/farming_module.lua delete mode 100644 modules/lumberjack_module.lua diff --git a/modules/_aux.lua b/modules/_aux.lua deleted file mode 100644 index df6cfb4..0000000 --- a/modules/_aux.lua +++ /dev/null @@ -1,92 +0,0 @@ ------------------------------------------------------------- --- Copyright (c) 2016 tacigar --- https://github.com/tacigar/maidroid ------------------------------------------------------------- - -maidroid.modules._aux = {} - -local velocity = 3 - --- change direction to destination and velocity vector -function maidroid.modules._aux.change_dir_to(self, dest) - local pos = self.object:getpos() - local dir = vector.subtract(dest, pos) - local vel = vector.multiply(vector.normalize(dir), velocity) - self.object:setvelocity(vel) - self.object:setyaw(math.atan2(vel.z, vel.x) + math.pi / 2) -end - --- change direction and velocity vector -function maidroid.modules._aux.change_dir(self) - local rnd = function() return math.random(0, 5) * 2 - 5 end - local dir = {x = rnd(), y = 0, z = rnd()} - local vel = vector.multiply(vector.normalize(dir), velocity) - self.object:setvelocity(vel) - self.object:setyaw(math.atan2(vel.z, vel.x) + math.pi / 2) -end - --- get direction vector by yaw -function maidroid.modules._aux.get_forward(yaw) - return { x = math.sin(yaw), y = 0.0, z = -math.cos(yaw) } -end - --- round direction vector -function maidroid.modules._aux.get_round_forward(forward) - local rforward = { x = 0, y = 0, z = 0} - if math.abs((forward.x / (math.abs(forward.x) + math.abs(forward.z)))) > 0.5 then - if forward.x > 0 then rforward.x = 1 - else rforward.x = -1 end - end - if math.abs((forward.z / (math.abs(forward.x) + math.abs(forward.z)))) > 0.5 then - if forward.z > 0 then rforward.z = 1 - else rforward.z = -1 end - end - return rforward -end - - -function maidroid.modules._aux.get_under_pos(vec) - return { x = vec.x, y = vec.y - 1, z = vec.z } -end - - -function maidroid.modules._aux.get_upper_pos(vec) - return { x = vec.x, y = vec.y + 1, z = vec.z } -end - --- pickup droped items -function maidroid.modules._aux.pickup_item(self, radius, target_pred) - local pos = self.object:getpos() - local pred = target_pred or (function(itemstring) return true end) - local all_objects = minetest.get_objects_inside_radius(pos, radius) - for _, obj in ipairs(all_objects) do - if not obj:is_player() and obj:get_luaentity() then - local itemstring = obj:get_luaentity().itemstring - if itemstring then - if pred(itemstring) then - local inv = maidroid._aux.get_maidroid_inventory(self) - local stack = ItemStack(itemstring) - local leftover = inv:add_item("main", stack) - minetest.add_item(obj:getpos(), leftover) - obj:get_luaentity().itemstring = "" - obj:remove() - end - end - end - end -end - --- search surrounding nodes -function maidroid.modules._aux.search_surrounding(self, lenvec, pred) - local pos = vector.round(self.object:getpos()) - for xi = -lenvec.x, lenvec.x do - for yi = -lenvec.y, lenvec.y do - for zi = -lenvec.z, lenvec.z do - local p = {x = pos.x + xi, y = pos.y + yi, z = pos.z + zi} - local node = minetest.get_node(p) - if pred(self, p, node) then return true, p, node end - end - end - end - return false, nil, nil -end diff --git a/modules/farming_module.lua b/modules/farming_module.lua deleted file mode 100644 index c5261d6..0000000 --- a/modules/farming_module.lua +++ /dev/null @@ -1,209 +0,0 @@ ------------------------------------------------------------- --- Copyright (c) 2016 tacigar --- https://github.com/tacigar/maidroid ------------------------------------------------------------- - -local _aux = maidroid.modules._aux - -local state = { - walk = 0, - punch = 1, - plant = 2, - walk_to_plant = 3, - walk_to_soil = 4, - walk_avoid = 5, -} -local max_punch_time = 20 -local max_plant_time = 15 -local max_avoid_time = 15 -local search_lenvec = {x = 3, y = 0, z = 3} - - --- find max size of each plants -local target_plants_list = {} -minetest.after(0, function() - local max = {} - for name, node in pairs(minetest.registered_nodes) do - if minetest.get_item_group(name, "plant") > 0 then - local s, i = string.match(name, "(.+)_(%d+)") - if (s and i) and (max[s] == nil or max[s] < i) then max[s] = i end - end - end - for s, i in pairs(max) do - table.insert(target_plants_list, s.."_"..i) - end -end) - - --- check the maidroid has seed items -local function has_seed_item(self) - local inv = maidroid._aux.get_maidroid_inventory(self) - local stacks = inv:get_list("main") - for _, stack in ipairs(stacks) do - local item_name = stack:get_name() - if minetest.get_item_group(item_name, "seed") > 0 then - return true - end - end - return false -end - - --- check can plant plants. -local function can_plant(self, pos) - local node = minetest.get_node(pos) - local upos = _aux.get_under_pos(pos) - local unode = minetest.get_node(upos) - return node.name == "air" - and minetest.get_item_group(unode.name, "wet") > 0 - and has_seed_item(self) -end - - --- check can punch plant -local function can_punch(self, pos) - local node = minetest.get_node(pos) - return maidroid.util.table_find_value(target_plants_list, node.name) -end - - --- change state to walk -local function to_walk(self) - self.state = state.walk - self.destination = nil - self.object:set_animation(maidroid.animations.walk, 15, 0) - self.time_count = 0 - _aux.change_dir(self) -end - - -local function to_walk_avoid(self) - to_walk(self) - self.state = state.walk_avoid -end - - -maidroid.register_module("maidroid:farming_module", { - description = "Maidroid Module : Farming", - inventory_image = "maidroid_farming_module.png", - - initialize = function(self) - self.object:set_animation(maidroid.animations.walk, 15, 0) - self.object:setacceleration{x = 0, y = -10, z = 0} - self.state = state.walk - self.preposition = self.object:getpos() - self.time_count = 0 - self.destination = nil -- for walk_to_* - _aux.change_dir(self) - end, - - finalize = function(self) - self.state = nil - self.preposition = nil - self.time_count = nil - self.destination = nil - self.object:setvelocity{x = 0, y = 0, z = 0} - end, - - on_step = function(self, dtime) - local pos = self.object:getpos() - local rpos = vector.round(pos) - local upos = _aux.get_under_pos(pos) - local yaw = self.object:getyaw() - - _aux.pickup_item(self, 1.5, function(itemstring) -- pickup droped seed items - return minetest.get_item_group(itemstring, "seed") > 0 - end) - if self.state == state.walk then -- searching plants or spaces - local b1, dest1 = _aux.search_surrounding(self, search_lenvec, can_plant) - local b2, dest2 = _aux.search_surrounding(self, search_lenvec, can_punch) - -- search soil node near - if b1 then -- to soil - self.state = state.walk_to_soil - self.destination = dest1 - _aux.change_dir_to(self, dest1) - elseif b2 then - self.state = state.walk_to_plant - self.destination = dest2 - _aux.change_dir_to(self, dest2) - elseif pos.x == self.preposition.x or pos.z == self.preposition.z then - _aux.change_dir(self) - end - - elseif self.state == state.punch then - if self.time_count >= max_punch_time then - if can_punch(self, self.destination) then - local destnode = minetest.get_node(self.destination) - minetest.remove_node(self.destination) - local inv = minetest.get_inventory{type = "detached", name = self.invname} - local stacks = minetest.get_node_drops(destnode.name) - for _, stack in ipairs(stacks) do - local leftover = inv:add_item("main", stack) - minetest.add_item(self.destination, leftover) - end - end - to_walk(self) - else - self.time_count = self.time_count + 1 - end - - elseif self.state == state.plant then - if self.time_count >= max_plant_time then - if can_plant(self, self.destination) then - local inv = minetest.get_inventory{type = "detached", name = self.invname} - local stacks = inv:get_list("main") - for idx, stack in ipairs(stacks) do - local item_name = stack:get_name() - if minetest.get_item_group(item_name, "seed") > 0 then - minetest.add_node(self.destination, {name = item_name, param2 = 1}) - stack:take_item(1) - inv:set_stack("main", idx, stack) - break - end - end - end - to_walk(self) - else - self.time_count = self.time_count + 1 - end - - elseif self.state == state.walk_to_soil then - if vector.distance(pos, self.destination) < 1.5 then -- to plant state - local destnode = minetest.get_node(self.destination) - if (can_plant(self, self.destination)) then - self.state = state.plant - self.object:set_animation(maidroid.animations.mine, 15, 0) - self.object:setvelocity{x = 0, y = 0, z = 0} - else to_walk(self) end - else - if pos.x == self.preposition.x or pos.z == self.preposition.z then - to_walk_avoid(self) - end - end - - elseif self.state == state.walk_to_plant then - if vector.distance(pos, self.destination) < 1.5 then - local destnode = minetest.get_node(self.destination) - if maidroid.util.table_find_value(target_plants_list, destnode.name) then - self.state = state.punch - self.object:set_animation(maidroid.animations.mine, 15, 0) - self.object:setvelocity{x = 0, y = 0, z = 0} - else to_walk(self) end - else - if pos.x == self.preposition.x or pos.z == self.preposition.z then - to_walk_avoid(self) - end - end - - elseif self.state == state.walk_avoid then - if self.time_count > max_avoid_time then - self.state = state.walk - self.time_count = 0 - else - self.time_count = self.time_count + 1 - end - end - self.preposition = pos - return - end -}) diff --git a/modules/lumberjack_module.lua b/modules/lumberjack_module.lua deleted file mode 100644 index c496ccc..0000000 --- a/modules/lumberjack_module.lua +++ /dev/null @@ -1,192 +0,0 @@ ------------------------------------------------------------- --- Copyright (c) 2016 tacigar --- https://github.com/tacigar/maidroid ------------------------------------------------------------- - -local util = maidroid.util -local _aux = maidroid.modules._aux - -local state = { - walk = 0, - plant = 1, - punch = 2, - walk_to_tree = 3, - walk_avoid = 4, -} -local find_lenvec = {x = 3, y = 0, z = 3} -local plant_lenvec = {x = 2, y = 0, z = 2} -local max_punch_time = 20 -local max_plant_time = 20 -local max_avoid_time = 15 -local target_tree_list = { "default:tree" } -local target_sapling_list = { "default:sapling" } - --- check the maidroid need to start to punch -local function check_punch_flag(forward_pos) - local forward_upper_pos = util.table_shallow_copy(forward_pos) - while true do - local forward_upper_node = minetest.get_node(forward_upper_pos) - if util.table_find_value(target_tree_list, forward_upper_node.name) then - return true, forward_upper_pos, forward_upper_node - elseif forward_upper_node.name ~= "air" then break end - forward_upper_pos.y = forward_upper_pos.y + 1 - end - return false, nil, nil -end - --- check the maidroid has sapling items -local function has_sapling_item(self) - local inv = maidroid._aux.get_maidroid_inventory(self) - local stacks = inv:get_list("main") - for _, stack in ipairs(stacks) do - local item_name = stack:get_name() - if util.table_find_value(target_sapling_list, item_name) then - return true - end - end - return false -end - -maidroid.register_module("maidroid:lumberjack_module", { - description = "Maidroid Module : Lumberjack", - inventory_image = "maidroid_lumberjack_module.png", - - initialize = function(self) - self.state = state.walk - self.time_count = 0 - self.object:setacceleration{x = 0, y = -10, z = 0} - self.object:set_animation(maidroid.animations.walk, 15, 0) - self.preposition = self.object:getpos() - self.destination = nil - _aux.change_dir(self) - end, - - finalize = function(self) - self.state = nil - self.time_count = nil - self.preposition = nil - self.object:setvelocity{x = 0, y = 0, z = 0} - self.destination = nil - end, - - on_step = function(self, dtime) - local pos = self.object:getpos() - local rpos = vector.round(pos) - local yaw = self.object:getyaw() - local forward = _aux.get_forward(yaw) - local rforward = _aux.get_round_forward(forward) - local forward_pos = vector.add(rpos, rforward) - local forward_node = minetest.get_node(forward_pos) - local forward_under_pos = _aux.get_under_pos(forward_pos) - local forward_under_node = minetest.get_node(forward_under_pos) - - if self.state == state.walk then - local b, dest = _aux.search_surrounding(self, find_lenvec, function(self, pos, node) - return util.table_find_value(target_tree_list, node.name) - end) - if b then -- walk to tree - self.state = state.walk_to_tree - self.destination = dest - _aux.change_dir_to(self, dest) - -- to plant sapling - elseif forward_node.name == "air" - and minetest.get_item_group(forward_under_node.name, "soil") > 0 - and not _aux.search_surrounding(self, plant_lenvec, function(self, pos, node) -- no tree around - return util.table_find_value(target_tree_list, node.name) - or util.table_find_value(target_sapling_list, node.name) - end) - and has_sapling_item(self) then - self.state = state.plant - self.object:set_animation(maidroid.animations.mine, 15, 0) - self.object:setvelocity{x = 0, y = 0, z = 0} - -- else continue to walk - else - if pos.x == self.preposition.x or pos.z == self.preposition.z then - _aux.change_dir(self) - end - end - -- pickup sapling items - _aux.pickup_item(self, 1.5, function(itemstring) - return util.table_find_value(target_sapling_list, itemstring) - end) - - elseif self.state == state.punch then - if self.time_count >= max_punch_time then - local punch_flag, forward_upper_pos, forward_upper_node = check_punch_flag(self.destination) - if punch_flag then - minetest.remove_node(forward_upper_pos) - local inv = minetest.get_inventory{type = "detached", name = self.invname} - local stacks = minetest.get_node_drops(forward_upper_node.name) - for _, stack in ipairs(stacks) do - local leftover = inv:add_item("main", stack) - minetest.add_item(forward_pos, leftover) - end - end - if (not forward_upper_pos) or (forward_upper_pos and - not check_punch_flag(_aux.get_upper_pos(forward_upper_pos))) then - self.state = state.walk - self.object:set_animation(maidroid.animations.walk, 15, 0) - _aux.change_dir(self) - end - self.time_count = 0 - else - self.time_count = self.time_count + 1 - end - - elseif self.state == state.plant then - if self.time_count > max_plant_time then - if forward_node.name == "air" - and minetest.get_item_group(forward_under_node.name, "soil") > 0 then - local inv = minetest.get_inventory{type = "detached", name = self.invname} - local stacks = inv:get_list("main") - for i, stack in ipairs(stacks) do - local itemname = stack:get_name() - if util.table_find_value(target_sapling_list, itemname) then - minetest.add_node(forward_pos, {name = itemname, param2 = 1}) - stack:take_item(1) - inv:set_stack("main", i, stack) - break - end - end - end - self.state = state.walk - self.object:set_animation(maidroid.animations.walk, 15, 0) - self.time_count = 0 - _aux.change_dir(self) - else - self.time_count = self.time_count + 1 - end - - elseif self.state == state.walk_to_tree then - if vector.distance(pos, self.destination) < 1.5 then -- to punch state - local destnode = minetest.get_node(self.destination) - if (util.table_find_value(target_tree_list, destnode.name)) then - self.state = state.punch - self.object:set_animation(maidroid.animations.mine, 15, 0) - self.object:setvelocity{x = 0, y = 0, z = 0} - else - self.state = state.walk - self.object:set_animation(maidroid.animations.walk, 15, 0) - self.time_count = 0 - _aux.change_dir(self) - end - else - if pos.x == self.preposition.x or pos.z == self.preposition.z then - self.state = state.walk_avoid - self.object:set_animation(maidroid.animations.walk, 15, 0) - self.time_count = 0 - _aux.change_dir(self) - end - end - - elseif self.state == state.walk_avoid then - if self.time_count > max_avoid_time then - self.state = state.walk - self.time_count = 0 - else - self.time_count = self.time_count + 1 - end - end - self.preposition = pos - end - })