Skip to content

Commit

Permalink
Ficha Starfinder, RPGmeister and Pathfinder macro install update.
Browse files Browse the repository at this point in the history
  • Loading branch information
ViniciusDinizLima committed May 7, 2024
1 parent 3f2e10f commit fa4d70b
Show file tree
Hide file tree
Showing 23 changed files with 2,527 additions and 2,060 deletions.
46 changes: 25 additions & 21 deletions Plugins/Sheets/Ficha Pathfinder/addMacros.lua
Original file line number Diff line number Diff line change
Expand Up @@ -264,31 +264,35 @@ local function AddMacro(nome,code)
local macro = nil

-- TRY TO FIND IF MACRO ALREADY EXISTS
local macros = NDB.getChildNodes(node.global.macros)
for i=1, #macros, 1 do
if macros[i].macro == nome then
-- MACRO EXIST CHECK IF OLDER VERSION
local currentVersion = tonumber(macros[i].version) or 0
if version > currentVersion then
-- THIS IS A NEWER VERSION, INSTALL
macro = macros[i]
else
-- CANCEL MACRO UPDATE, OLDER VERSION
return
if node and node.global then
local macros = NDB.getChildNodes(node.global.macros)
for i=1, #macros, 1 do
if macros[i].macro == nome then
-- MACRO EXIST CHECK IF OLDER VERSION
local currentVersion = tonumber(macros[i].version) or 0
if version > currentVersion then
-- THIS IS A NEWER VERSION, INSTALL
macro = macros[i]
else
-- CANCEL MACRO UPDATE, OLDER VERSION
return
end
end
end
end

-- MACRO DOESN'T EXISTS, CREATE NEW
if macro == nil then
macro = NDB.createChildNode(node.global.macros, "item")
end
-- Cancel if failed to create node
if macro == nil then return end

-- MACRO DOESN'T EXISTS, CREATE NEW
if macro == nil then
macro = NDB.createChildNode(node.global.macros, "item")
-- ADD MACRO DETAILS
macro.tipoMacro = "L"
macro.macro = nome
macro.version = version
macro.acoes = code
end

-- ADD MACRO DETAILS
macro.tipoMacro = "L"
macro.macro = nome
macro.version = version
macro.acoes = code
end

promise:thenDo(
Expand Down
4 changes: 2 additions & 2 deletions Plugins/Sheets/Ficha Pathfinder/module.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<module sdkVersion="3.6e beta 3">
<module sdkVersion="3.7">
<id>FICHA_PATHFINDER</id>
<version>0.12</version>
<version>0.12.1</version>



Expand Down
Binary file modified Plugins/Sheets/Ficha Pathfinder/output/Ficha Pathfinder.rpk
Binary file not shown.
98 changes: 39 additions & 59 deletions Plugins/Sheets/Ficha Pathfinder/sdk/async.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
local System = require("system.lua");
local Log = require("log.lua");

local _ASYNC_EXEC_AWAIT_CO_RET = "_co:await";
Expand All @@ -16,7 +15,7 @@ local _asyncExecution = {idleCoroutines = {},
maxIdleCoroutines = 8};

function Async.haveNativeBackendSupport()
return System.checkAPIVersion(87, 3)
return true;
end;

--- Base Promise MetaTable
Expand Down Expand Up @@ -83,35 +82,15 @@ setmetatable(PromiseMetatable, BasePromiseMetatable);
PromiseMetatable.__index = PromiseMetatable;

function PromiseMetatable:peek()
if System.checkAPIVersion(87, 4) and (_async_promise_peek ~= nil) then
if _async_promise_peek ~= nil then
return _async_promise_peek(self.handle);
else
return false;
end;
end;

function PromiseMetatable:thenDo(successCallback, errorCallback)
local wrappedSuccessCallback = nil;
local wrappedErrorCallback = nil;

if System.checkAPIVersion(87, 4) then
wrappedSuccessCallback = successCallback;
wrappedErrorCallback = errorCallback;
else
if successCallback ~= nil then
wrappedSuccessCallback = function(...)
return Async.execute(successCallback, ...);
end;
end;

if errorCallback ~= nil then
wrappedErrorCallback = function(...)
return Async.execute(errorCallback, ...);
end;
end;
end;

local thenDoHandle = _async_promise_thenDo(self.handle, wrappedSuccessCallback, wrappedErrorCallback);
local thenDoHandle = _async_promise_thenDo(self.handle, successCallback, errorCallback);
return Promise.wrap(thenDoHandle);
end;

Expand Down Expand Up @@ -297,9 +276,11 @@ function _asyncExecution.entrypoint(mustExecute, fn, arguments, promiseResolutio
Log.w("Async.execute", tostring(ret[2]));
require("dialogs.lua").showErrorMessage(ret[2]);
end;

fn, arguments, promiseResolution, ret = nil, nil, nil, nil;

fn, arguments, promiseResolution = nil, nil, nil;
mustExecute, fn, arguments, promiseResolution = coroutine.yield(_ASYNC_EXEC_IDLE_COROUTINE_RET, fn and arguments and promiseResolution); -- fn, arguments and promiseResolution are used as parameter just to avoid rdk command line linter warning
-- fn, arguments, promiseResolution and ret are used below as parameter just to avoid rdk command line linter warning
mustExecute, fn, arguments, promiseResolution = coroutine.yield(_ASYNC_EXEC_IDLE_COROUTINE_RET, fn and arguments and promiseResolution and ret);
end;
end;

Expand Down Expand Up @@ -351,17 +332,12 @@ function Promise.withError(errorMsg)
end;

function Promise.toResolve()
if System.checkAPIVersion(87, 4) then
local promiseHandle, promiseResolutionHandle = _async_promise_newToResolve();

local promise = Promise.wrap(promiseHandle);
local promiseResolution = Promise.wrapPromiseResolution(promiseResolutionHandle);
local promiseHandle, promiseResolutionHandle = _async_promise_newToResolve();

return promise, promiseResolution;
else
local stubPromise = Promise.__newStubPendingPromise();
return stubPromise, stubPromise; -- the same stub object act as Promise and PromiseResolution at same time
end;
local promise = Promise.wrap(promiseHandle);
local promiseResolution = Promise.wrapPromiseResolution(promiseResolutionHandle);

return promise, promiseResolution;
end;

function Promise.toHandle(promise, successCallback, failureCallback)
Expand Down Expand Up @@ -409,30 +385,26 @@ function Promise.isPromise(value)
end;

function Promise.all(...)
if System.checkAPIVersion(87, 4) then
local normalized = {};
local argsTable = table.pack(...);
local normalized = {};
local argsTable = table.pack(...);

for i = 1, #argsTable, 1 do
local item = argsTable[i];

for i = 1, #argsTable, 1 do
local item = argsTable[i];

if Promise.isPromise(item) then
normalized[#normalized + 1] = item.handle;
else
for j = 1, #item, 1 do
local subItem = item[j];

if Promise.isPromise(subItem) then
normalized[#normalized + 1] = subItem.handle;
end;
if Promise.isPromise(item) then
normalized[#normalized + 1] = item.handle;
else
for j = 1, #item, 1 do
local subItem = item[j];

if Promise.isPromise(subItem) then
normalized[#normalized + 1] = subItem.handle;
end;
end;
end;

return Promise.wrap(_async_promise_newAll(normalized));
else
return Promise.withError("No API support");
end;

return Promise.wrap(_async_promise_newAll(normalized));
end;

-- Async library public API
Expand All @@ -449,8 +421,12 @@ function Async.await(promise)
local ret = table.pack(promise:peek());

if ret[1] then
if ret[2] then
return table.unpack(ret, 3);
if ret[2] then
if #ret >= 3 then
return table.unpack(ret, 3);
else
return nil;
end;
else
local traceMessage = ret[3] .. "\n" .. debug.traceback(coroutine.running(), nil, 2);
reraise(traceMessage);
Expand All @@ -460,7 +436,11 @@ function Async.await(promise)
ret = table.pack(coroutine.yield(_ASYNC_EXEC_AWAIT_CO_RET, promise));

if ret[1] then
return table.unpack(ret, 2);
if #ret >= 2 then
return table.unpack(ret, 2);
else
return nil;
end;
else
local traceMessage = ret[2] .. "\n" .. debug.traceback(coroutine.running(), nil, 2);
reraise(traceMessage);
Expand Down Expand Up @@ -501,6 +481,6 @@ Promise.succeeded = Promise.resolved;
Promise.resolve = Promise.resolved;
Promise.reject = Promise.withError;
await = Async.await;
pawait = await;
pawait = Async.pawait;

return Async
22 changes: 3 additions & 19 deletions Plugins/Sheets/Ficha Pathfinder/sdk/audioCore.dlua
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
local Async = require("async.lua");
local Objs = require("rrpgObjs.lua");
local System = require("system.lua");

local audioLib;

if System.checkAPIVersion(87, 4) then
audioLib = Objs.objectFromHandle(_obj_newObject("TRRPGAudioLibWrapper"));
else
audioLib = Objs.newPureLuaObject();
end;

local audioLib = Objs.objectFromHandle(_obj_newObject("TRRPGAudioLibWrapper"));
assert(audioLib ~= nil);

if audioLib.props == nil then
Expand Down Expand Up @@ -171,10 +163,6 @@ end;
-- AudioLib public API

function audioLib.asyncLoadAudioStream(source)
if not System.checkAPIVersion(87, 4) then
return Async.Promise.failed("No API Support");
end;

local loadPromise = Async.Promise.wrap(_obj_invokeEx(audioLib.handle, 'AsyncLoadStreamReader', source));

return loadPromise:thenDo(
Expand All @@ -187,12 +175,8 @@ function audioLib:getDefaultPlayer()
local cachedPlayer = rawget(audioLib, "__cachedDefaultAudioPlayer");

if cachedPlayer == nil then
if System.checkAPIVersion(87, 4) then
local handle = _obj_invokeEx(self.handle, 'CreateGlobalAudioPlayer');
cachedPlayer = audioLib._audioPlayerWrapperFromHandle(handle);
else
cachedPlayer = audioLib._newNullAudioPlayerWrapper();
end;
local handle = _obj_invokeEx(self.handle, 'CreateGlobalAudioPlayer');
cachedPlayer = audioLib._audioPlayerWrapperFromHandle(handle);

assert(cachedPlayer ~= nil);
rawset(audioLib, "__cachedDefaultAudioPlayer", cachedPlayer);
Expand Down
22 changes: 22 additions & 0 deletions Plugins/Sheets/Ficha Pathfinder/sdk/internetCore.dlua
Original file line number Diff line number Diff line change
@@ -1,11 +1,33 @@
local objs = require("rrpgObjs.lua");
local utils = require("rrpgUtil.lua");
local Async = require("async.lua");

local lInternet = {};
local _downloadIdGenerator = 1;
local _downloads = {};
local internet = lInternet;

function internet.asyncDownload(url, cacheMode, progressCallback)
local promise, resolution = Async.Promise.pending();
assert((promise ~= nil) and (resolution ~= nil));

internet.download(url,
function (stream, contentType)
assert(resolution ~= nil);
assert(stream ~= nil);

resolution:setSuccess(stream, contentType);
end,
function (errorMessage)
assert(resolution ~= nil);
resolution:setFailure(errorMessage);
end,
progressCallback,
cacheMode);

return promise;
end;

function internet.download(url, finishCallback, errorCallback, progressCallback, cacheMode)
local urlGetter = objs.objectFromHandle(_obj_newObject("TLuaURLGetter"));

Expand Down
45 changes: 44 additions & 1 deletion Plugins/Sheets/Ficha Pathfinder/sdk/localeCore.dlua
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
local Locale = {};
local Objs = require("rrpgObjs.lua");
local Locale = {};

function Locale.lang(txtId)
return _system_locale_lang(txtId);
Expand Down Expand Up @@ -53,4 +54,46 @@ function Locale.autoEval(...)
return _system_locale_autoEval(...);
end;

function Locale.__createNullLocalizedTexts()
local nullTxts = {};

function nullTxts:lang(textId)
error("No API Support");
end;

function nullTxts:tryLang(textId)
return nil;
end;

function nullTxts:loadTexts(langTexts)
end;

function nullTxts:addText(localeId, textId, text)
end;

return nullTxts;
end;

function Locale.newLocalizedTexts()
local txts = Objs.objectFromHandle(_obj_newObject("TLuaLocalizedTexts"));

function txts:addText(localeId, textId, text)
return _obj_invokeEx(self.handle, "AddText", localeId, textId, text);
end;

function txts:lang(textId)
return _obj_invokeEx(self.handle, "Lang", textId);
end;

function txts:loadTexts(langTexts)
return _obj_invokeEx(self.handle, "LoadTexts", langTexts);
end;

function txts:tryLang(textId)
return _obj_invokeEx(self.handle, "TryLang", textId);
end;

return txts;
end;

return Locale;
Loading

0 comments on commit fa4d70b

Please sign in to comment.