blockNumber: & UnaryOperators
This commit is contained in:
parent
74ec3e817a
commit
6011545f68
@ -3098,6 +3098,7 @@ statExprSplit : '=== statement ^ === expression v ===' ;
|
|||||||
expression
|
expression
|
||||||
: expression Arithmetic_List expression
|
: expression Arithmetic_List expression
|
||||||
| negate_e
|
| negate_e
|
||||||
|
| unaryOperation_e
|
||||||
| bool_e
|
| bool_e
|
||||||
| idFixedList_e
|
| idFixedList_e
|
||||||
| idFlag_e
|
| idFlag_e
|
||||||
@ -3106,6 +3107,7 @@ expression
|
|||||||
| idString_e
|
| idString_e
|
||||||
| enemyattr_e
|
| enemyattr_e
|
||||||
| blockId_e
|
| blockId_e
|
||||||
|
| blockNumber_e
|
||||||
| blockCls_e
|
| blockCls_e
|
||||||
| equip_e
|
| equip_e
|
||||||
| evalString_e
|
| evalString_e
|
||||||
@ -3115,7 +3117,9 @@ expression
|
|||||||
//todo 修改recieveOrder,根据Arithmetic_List_0不同的值设定不同的recieveOrder
|
//todo 修改recieveOrder,根据Arithmetic_List_0不同的值设定不同的recieveOrder
|
||||||
var code = expression_0 + Arithmetic_List_0 + expression_1;
|
var code = expression_0 + Arithmetic_List_0 + expression_1;
|
||||||
var ops = {
|
var ops = {
|
||||||
'**': 'Math.pow('+expression_0+','+expression_1+')'
|
'**': 'Math.pow('+expression_0+','+expression_1+')',
|
||||||
|
'min': 'Math.min('+expression_0+','+expression_1+')',
|
||||||
|
'max': 'Math.max('+expression_0+','+expression_1+')',
|
||||||
}
|
}
|
||||||
if (ops[Arithmetic_List_0])code = ops[Arithmetic_List_0];
|
if (ops[Arithmetic_List_0])code = ops[Arithmetic_List_0];
|
||||||
var orders = {
|
var orders = {
|
||||||
@ -3135,7 +3139,9 @@ var orders = {
|
|||||||
'<=': Blockly.JavaScript.ORDER_RELATIONAL,
|
'<=': Blockly.JavaScript.ORDER_RELATIONAL,
|
||||||
'&&': Blockly.JavaScript.ORDER_LOGICAL_AND,
|
'&&': Blockly.JavaScript.ORDER_LOGICAL_AND,
|
||||||
'||': Blockly.JavaScript.ORDER_LOGICAL_OR,
|
'||': Blockly.JavaScript.ORDER_LOGICAL_OR,
|
||||||
'^': Blockly.JavaScript.ORDER_BITWISE_XOR
|
'^': Blockly.JavaScript.ORDER_BITWISE_XOR,
|
||||||
|
'min': Blockly.JavaScript.ORDER_MEMBER, //recieveOrder : ORDER_COMMA
|
||||||
|
'max': Blockly.JavaScript.ORDER_MEMBER, //recieveOrder : ORDER_COMMA
|
||||||
}
|
}
|
||||||
return [code, orders[Arithmetic_List_0]];
|
return [code, orders[Arithmetic_List_0]];
|
||||||
*/;
|
*/;
|
||||||
@ -3150,6 +3156,16 @@ var code = '!'+expression_0;
|
|||||||
return [code, Blockly.JavaScript.ORDER_LOGICAL_NOT];
|
return [code, Blockly.JavaScript.ORDER_LOGICAL_NOT];
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
|
unaryOperation_e
|
||||||
|
: UnaryOperator_List expression
|
||||||
|
|
||||||
|
|
||||||
|
/* unaryOperation_e
|
||||||
|
var code = UnaryOperator_List_0 + expression_0;
|
||||||
|
return [code, Blockly.JavaScript.ORDER_MEMBER];
|
||||||
|
*/;
|
||||||
|
|
||||||
|
|
||||||
bool_e
|
bool_e
|
||||||
: ':' Bool
|
: ':' Bool
|
||||||
|
|
||||||
@ -3217,6 +3233,17 @@ return [code, Blockly.JavaScript.ORDER_ATOMIC];
|
|||||||
*/;
|
*/;
|
||||||
|
|
||||||
|
|
||||||
|
blockNumber_e
|
||||||
|
: '图块数字:' Int ',' Int
|
||||||
|
|
||||||
|
|
||||||
|
/* blockNumber_e
|
||||||
|
default : [0,0]
|
||||||
|
var code = 'blockNumber:'+Int_0+','+Int_1;
|
||||||
|
return [code, Blockly.JavaScript.ORDER_ATOMIC];
|
||||||
|
*/;
|
||||||
|
|
||||||
|
|
||||||
blockCls_e
|
blockCls_e
|
||||||
: '图块类别:' Int ',' Int
|
: '图块类别:' Int ',' Int
|
||||||
|
|
||||||
@ -3332,12 +3359,16 @@ ShopUse_List
|
|||||||
/*ShopUse_List ['money','exp']*/;
|
/*ShopUse_List ['money','exp']*/;
|
||||||
|
|
||||||
Arithmetic_List
|
Arithmetic_List
|
||||||
: '加'|'减'|'乘'|'除'|'取余'|'乘方'|'等于'|'不等于'|'大于'|'小于'|'大于等于'|'小于等于'|'且'|'或'|'异或'|'弱相等'|'弱不相等'
|
: '加'|'减'|'乘'|'除'|'取余'|'乘方'|'等于'|'不等于'|'大于'|'小于'|'大于等于'|'小于等于'|'且'|'或'|'异或'|'取较大'|'取较小'|'弱相等'|'弱不相等'
|
||||||
/*Arithmetic_List ['+','-','*','/','%','**','===','!==','>','<','>=','<=','&&','||','^','==','!=']*/;
|
/*Arithmetic_List ['+','-','*','/','%','**','===','!==','>','<','>=','<=','&&','||','^','max','min','==','!=']*/;
|
||||||
|
|
||||||
AssignOperator_List
|
AssignOperator_List
|
||||||
: '设为'|'增加'|'减少'|'乘以'|'除以'|'乘方'|'除以并取商'|'除以并取余'
|
: '设为'|'增加'|'减少'|'乘以'|'除以'|'乘方'|'除以并取商'|'除以并取余'|'设为不小于'|'设为不大于'
|
||||||
/*AssignOperator_List ['=','+=','-=','*=','/=','**=','//=','%=']*/;
|
/*AssignOperator_List ['=','+=','-=','*=','/=','**=','//=','%=','min=','max=']*/;
|
||||||
|
|
||||||
|
UnaryOperator_List
|
||||||
|
: '向下取整'|'向上取整'|'四舍五入'|'整数截断'|'绝对值'|'开方'
|
||||||
|
/*UnaryOperator_List ['Math.floor', 'Math.ceil', 'Math.round', 'Math.trunc', 'Math.abs', 'Math.sqrt']*/;
|
||||||
|
|
||||||
Weather_List
|
Weather_List
|
||||||
: '无'|'雨'|'雪'|'雾'|'云'
|
: '无'|'雨'|'雪'|'雾'|'云'
|
||||||
|
|||||||
@ -1098,6 +1098,12 @@ ActionParser.prototype.matchEvalAtom = function(args) {
|
|||||||
args=[match[1],match[2]]
|
args=[match[1],match[2]]
|
||||||
return rt(MotaActionBlocks['blockId_e'].xmlText, args);
|
return rt(MotaActionBlocks['blockId_e'].xmlText, args);
|
||||||
}
|
}
|
||||||
|
// 图块数字
|
||||||
|
match=/^blockNumber:(-?\d+),(-?\d+)$/.exec(args[0])
|
||||||
|
if(match){
|
||||||
|
args=[match[1],match[2]]
|
||||||
|
return rt(MotaActionBlocks['blockNumber_e'].xmlText, args);
|
||||||
|
}
|
||||||
// 图块类别
|
// 图块类别
|
||||||
match=/^blockCls:(-?\d+),(-?\d+)$/.exec(args[0])
|
match=/^blockCls:(-?\d+),(-?\d+)$/.exec(args[0])
|
||||||
if(match){
|
if(match){
|
||||||
@ -1412,7 +1418,7 @@ MotaActionFunctions.replaceToName = function (str) {
|
|||||||
return map[b] ? ("怪物:" + map[b]) : b;
|
return map[b] ? ("怪物:" + map[b]) : b;
|
||||||
}).replace(/enemy:/g, "怪物:");
|
}).replace(/enemy:/g, "怪物:");
|
||||||
|
|
||||||
str = str.replace(/blockId:/g, "图块ID:").replace(/blockCls:/g, "图块类别:").replace(/equip:/g, "装备孔:");
|
str = str.replace(/blockId:/g, "图块ID:").replace(/blockNumber:/g, "图块数字:").replace(/blockCls:/g, "图块类别:").replace(/equip:/g, "装备孔:");
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1450,7 +1456,7 @@ MotaActionFunctions.replaceFromName = function (str) {
|
|||||||
return map[c] ? ("enemy:" + b + ":" + map[c]) : c;
|
return map[c] ? ("enemy:" + b + ":" + map[c]) : c;
|
||||||
}).replace(/(enemy:[a-zA-Z0-9_]+)[::]/g, '$1:');
|
}).replace(/(enemy:[a-zA-Z0-9_]+)[::]/g, '$1:');
|
||||||
|
|
||||||
str = str.replace(/图块I[dD][::]/g, "blockId:").replace(/图块类别[::]/g, "blockCls:").replace(/装备孔[::]/g, "equip:");
|
str = str.replace(/图块I[dD][::]/g, "blockId:").replace(/图块数字[::]/g, "blockNumber:").replace(/图块类别[::]/g, "blockCls:").replace(/装备孔[::]/g, "equip:");
|
||||||
|
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -243,12 +243,14 @@ editor_blocklyconfig=(function(){
|
|||||||
MotaActionBlocks['idFlag_e'].xmlText(),
|
MotaActionBlocks['idFlag_e'].xmlText(),
|
||||||
MotaActionBlocks['idTemp_e'].xmlText(),
|
MotaActionBlocks['idTemp_e'].xmlText(),
|
||||||
MotaActionBlocks['negate_e'].xmlText(),
|
MotaActionBlocks['negate_e'].xmlText(),
|
||||||
|
MotaActionBlocks['unaryOperation_e'].xmlText(),
|
||||||
MotaActionBlocks['bool_e'].xmlText(),
|
MotaActionBlocks['bool_e'].xmlText(),
|
||||||
MotaActionBlocks['idString_e'].xmlText(),
|
MotaActionBlocks['idString_e'].xmlText(),
|
||||||
MotaActionBlocks['idIdList_e'].xmlText(),
|
MotaActionBlocks['idIdList_e'].xmlText(),
|
||||||
MotaActionBlocks['idFixedList_e'].xmlText(),
|
MotaActionBlocks['idFixedList_e'].xmlText(),
|
||||||
MotaActionBlocks['enemyattr_e'].xmlText(),
|
MotaActionBlocks['enemyattr_e'].xmlText(),
|
||||||
MotaActionBlocks['blockId_e'].xmlText(),
|
MotaActionBlocks['blockId_e'].xmlText(),
|
||||||
|
MotaActionBlocks['blockNumber_e'].xmlText(),
|
||||||
MotaActionBlocks['blockCls_e'].xmlText(),
|
MotaActionBlocks['blockCls_e'].xmlText(),
|
||||||
MotaActionBlocks['equip_e'].xmlText(),
|
MotaActionBlocks['equip_e'].xmlText(),
|
||||||
MotaActionBlocks['evalString_e'].xmlText(),
|
MotaActionBlocks['evalString_e'].xmlText(),
|
||||||
|
|||||||
@ -2599,6 +2599,8 @@ events.prototype.setValue = function (name, operator, value, prefix) {
|
|||||||
case '**=': value = Math.pow(originValue, value); break;
|
case '**=': value = Math.pow(originValue, value); break;
|
||||||
case '//=': value = Math.trunc(originValue / value); break;
|
case '//=': value = Math.trunc(originValue / value); break;
|
||||||
case '%=': value = originValue % value; break;
|
case '%=': value = originValue % value; break;
|
||||||
|
case 'min=': value = Math.min(originValue, value); break;
|
||||||
|
case 'max=': value = Math.max(originValue, value); break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
this._setValue_setStatus(name, value);
|
this._setValue_setStatus(name, value);
|
||||||
|
|||||||
@ -93,6 +93,8 @@ utils.prototype.replaceValue = function (value) {
|
|||||||
value = value.replace(/enemy:([a-zA-Z0-9_]+)[\.:]([a-zA-Z0-9_]+)/g, "core.material.enemys['$1'].$2");
|
value = value.replace(/enemy:([a-zA-Z0-9_]+)[\.:]([a-zA-Z0-9_]+)/g, "core.material.enemys['$1'].$2");
|
||||||
if (value.indexOf('blockId:')>=0)
|
if (value.indexOf('blockId:')>=0)
|
||||||
value = value.replace(/blockId:(\d+),(\d+)/g, "core.getBlockId($1, $2)");
|
value = value.replace(/blockId:(\d+),(\d+)/g, "core.getBlockId($1, $2)");
|
||||||
|
if (value.indexOf('blockNumber:')>=0)
|
||||||
|
value = value.replace(/blockNumber:(\d+),(\d+)/g, "core.getBlockNumber($1, $2)");
|
||||||
if (value.indexOf('blockCls:')>=0)
|
if (value.indexOf('blockCls:')>=0)
|
||||||
value = value.replace(/blockCls:(\d+),(\d+)/g, "core.getBlockCls($1, $2)");
|
value = value.replace(/blockCls:(\d+),(\d+)/g, "core.getBlockCls($1, $2)");
|
||||||
if (value.indexOf('equip:')>=0)
|
if (value.indexOf('equip:')>=0)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user