00003 不思议迷宫.0009.7:一键采矿(钻石、金蛋等)

来源:互联网 发布:抓娃娃机 知乎 编辑:程序博客网 时间:2024/04/29 01:44

00003 不思议迷宫.0009.7:一键采矿(钻石、金蛋等)

         矿有很多种,今天要说的是其中的钻石矿这种,也是就神龙许愿“我想要钻石”后进到夹层中,地上显示的那些需要点击99次(初次999次)的钻石矿。为了那么一点钻石,一顿狂点,手机屏幕不怕,那手也累啊,自动化它。

         有游戏源码中,这种矿不叫“矿”,而是“矿山”。UIGrid中创建矿山的代码:

-- 创建矿山

function UIGrid:initMineHill()

    local mineId = self.gridData.mine_id;

    local pos = self.gridData:getPos();

 

    local function onClicked(sender, eventType)

        if eventType == ccui.TouchEventType.began then

            --不能采矿

            if not MineHillM.canMining(pos) then

                return;

            end

 

            --更新建筑访问

            self:updateBuildingVisit();

 

            local mineId = self.gridData.mine_id;

            if MineHillM.query(mineId, "type") == MINE_TYPE_EGG then

                --金蛋

                if not self.gridData:canHit() then

                    alert(getLocStr("cannot_reach"));

                    return;

                end

            elseif #MineHillM.findEmptyPos() <= 0 then

                --如果没有空位了

                alert(getLocStr("no_pos_for_mine"));

                return;

            end

 

            --采矿

            DungeonActionM.go("mining_diamond", pos);

            EventMgr.fire(event.PLAYER_MOVE, pos);

        end

    end

 

    -- 建筑图标

    local iconPath = getLevelItemIconPath(MineHillM.query(mineId, "icon"));

 

         self:myShowContent(iconPath);

    self.icon = ccui.ImageView:create(iconPath);

    self.icon:setTouchEnabled(true);

    self.icon:addTouchEventListener(onClicked);

    self.item:addChild(self.icon);

    self.iconPath = iconPath;

 

    -- 剩余次数

    self:redrawMineHillLeftTimes();

 

    if MineHillM.query(mineId, "type") == MINE_TYPE_EGG then

        -- 金蛋先隐藏

        self.icon:setVisible(false);

        self.barNode:setVisible(false);

    end

end

         onClicked这个回调函数没有被保存,那我们就自己存一下。然后在UIDungeonMain构造中进行调用。

         首先判断地牢中是否存在矿上,如果存在,就创建“自动采矿”按钮,设置其点击回调:

         local function tiewen_hasMineHill()

                  for i=1,#self.grids do

                          local g = self.grids[i];

                          if g.tiewen_pickMineHillClick ~= nil then return true; end

                  end

                  return false;

         end

         local function tiewen_isUnminedMineHill(grid)

                  if grid.tiewen_pickMineHillClick == nil then return false; end

                  if not MineHillM.canMining(grid.index) then

                          return false;

                  end

 

                  local mineId = grid.gridData.mine_id;

                  if MineHillM.query(mineId, "type") == MINE_TYPE_EGG then

                          if not grid.gridData:canHit() then return false; end

                  elseif #MineHillM.findEmptyPos() <= 0 then return false; end

                  return true;

         end

         local function tiewen_hasUnminedMineHill()

                  for i=1,#self.grids do

                          local g = self.grids[i];

                          if tiewen_isUnminedMineHill(g) and g.icon:isVisible() then return true; end

                  end

                  return false;

         end

         local function tiewen_autoMiningMineHill()

                  for i=1,#self.grids do

                          local g = self.grids[i];

                          if tiewen_isUnminedMineHill(g) and g.icon:isVisible() then

                                   g.tiewen_pickMineHillClick(nil, ccui.TouchEventType.began);

                          end

                  end

         end

         local function onMyButton_autoMiningMineHill(sender, eventType)

                  if eventType ~= ccui.TouchEventType.ended then return; end

                  local o = {};

                  o.timer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function ()

                          if tiewen_hasUnminedMineHill() then

                                   tiewen_autoMiningMineHill()

                          else

                                   cc.Director:getInstance():getScheduler():unscheduleScriptEntry(o.timer);

                          end

               end, 0.05, false);

         end

 

         local ammh = nil;

         if tiewen_hasMineHill() then

                  ammh = TieWen_UI.createButton(self, "自动采矿", onMyButton_autoMiningMineHill);

         end

         如有需要,可进群161355323下载补丁或安装程序。

0 0
原创粉丝点击