main.lua 2.3 KB

cc.FileUtils:getInstance():setPopupNotify(false)
cc.FileUtils:getInstance():addSearchPath("src/")
cc.FileUtils:getInstance():addSearchPath("res/")

local engine_loaded = {};
for i,v in pairs(package.loaded) do
    engine_loaded[i] = v;
end

require "config";
require "cocos.init";
require "cocos.cocos2d.json";
require "core.utils.util";

__G__TRACKBACK__ = function(msg)
    local traceback = debug.traceback(msg, 3);
    print(traceback);
    logUI(traceback);
    return traceback;
end 

local function main()
    require "app.info.ConfigInfo";
    DEBUG = tonumber(ConfigInfo.getConfigInfo("debug"));
    CHANNEL = ConfigInfo.getConfigInfo("channel");
    IS_TV = tonumber(ConfigInfo.getConfigInfo("is_tv"));

    require "core.log.init";

    cc.Director:getInstance():setAnimationInterval(1/30);

    require("app.MyApp"):create();
    app:enterMiniGameScene("cake.LoadingScene");
end

function reloadGame()
    for k,_ in pairs(package.loaded) do
        local has_k = false;
        for i,v in pairs(engine_loaded) do
            if k == i then
                has_k = true;
            end
        end
        if not has_k then
            print("remove:"..k);
            package.loaded[k] = nil;
        end
    end
    
    cc.Director:getInstance():purgeCachedData();
    cc.FileUtils:getInstance():purgeCachedEntries();
    
    require("main");
end

function loadGame(game_name)
    local searchPaths = cc.FileUtils:getInstance():getSearchPaths();
    local resPath = cc.FileUtils:getInstance():getWritablePath().."GameUpdate/"..game_name.."/";
    searchPaths = {};
    table.insert(searchPaths,1,resPath);
    table.insert(searchPaths,2,resPath .. 'res/');
    table.insert(searchPaths,3,resPath .. 'src/');
    cc.FileUtils:getInstance():setSearchPaths(searchPaths);

    for k,_ in pairs(package.loaded) do
        local has_k = false;
        for i,v in pairs(engine_loaded) do
            if k == i then
                has_k = true;
            end
        end
        if not has_k then
            print("remove:"..k);
            package.loaded[k] = nil;
        end
    end
    
    cc.FileUtils:getInstance():purgeCachedEntries();
    cc.Director:getInstance():purgeCachedData();

    app:enterScene("LoadingScene",{nextSceneName="main"});
end

local status, msg = xpcall(main, __G__TRACKBACK__)
if not status then
    print(msg)
end