From 0621769ae48b373bfb22aff4c7332d64f20eba93 Mon Sep 17 00:00:00 2001 From: KL0-JS Date: Tue, 29 Mar 2022 20:48:46 +0530 Subject: [PATCH] repacing ${varName}$ in custom modals too making it so u can get global variables and playername ith the $varname$ and %PLAYER_NAME% just like dialogue --- src/gameClasses/ClientNetworkEvents.js | 2 +- .../components/script/ActionComponent.js | 11 +++++++- .../components/ui/PlayerUiComponent.js | 27 ++++++++++++++++--- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/gameClasses/ClientNetworkEvents.js b/src/gameClasses/ClientNetworkEvents.js index d1403c1a..e1607be7 100644 --- a/src/gameClasses/ClientNetworkEvents.js +++ b/src/gameClasses/ClientNetworkEvents.js @@ -256,7 +256,7 @@ var ClientNetworkEvents = { break; case 'showCustomModal': - ige.playerUi.showCustomModal(data); + ige.playerUi.showCustomModal(data, data.extraData); break; case 'openWebsite': diff --git a/src/gameClasses/components/script/ActionComponent.js b/src/gameClasses/components/script/ActionComponent.js index d5e373bd..44d3eb6b 100644 --- a/src/gameClasses/components/script/ActionComponent.js +++ b/src/gameClasses/components/script/ActionComponent.js @@ -516,13 +516,22 @@ var ActionComponent = IgeEntity.extend({ var player = ige.variable.getValue(action.player, vars); var htmlContent = ige.variable.getValue(action.htmlContent, vars) || ''; var modalTitle = ige.variable.getValue(action.title, vars) || ''; + var primitiveVariables = ige.variable.getAllVariables([ + 'string', + 'number', + 'boolean' + ]) if (player && player._stats && player._stats.clientId) { ige.network.send('ui', { command: 'showCustomModal', title: modalTitle, content: htmlContent, - isDismissible: true + isDismissible: true, + extraData: { + playerName: player._stats && player._stats.name, + variables: primitiveVariables + } }, player._stats.clientId); } break; diff --git a/src/gameClasses/components/ui/PlayerUiComponent.js b/src/gameClasses/components/ui/PlayerUiComponent.js index ca61a84e..a8059a23 100644 --- a/src/gameClasses/components/ui/PlayerUiComponent.js +++ b/src/gameClasses/components/ui/PlayerUiComponent.js @@ -157,11 +157,32 @@ var PlayerUiComponent = IgeEntity.extend({ }, // open a modal with custom content rendered in it - showCustomModal: function (config) { + showCustomModal: function (config, extraData) { var self = this; - + console.log(config, extraData) config.isDismissible = config.isDismissible === undefined ? true : !!(config.isDismissible); - + + var playerName = extraData && extraData.playerName; + + if (config.content.indexOf('%PLAYER_NAME%') > -1 && playerName) { + config.content = config.content.replace(/%PLAYER_NAME%/g, playerName); + }; + + var variables = config.content.match(new RegExp('\\$.+?\\$', 'g')); + + if (variables && variables.length) { + variables.forEach((variable) => { + var variableName = variable.split('$')[1]; + + if (extraData.variables.hasOwnProperty(variableName)) { + var variableValue = extraData.variables[variableName]; + + config.content = config.content.replace(new RegExp(`\\$${variableName}\\$`, 'g'), variableValue); + } + }); + } + console.log(config, extraData) + $('#custom-modal .content').html(config.content || ''); if (config.title) {