|
if not Platform.ged then return end |
|
|
|
function OnMsg.Autorun() |
|
local cmd_line = GetAppCmdLine() |
|
if cmd_line == "" then return end |
|
|
|
local ged_param = string.match(cmd_line, "-ged=(%w+)") |
|
if not ged_param then |
|
return |
|
end |
|
|
|
local ged_id = tonumber(ged_param) |
|
if ged_id then |
|
config.ged_id = ged_id |
|
else |
|
config.ged_template = ged_param |
|
end |
|
|
|
local default_port = 44000 |
|
local game_address = string.match(cmd_line, "-address=(%S+)") |
|
|
|
if game_address then |
|
local ip, port = string.match(game_address, "(%S+):(%d+)") |
|
if not ip then |
|
ip = game_address |
|
end |
|
game_address = ip .. ":" .. (port or default_port) |
|
else |
|
game_address = "localhost:" .. default_port |
|
end |
|
|
|
config.game_address = game_address |
|
|
|
local cmd_params = GetAppCmdParams() |
|
local src = "" |
|
for _, item in ipairs(cmd_params) do |
|
if not item:match("^-") then |
|
src = src .. " " .. item |
|
end |
|
end |
|
|
|
local func, err = load(src) |
|
if not func then |
|
print("Error:", err) |
|
else |
|
CreateRealTimeThread(function () |
|
local err = func() |
|
if err then |
|
print("Error:", err) |
|
end |
|
end) |
|
end |
|
end |
|
|
|
if FirstLoad then |
|
g_GameSocket = false |
|
end |
|
|
|
function OnMsg.Start() |
|
MountPack("memoryfs", "", "compress,create", 32*1024*1024) |
|
|
|
if config.ged_id then |
|
CreateRealTimeThread(function() |
|
g_GameSocket = GedSocket:new() |
|
local host, port = string.match(config.game_address, "^([^:]+):?(.*)$" ) |
|
local err = g_GameSocket:WaitConnect(30000, host or "localhost", tonumber(port)) |
|
if err then |
|
g_GameSocket:delete() |
|
else |
|
g_GameSocket:Send("rfnGedId", config.ged_id) |
|
end |
|
end) |
|
elseif config.ged_template then |
|
local app = XTemplateSpawn(config.ged_template, nil, {}) |
|
if not app then |
|
print("Invalid ged app") |
|
return nil |
|
end |
|
if IsKindOf(app, "GedApp") then |
|
if app.AppId == "" then |
|
app:SetAppId(config.ged_template) |
|
end |
|
if app:GetTitle() == "" then |
|
app:SetTitle(config.ged_template) |
|
end |
|
end |
|
app:Open() |
|
end |
|
end |
|
|
|
function GedCreateXBugReportDlg(summary, descr, files, params) |
|
local endUserVersion = not not Platform.goldmaster |
|
if Platform.steam and endUserVersion then |
|
local steam_beta, steam_branch = g_GedApp:Call("GedGetSteamBetaName") |
|
endUserVersion = not steam_beta or steam_branch == "" |
|
end |
|
|
|
local minimalVersion = not insideHG() and endUserVersion |
|
|
|
params = params or {} |
|
params.no_priority = not insideHG() |
|
params.no_platform_tags = not insideHG() |
|
params.force_save_check = "save as extra_info" |
|
|
|
if minimalVersion then |
|
table.set(params, "no_platform_tags", true) |
|
table.set(params, "no_game_tags", true) |
|
table.set(params, "no_header_combos", true) |
|
table.set(params, "no_attach_auto_save", true) |
|
table.set(params, "no_api_token",true) |
|
end |
|
|
|
local mod = g_GedApp:Call("GedGetLastEditedMod") |
|
local modRelated = g_GedApp:Call("GedAreModdingToolsActive") |
|
|
|
table.set(params, "mod", mod) |
|
table.set(params, "mod_related", modRelated) |
|
|
|
return CreateXBugReportDlg(summary, descr, files, params) |
|
end |