/** 识别一个表达式是否匹配本模板。如果匹配,返回一个新的表达式片段对象,否则返回null。 */ public IExpr recognize(QuestInfo qinfo, Expression expr) { if (expr.getLeftExpr().type == Expr0.TYPE_FUNC && expr.getLeftExpr().getFunctionCall().funcName.equals("Message") && expr.getRightExpr() == null) { FunctionCall fc = expr.getLeftExpr().getFunctionCall(); if (fc.getParamCount() != 3) { return null; } Expression param1 = fc.getParam(0); Expression param2 = fc.getParam(1); Expression param3 = fc.getParam(2); if (param1.getRightExpr() == null && param1.getLeftExpr().type == Expr0.TYPE_STRING && param2.getRightExpr() == null && param2.getLeftExpr().type == Expr0.TYPE_NUMBER && param3.getRightExpr() == null && param3.getLeftExpr().type == Expr0.TYPE_NUMBER) { A_Message ret = (A_Message) createNew(qinfo); ret.message = PQEUtils.translateStringConstant(param1.getLeftExpr().value); ret.timeout = PQEUtils.translateNumberConstant(param2.getLeftExpr().value); ret.notifyID = PQEUtils.translateNumberConstant(param3.getLeftExpr().value); return ret; } } return null; }
/** 识别一个表达式是否匹配本模板。如果匹配,返回一个新的表达式片段对象,否则返回null。 */ public IExpr recognize(QuestInfo qinfo, Expression expr) { if (expr.getLeftExpr().type == Expr0.TYPE_FUNC && expr.getLeftExpr().getFunctionCall().funcName.equals("AI_ChooseSingleFriend")) { if (expr.getLeftExpr().getFunctionCall().getParamCount() != 8) { return null; } Expression param1 = expr.getLeftExpr().getFunctionCall().getParam(0); Expression param2 = expr.getLeftExpr().getFunctionCall().getParam(1); Expression param3 = expr.getLeftExpr().getFunctionCall().getParam(2); Expression param4 = expr.getLeftExpr().getFunctionCall().getParam(3); Expression param5 = expr.getLeftExpr().getFunctionCall().getParam(4); Expression param6 = expr.getLeftExpr().getFunctionCall().getParam(5); Expression param7 = expr.getLeftExpr().getFunctionCall().getParam(6); Expression param8 = expr.getLeftExpr().getFunctionCall().getParam(7); if (param1.getRightExpr() == null && param1.getLeftExpr().type == Expr0.TYPE_NUMBER && param2.getRightExpr() == null && param2.getLeftExpr().type == Expr0.TYPE_NUMBER && param3.getRightExpr() == null && param3.getLeftExpr().type == Expr0.TYPE_NUMBER && param4.getRightExpr() == null && param4.getLeftExpr().type == Expr0.TYPE_NUMBER && param5.getRightExpr() == null && param5.getLeftExpr().type == Expr0.TYPE_NUMBER && param6.getRightExpr() == null && param6.getLeftExpr().type == Expr0.TYPE_NUMBER && param7.getRightExpr() == null && param7.getLeftExpr().type == Expr0.TYPE_NUMBER && param8.getRightExpr() == null && param8.getLeftExpr().type == Expr0.TYPE_NUMBER) { C_AI_ChooseSingleFriend ret = (C_AI_ChooseSingleFriend) createNew(qinfo); ret.minDist = PQEUtils.translateNumberConstant(param1.getLeftExpr().value); ret.maxDist = PQEUtils.translateNumberConstant(param2.getLeftExpr().value); ret.minHp = PQEUtils.translateNumberConstant(param3.getLeftExpr().value); ret.maxHp = PQEUtils.translateNumberConstant(param4.getLeftExpr().value); ret.minHpPer = PQEUtils.translateNumberConstant(param5.getLeftExpr().value); ret.maxHpPer = PQEUtils.translateNumberConstant(param6.getLeftExpr().value); ret.orderType = PQEUtils.translateNumberConstant(param7.getLeftExpr().value); ret.index = PQEUtils.translateNumberConstant(param8.getLeftExpr().value); if (expr.getRightExpr() == null) { return ret; } else if (expr.getRightExpr().type == Expr0.TYPE_IDENTIFIER && expr.getRightExpr().value.equals("false")) { ret.checkTrue = false; return ret; } } } return null; }
/** 取得生成的表达式。 */ public String getExpression() { return "Message(\"" + PQEUtils.reverseConv(message) + "\", " + timeout + ", " + notifyID + ")"; }