@@ -875,6 +875,7 @@ class CommandControl {
875875
876876class BasicInfoBuilder {
877877
878+ /** @type {boolean } */
878879 static get getIsTargetMZ ( ) { return EL_TARGET ?. checked || false }
879880 static get getAuthor ( ) { return Fnc . getIfNotEmpty ( EL_AUTHOR ?. value ) }
880881 static get getURL ( ) { return Fnc . getIfNotEmpty ( EL_URL ?. value ) }
@@ -1050,7 +1051,7 @@ class CommandBuilder {
10501051 static buildBlockParams ( block ) {
10511052 return [ ...block . getElementsByClassName ( "command_parameter_group" ) ]
10521053 . map ( ParameterBuilder . buildSingleParam )
1053- . map ( res => res . replaceAll ( "@param " , "@arg " ) )
1054+ . map ( res => res ? .replaceAll ( "@param " , "@arg " ) )
10541055 . join ( "" )
10551056 }
10561057
@@ -1061,12 +1062,21 @@ class CommandBuilder {
10611062 . join ( ", " )
10621063 }
10631064
1064- static buildBlockCode ( id , name , paramsName ) {
1065- const body = EDITOR_COMMANDS . get ( `id_${ id } _command_editor` ) ?. getValue ( ) || ""
1065+ static buildBlockCode ( id , name , paramsName , isMZ ) {
1066+ const body = EDITOR_COMMANDS . get ( `id_${ id } _command_editor` ) ?. getValue ( ) . replaceAll ( "\r\n" , "\r\n " ) || ""
10661067
1067- return ` PluginManager.registerCommand(FILENAME, "${ name } ", function ({ ${ paramsName } }){
1068- ${ body . replaceAll ( "\r\n" , "\r\n " ) }
1069- })`
1068+ const mz = isMZ
1069+ ? ` PluginManager.registerCommand(FILENAME, "${ name } ", function (${ paramsName . length > 0 ? `{ ${ paramsName } }` : "" } ){
1070+ ${ body }
1071+ })`
1072+ : false
1073+
1074+ const mv = `
1075+ if(cmd === "${ name } ") {${ paramsName . length > 0 ? `\n var [${ paramsName } ] = args` : "" }
1076+ ${ body }
1077+ }`
1078+
1079+ return { mz, mv }
10701080 }
10711081
10721082 /**
@@ -1081,9 +1091,10 @@ class CommandBuilder {
10811091
10821092 /**
10831093 * @param {HTMLElement } block
1084- * @returns {{note: string, code: string} }
1094+ * @param {boolean } isMZ
1095+ * @returns {{note: string, code: false, cmdMZ: string, cmdMV: string } }}
10851096 */
1086- static buildSingleCommand ( block ) {
1097+ static buildSingleCommand ( block , isMZ ) {
10871098 const name = CommandBuilder . getCommandName ( block )
10881099 if ( ! name ) return false
10891100
@@ -1093,7 +1104,7 @@ class CommandBuilder {
10931104 const params = CommandBuilder . buildBlockParams ( block )
10941105
10951106 const paramsName = CommandBuilder . getAllParamsName ( block ) // params.map(p => p.name).join(", ")
1096- const code = CommandBuilder . buildBlockCode ( block . dataset . id , name , paramsName )
1107+ const { mv , mz } = CommandBuilder . buildBlockCode ( block . dataset . id , name , paramsName , isMZ )
10971108
10981109 return {
10991110 note : "\n * "
@@ -1108,7 +1119,9 @@ class CommandBuilder {
11081119
11091120 return `\n * @${ n } ${ v } `
11101121 } ) . join ( "" ) ,
1111- code
1122+ code : false ,
1123+ cmdMV : mv ,
1124+ cmdMZ : mz ,
11121125 }
11131126 }
11141127
@@ -1130,27 +1143,46 @@ class CommandBuilder {
11301143 }
11311144
11321145 /**
1133- * @param { HTMLElement } block
1146+ * @type { (isMZ: boolean) => (block: HTMLElement) => { note: string; code: string | false; cmdMZ: ?string; cmdMV: ?string } | false }
11341147 */
1135- static buildSingleBlock ( block ) {
1136- switch ( block . dataset . type ) {
1137- case "command" : return CommandBuilder . buildSingleCommand ( block )
1138- case "code" : return CommandBuilder . buildSingleCode ( block )
1139-
1140- default : return false
1148+ static buildSingleBlock ( isMZ ) {
1149+ return block => {
1150+ switch ( block . dataset . type ) {
1151+ case "command" : return CommandBuilder . buildSingleCommand ( block , isMZ )
1152+ case "code" : return CommandBuilder . buildSingleCode ( block )
1153+
1154+ default : return false
1155+ }
11411156 }
11421157 }
11431158
1159+ /** @returns {[string, string, string, string,] } */
11441160 static build ( ) {
1145- return [ ...document . querySelectorAll ( "#root_command > div.command.block[data-type]" ) ]
1146- . map ( CommandBuilder . buildSingleBlock )
1161+ const isMZ = BasicInfoBuilder . getIsTargetMZ
1162+
1163+ let list = [ ...document . querySelectorAll ( "#root_command > div.command.block[data-type]" ) ]
1164+ . map ( CommandBuilder . buildSingleBlock ( isMZ ) )
11471165 . reduce ( ( all , cur ) => {
11481166 if ( ! cur ) return all
11491167
11501168 all [ 0 ] += cur . note
1151- all [ 1 ] += cur . code + "\n\n"
1169+ if ( cur . code ) all [ 1 ] += cur . code + "\n\n"
1170+
1171+ if ( cur . cmdMZ ) all [ 2 ] += cur . cmdMZ + "\n\n"
1172+ if ( ! cur . cmdMV ) return all
1173+
1174+ all [ 3 ] += all [ 3 ] === ""
1175+ ? ` const pluginCommand = Game_Interpreter.prototype.pluginCommand
1176+ Game_Interpreter.prototype.pluginCommand = function (cmd, args) {
1177+ ${ cur . cmdMV } `
1178+ : "\n\n " + cur . cmdMV
1179+
11521180 return all
1153- } , [ "" , "" ] )
1181+ } , [ "" , "" , "" , "" ] )
1182+
1183+ if ( list [ 3 ] !== "" ) list [ 3 ] += "\n\n return pluginCommand.apply(this, arguments)\n }"
1184+
1185+ return list
11541186 }
11551187}
11561188
@@ -1185,19 +1217,24 @@ class Builder {
11851217 }
11861218
11871219 static build ( ) {
1188- const [ commandsNote , commandsCode ] = CommandBuilder . build ( )
1220+ const basicNote = BasicInfoBuilder . build ( )
11891221 const parameterNote = ParameterBuilder . build ( )
1222+ const [ commandsNote , commandsCode , commandMZ , commandMV ] = CommandBuilder . build ( )
11901223
11911224 const isHadCode = commandsCode . length > 0
11921225 const isHadParam = parameterNote . length > 0
1226+ const isHadMZCommand = commandMZ . length > 0
1227+ const isHadMVCommand = commandMV . length > 0
11931228
11941229 const code =
11951230 ( isHadCode || isHadParam ? `\n const FILENAME = document.currentScript.src.split("/").pop().replace(".js", "")` : "" )
11961231 + ( isHadParam ? "\n const PARAMETERS = PluginManager.parameters(FILENAME)" : "" )
11971232 + ( isHadCode ? `\n\n${ commandsCode } ` : "" )
1233+ + ( isHadMVCommand ? `\n\n if (Utils.RPGMAKER_NAME === "MV") {\n${ commandMV } \n }` : "" )
1234+ + ( isHadMZCommand ? `\n\n if (Utils.RPGMAKER_NAME === "MZ") {\n${ commandMZ } }` : "" )
11981235
11991236 const note = [
1200- BasicInfoBuilder . build ( ) ,
1237+ basicNote ,
12011238 parameterNote ,
12021239 commandsNote ,
12031240 ]
0 commit comments