Skip to content
Snippets Groups Projects
Commit ac22af9a authored by dg's avatar dg
Browse files

azd

git-svn-id: http://svn.net-core.org/repos/t-engine4@1461 51575b47-30f0-44d4-a5cc-537603b46e54
parent 7859253c
No related branches found
No related tags found
No related merge requests found
......@@ -295,7 +295,6 @@ function _M:onResolutionChange()
self.change_res_dialog = require("engine.ui.Dialog"):yesnoPopup("Resolution changed", "Accept the new resolution?", function(ret)
if ret then
if not self.creating_player then self:saveGame() end
print("====",self.creating_player)
util.showMainMenu(false, nil, nil, self.__mod_info.short_name, self.save_name, false)
else
self.change_res_dialog = "revert"
......
......@@ -445,13 +445,14 @@ function _M:createProfile(loginItem)
end
function _M:installNewEngine()
if not self.latest_engine_version then return end
print("te4.org told us latest engine is", self.latest_engine_version[4], self.latest_engine_version[5], self.latest_engine_version[1], self.latest_engine_version[2], self.latest_engine_version[3])
if engine.version_check(self.latest_engine_version) == "newer" then
local url = ("http://te4.org/dl/engines/%s_%d:%d.%d.%d.teae"):format(self.latest_engine_version[4], self.latest_engine_version[5], self.latest_engine_version[1], self.latest_engine_version[2], self.latest_engine_version[3])
local d = DownloadDialog.new(("Downloading: T-Engine 4 %d.%d.%d"):format(self.latest_engine_version[1], self.latest_engine_version[2], self.latest_engine_version[3]), url, function(di, data)
local eversion = self.latest_engine_version
if not eversion then return end
print("te4.org told us latest engine is", eversion[4], eversion[5], eversion[1], eversion[2], eversion[3])
if engine.version_check(eversion) == "newer" then
local url = ("http://te4.org/dl/engines/%s_%d:%d.%d.%d.teae"):format(eversion[4], eversion[5], eversion[1], eversion[2], eversion[3])
local d = DownloadDialog.new(("Downloading: T-Engine 4 %d.%d.%d"):format(eversion[1], eversion[2], eversion[3]), url, function(di, data)
fs.mkdir("/engines")
local f = fs.open(("/engines/%s-%d_%d.%d.%d.teae"):format(self.latest_engine_version[4], self.latest_engine_version[5], self.latest_engine_version[1], self.latest_engine_version[2], self.latest_engine_version[3]), "w")
local f = fs.open(("/engines/%s-%d_%d.%d.%d.teae"):format(eversion[4], eversion[5], eversion[1], eversion[2], eversion[3]), "w")
for i, v in ipairs(data) do f:write(v) end
f:close()
......
......@@ -21,94 +21,97 @@
local homepath = fs.getUserPath()..fs.getPathSeparator()..fs.getHomePath()..fs.getPathSeparator().."4.0"
fs.mount(homepath, "/")
-- Look for the required engine and load it
local args = {...}
local req_engine = args[1] or "te4"
local req_version = args[2] or "LATEST"
__load_module = args[3] or "boot"
__player_name = args[4] or "player"
__player_new = args[5] and true or false
local load load = function(...)
-- Look for the required engine and load it
local args = {...}
local req_engine = args[1] or "te4"
local req_version = args[2] or "LATEST"
__load_module = args[3] or "boot"
__player_name = args[4] or "player"
__player_new = args[5] and true or false
print("Reboot using", req_engine, req_version, __load_module, __player_name, __player_new)
print("Reboot using", req_engine, req_version, __load_module, __player_name, __player_new)
local engines = {}
local engines = {}
local function tryLoadEngine(ff, dir, teae)
local env = {engine={}}
setfenv(ff, env)
pcall(ff)
if env.engine.version and env.engine.require_c_core == core.game.VERSION then
print("[ENGINE LOADER] available from "..(dir and "dir" or "teae")..": ", env.engine.version[4], env.engine.version[1], env.engine.version[2], env.engine.version[3])
local function tryLoadEngine(ff, dir, teae)
local env = {engine={}}
setfenv(ff, env)
pcall(ff)
if env.engine.version and env.engine.require_c_core == core.game.VERSION then
print("[ENGINE LOADER] available from "..(dir and "dir" or "teae")..": ", env.engine.version[4], env.engine.version[1], env.engine.version[2], env.engine.version[3])
local name = env.engine.version[4]
engines[name] = engines[name] or {}
engines[name][#engines[name]+1] = {env.engine.version[1], env.engine.version[2], env.engine.version[3], name, load_dir=dir, load_teae=teae}
local name = env.engine.version[4]
engines[name] = engines[name] or {}
engines[name][#engines[name]+1] = {env.engine.version[1], env.engine.version[2], env.engine.version[3], name, load_dir=dir, load_teae=teae}
end
end
end
-- List all available engines
for i, f in ipairs(fs.list("/engines/")) do
if fs.exists("/engines/"..f.."/engine/version.lua") then
local ff, err = loadfile("/engines/"..f.."/engine/version.lua")
if ff and not err then tryLoadEngine(ff, "/engines/"..f.."/", nil) end
else
local _, _, name, cv, vM, vm, vp = f:find("^([a-z0-9-]+)%-(%d+)_(%d+)%.(%d+)%.(%d+).teae$")
if name then
local eng_path = fs.getRealPath("/engines/"..f)
fs.mount(eng_path, "/tmp")
local ff, err = loadfile("/tmp/engine/version.lua")
if ff and not err then tryLoadEngine(ff, nil, "/engines/"..f) end
fs.umount(eng_path)
-- List all available engines
for i, f in ipairs(fs.list("/engines/")) do
if fs.exists("/engines/"..f.."/engine/version.lua") then
local ff, err = loadfile("/engines/"..f.."/engine/version.lua")
if ff and not err then tryLoadEngine(ff, "/engines/"..f.."/", nil) end
else
local _, _, name, cv, vM, vm, vp = f:find("^([a-z0-9-]+)%-(%d+)_(%d+)%.(%d+)%.(%d+).teae$")
if name then
local eng_path = fs.getRealPath("/engines/"..f)
fs.mount(eng_path, "/tmp")
local ff, err = loadfile("/tmp/engine/version.lua")
if ff and not err then tryLoadEngine(ff, nil, "/engines/"..f) end
fs.umount(eng_path)
end
end
end
end
local use_engine = nil
if req_version == "LATEST" then
-- Sort engines
local engs = engines[req_engine]
if not engs then print("[ENGINE LOADER] no engines with id", req_engine) os.exit() end
table.sort(engs, function(a, b)
if a[1] ~= b[1] then return a[1] < b[1]
else
if a[2] ~= b[2] then return a[2] < b[2]
local use_engine = nil
if req_version == "LATEST" then
-- Sort engines
local engs = engines[req_engine]
if not engs then print("[ENGINE LOADER] no engines with id", req_engine) os.exit() end
table.sort(engs, function(a, b)
if a[1] ~= b[1] then return a[1] < b[1]
else
return a[3] < b[3]
if a[2] ~= b[2] then return a[2] < b[2]
else
return a[3] < b[3]
end
end
end
end)
end)
for i, v in ipairs(engs) do
print("[ENGINE LOADER] sorted:", req_engine, v[1], v[2], v[3])
end
-- Use the latest one
use_engine = engs[#engs]
else
-- Look for the required engine
local _, _, name, vM, vm, vp = (req_engine.."-"..req_version):find("([a-z0-9-]+)%-(%d+)%.(%d+)%.(%d+)")
if name then
if engines[name] then
for i, eng in ipairs(engines[name]) do
if eng[1] == tonumber(vM) and eng[2] == tonumber(vm) and eng[3] == tonumber(vp) then
use_engine = eng
break
for i, v in ipairs(engs) do
print("[ENGINE LOADER] sorted:", req_engine, v[1], v[2], v[3])
end
-- Use the latest one
use_engine = engs[#engs]
else
-- Look for the required engine
local _, _, name, vM, vm, vp = (req_engine.."-"..req_version):find("([a-z0-9-]+)%-(%d+)%.(%d+)%.(%d+)")
if name then
if engines[name] then
for i, eng in ipairs(engines[name]) do
if eng[1] == tonumber(vM) and eng[2] == tonumber(vm) and eng[3] == tonumber(vp) then
use_engine = eng
break
end
end
end
end
end
end
if not use_engine then print("[ENGINE LOADER] no engines found! abording!") os.exit() end
print("[ENGINE LOADER] loading engine:", use_engine[1], use_engine[2], use_engine[3], use_engine[4])
if not use_engine then print("[ENGINE LOADER] no engines found! rebooting to default!") return load() end
print("[ENGINE LOADER] loading engine:", use_engine[1], use_engine[2], use_engine[3], use_engine[4])
-- Now load it, either from a directory or from a teae(T-Engine Archived Engine) file
if use_engine.load_teae then
print("[ENGINE LOADER] using archived engine:", use_engine.load_teae)
fs.mount(fs.getRealPath(use_engine.load_teae), "/")
elseif use_engine.load_dir then
print("[ENGINE LOADER] using directory engine:", use_engine.load_dir)
fs.mount(fs.getRealPath(use_engine.load_dir), "/")
-- Now load it, either from a directory or from a teae(T-Engine Archived Engine) file
if use_engine.load_teae then
print("[ENGINE LOADER] using archived engine:", use_engine.load_teae)
fs.mount(fs.getRealPath(use_engine.load_teae), "/")
elseif use_engine.load_dir then
print("[ENGINE LOADER] using directory engine:", use_engine.load_dir)
fs.mount(fs.getRealPath(use_engine.load_dir), "/")
end
end
load(...)
fs.umount(homepath)
......
......@@ -23,7 +23,7 @@ short_name = "tome"
author = { "DarkGod", "darkgod@te4.org" }
homepage = "http://tome.te4.org/"
version = {3,9,13}
engine = {0,9,13}
engine = {0,9,12}
description = [[
Morgoth is banned to the Void. Sauron has been vanquished, the #ff0000#One Ring#ffffff# destroyed.
The nations of Men, Dwarves, Elves and Hobbits are freed from the tyranny of the Rings.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment