ItemManager.lua 2.75 KB
cc.exports.ItemManager=class("ItemManager")

ItemManager.lock_pok = false;
local queuePopList = {};
local isPopping = false;
local runningScene = nil;

local lastPopTime = 0;

local function showPopItem()
    if not isPopping then
        if #queuePopList > 0 then
            isPopping = true;
            
            local obj = queuePopList[1];
            table.remove(queuePopList,1);
            
            local PopItem = cc.CSLoader:createNode("ui/PopItem.csb");
            local rect = PopItem:getBoundingBox();
            PopItem:setPosition(cc.p(display.width/2-rect.width/2,display.height/2-rect.height/2));
            
            local icon = PopItem:getChildByName("icon");
            icon:loadTexture("res/iconsmall/"..obj.id..".png");
            local item_amount = PopItem:getChildByName("item_amount");
            local itemInfo = ItemInfo.getItemInfo(obj.id);
            item_amount:setString(itemInfo.name.."* "..obj.num);
        
            runningScene:addChild(PopItem,dialog.ZORDER_POP+1);
        
            local function fadeOutBack()
                PopItem:removeSelf();

                if not isPopping then
	                showPopItem();
	            end
            end
        
            local fadeOut = cc.FadeOut:create(1);
            local moveBy = cc.MoveBy:create(1, cc.p(0, 200));
            PopItem:runAction(moveBy);
            PopItem:runAction(cc.Sequence:create(fadeOut,cc.CallFunc:create(fadeOutBack)));

            local function nextPopFun()
            	isPopping = false;
                showPopItem();
            end
        
            runningScene:runAction(cc.Sequence:create(cc.DelayTime:create(0.3),cc.CallFunc:create(nextPopFun)));
        end
    end
end

function ItemManager.addPopItem(ID,num)
    if ID == 100004 or ItemManager.lock_pok then
        return;
    end

    local obj = {id=ID,num=num};
    if runningScene ~= cc.Director:getInstance():getRunningScene() then
        queuePopList = {};
        runningScene = cc.Director:getInstance():getRunningScene();
    end
    queuePopList[#queuePopList+1] = obj;

    if ID == 100001 then
        ccs.ArmatureDataManager:getInstance():addArmatureFileInfo(string.format("res/effects/%s/%s.ExportJson","gold","gold"))
        local effect = ccs.Armature:create("gold");
        effect:getAnimation():play("gold");
        runningScene:addChild(effect,dialog.ZORDER_POP);
        effect:setPosition(cc.p(display.width/2,display.height/2));
        effect:getAnimation():setMovementEventCallFunc(function(arm, eventType, movmentID)
                if (eventType == ccs.MovementEventType.complete or eventType == ccs.MovementEventType.loopComplete) then
                    arm:removeSelf();
                end
            end)
    end
    
    showPopItem();
end

return ItemManager