wonder.js
Version:
68 lines (63 loc) • 5.39 kB
JavaScript
'use strict';
var Most = require("most");
var Curry = require("bs-platform/lib/js/curry.js");
var ArrayService$Wonderjs = require("../../../../service/atom/ArrayService.js");
var OptionService$Wonderjs = require("../../../../service/atom/OptionService.js");
var MessageService$Wonderjs = require("../../../../service/primitive/worker/MessageService.js");
var AssetIMGUIAPI$WonderImgui = require("wonder-imgui/lib/js/src/api/AssetIMGUIAPI.js");
var ManageIMGUIAPI$WonderImgui = require("wonder-imgui/lib/js/src/api/ManageIMGUIAPI.js");
var SkinAllIMGUIService$Wonderjs = require("../../../../service/record/all/imgui/SkinAllIMGUIService.js");
var AllDeviceManagerService$Wonderjs = require("../../../../service/record/all/device/AllDeviceManagerService.js");
var StateRenderWorkerService$Wonderjs = require("../../../../service/state/render_worker/state/StateRenderWorkerService.js");
var CustomControlAllIMGUIService$Wonderjs = require("../../../../service/record/all/imgui/CustomControlAllIMGUIService.js");
var ExtendIMGUIRenderWorkerService$Wonderjs = require("../../../../service/state/render_worker/imgui/ExtendIMGUIRenderWorkerService.js");
var ImageBitmapRenderWorkerService$Wonderjs = require("../../../../service/state/render_worker/texture/ImageBitmapRenderWorkerService.js");
var RecordIMGUIRenderWorkerService$Wonderjs = require("../../../../service/state/render_worker/imgui/RecordIMGUIRenderWorkerService.js");
function _getFlipY(state) {
return false;
}
function execJob(param, e, stateData) {
var data = MessageService$Wonderjs.getRecord(e);
var imguiData = data.imguiData;
var match = OptionService$Wonderjs.isJsonSerializedValueNone(imguiData.fntData) || OptionService$Wonderjs.isJsonSerializedValueNone(imguiData.bitmapImageData);
if (match) {
return Most.just(e);
} else {
var state = StateRenderWorkerService$Wonderjs.unsafeGetState(stateData);
var extendData = imguiData.extendData;
var customControlData = extendData.customControlData;
var funcMap = Curry._1(ExtendIMGUIRenderWorkerService$Wonderjs.ExtendData[/* CustomControl */0][/* deserializeFuncMap */1], customControlData.funcMap);
var skinData = extendData.skinData;
var allSkinDataMap = Curry._1(ExtendIMGUIRenderWorkerService$Wonderjs.ExtendData[/* Skin */1][/* deserializeAllSkinDataMap */1], skinData.allSkinDataMap);
return Most.map((function (param) {
return e;
}), Most.fromPromise(ImageBitmapRenderWorkerService$Wonderjs.createImageBitmapFromImageData(OptionService$Wonderjs.unsafeGetJsonSerializedValue(imguiData.bitmapImageData), _getFlipY, state).then((function (imageBitmap) {
var state = StateRenderWorkerService$Wonderjs.unsafeGetState(stateData);
var imguiRecord = AssetIMGUIAPI$WonderImgui.setFntData(JSON.parse(OptionService$Wonderjs.unsafeGetJsonSerializedValue(imguiData.fntData)), AssetIMGUIAPI$WonderImgui.setBitmap(imageBitmap, RecordIMGUIRenderWorkerService$Wonderjs.getRecord(state)));
state[/* imguiRecord */29] = imguiRecord;
return Promise.resolve(StateRenderWorkerService$Wonderjs.setState(stateData, state));
}))).concat(Most.fromPromise(Most.reduce((function (customImageArr, imageData) {
return ArrayService$Wonderjs.push(imageData, customImageArr);
}), /* array */[], Most.mergeArray(imguiData.customTextureSourceDataArr.map((function (param) {
var imageType = param[2];
var id = param[1];
return Most.fromPromise(ImageBitmapRenderWorkerService$Wonderjs.createImageBitmapFromImageData(param[0], _getFlipY, state).then((function (imageBitmap) {
return Promise.resolve(/* tuple */[
imageBitmap,
id,
imageType
]);
})));
})))).then((function (customImageArr) {
var state = StateRenderWorkerService$Wonderjs.unsafeGetState(stateData);
state[/* imguiRecord */29] = SkinAllIMGUIService$Wonderjs.mergeAllSkinDataMapsToWonderImguiIMGUIRecord(allSkinDataMap, CustomControlAllIMGUIService$Wonderjs.registerAllCustomControlsToWonderImguiIMGUIRecord(funcMap, ManageIMGUIAPI$WonderImgui.init(AllDeviceManagerService$Wonderjs.unsafeGetGl(state[/* deviceManagerRecord */4]), /* tuple */[
imguiData.canvasWidth,
imguiData.canvasHeight
], AssetIMGUIAPI$WonderImgui.setCustomImageArr(customImageArr, state[/* imguiRecord */29]))));
return Promise.resolve(StateRenderWorkerService$Wonderjs.setState(stateData, state));
})))));
}
}
exports._getFlipY = _getFlipY;
exports.execJob = execJob;
/* most Not a pure module */