using System; using Game; using NsQT; using Qoo.Application; using Qoo.Game; namespace Qoo.Script { // Token: 0x02000095 RID: 149 internal class AmCalc : CQPocketK3 { // Token: 0x06000442 RID: 1090 RVA: 0x0000F29C File Offset: 0x0000D49C public override void Init() { base.Init(); } // Token: 0x06000443 RID: 1091 RVA: 0x0000F2A4 File Offset: 0x0000D4A4 public virtual bool ExecCmdStr(string szCmdExp, ref int pnResult) { CQK3Node cqk3Node = new CQK3Node(); bool flag = base.ExecCalc(szCmdExp, ref cqk3Node); if (flag && cqk3Node.GetNodeType() == QK3_NODETYPE.INT) { pnResult = cqk3Node.GetInt(); } else { pnResult = -1; } return flag; } // Token: 0x06000444 RID: 1092 RVA: 0x0000F2E4 File Offset: 0x0000D4E4 protected override bool Error(QK3_ERROR nErrNo) { return base.Error(nErrNo); } // Token: 0x06000445 RID: 1093 RVA: 0x0000F2F0 File Offset: 0x0000D4F0 protected override void SetupOperator() { base.SetupOperator(); this.SetOp(QK3_OP.QK3_OP_STR_BEGIN, Q_TOKEN.QTK_S_QUOT); this.SetOp(QK3_OP.QK3_OP_STR_END, Q_TOKEN.QTK_S_QUOT); } // Token: 0x06000446 RID: 1094 RVA: 0x0000F30C File Offset: 0x0000D50C protected override QK3_IDTYPE GetIdType(string szName, ref QK3_ITEMINFO ItemInfo) { if (string.Equals(szName, "null")) { ItemInfo.nType = 0; ItemInfo.nId = 0; return QK3_IDTYPE.QK3_IDTYPE_VAR; } CHAR_ID idFromName = Chara.GetIdFromName(szName); if (idFromName != CHAR_ID.NOTHING) { ItemInfo.nType = 0; ItemInfo.nId = (int)idFromName; return QK3_IDTYPE.QK3_IDTYPE_VAR; } for (int i = 0; i < AmCalc.g_aQcFuncList.Length; i++) { if (string.Equals(AmCalc.g_aQcFuncList[i].szName, szName)) { ItemInfo.nType = 0; ItemInfo.nId = i; ItemInfo.nIndex = AmCalc.g_aQcFuncList[i].nReserved; return QK3_IDTYPE.QK3_IDTYPE_FUNC; } } int nIndex = 0; int num = GameData.SearchParam(szName.ToUpper(), ref nIndex); if (num > 0) { ItemInfo.nType = 1; ItemInfo.nId = num; ItemInfo.nIndex = nIndex; return QK3_IDTYPE.QK3_IDTYPE_VAR; } return QK3_IDTYPE.QK3_IDTYPE_NULL; } // Token: 0x06000447 RID: 1095 RVA: 0x0000F3E0 File Offset: 0x0000D5E0 protected override bool VarSetValue(QK3_ITEMINFO ItemInfo, CQK3Node NodeIndex, CQK3Node NodeValue) { QC_VARTYPE nType = (QC_VARTYPE)ItemInfo.nType; if (nType == QC_VARTYPE.CONST) { Debug.Print("ERR: 定数には代入できません。"); return false; } if (nType != QC_VARTYPE.GAMEPARAM) { return false; } if (NodeIndex.GetInt() < 0 || NodeIndex.GetInt() >= ItemInfo.nIndex) { Debug.Print(string.Format("ERR: 配列インデックスが範囲外です -> {0}", NodeIndex.GetInt())); return false; } GameData.SetParam(ItemInfo.nId + NodeIndex.GetInt(), NodeValue.GetInt()); return true; } // Token: 0x06000448 RID: 1096 RVA: 0x0000F46C File Offset: 0x0000D66C protected override bool VarGetValue(QK3_ITEMINFO ItemInfo, CQK3Node NodeIndex, ref CQK3Node NodeRet) { QC_VARTYPE nType = (QC_VARTYPE)ItemInfo.nType; if (nType == QC_VARTYPE.CONST) { NodeRet.SetInt(ItemInfo.nId); return true; } if (nType != QC_VARTYPE.GAMEPARAM) { return false; } if (NodeIndex.GetInt() < 0 || NodeIndex.GetInt() >= ItemInfo.nIndex) { Debug.Print(string.Format("ERR: 配列インデックスが範囲外です -> {0}", NodeIndex.GetInt())); return false; } NodeRet.SetInt(GameData.GetParamString(ItemInfo.nId + NodeIndex.GetInt())); return true; } // Token: 0x06000449 RID: 1097 RVA: 0x0000F4FC File Offset: 0x0000D6FC protected override bool FuncCall(QK3_ITEMINFO ItemInfo, CQK3Node[] pParams, int nParamNum, ref CQK3Node NodeRet) { if (ItemInfo.nType != 0) { return false; } switch (ItemInfo.nId) { case 0: if (nParamNum < 1) { Debug.Print("rand関数の引数がありません。"); return false; } NodeRet.SetInt(App.GetRandom(pParams[0].GetInt())); return true; case 1: if (nParamNum < 2) { Debug.Print("max関数の引数が足りません。"); return false; } NodeRet.SetInt((pParams[0].GetInt() >= pParams[1].GetInt()) ? pParams[0].GetInt() : pParams[1].GetInt()); return true; case 2: if (nParamNum < 2) { Debug.Print("min関数の引数が足りません。"); return false; } NodeRet.SetInt((pParams[0].GetInt() <= pParams[1].GetInt()) ? pParams[0].GetInt() : pParams[1].GetInt()); return true; case 3: if (nParamNum < 2) { Debug.Print("skidoku関数の引数が足りません。"); return false; } if (pParams[0].GetNodeType() != QK3_NODETYPE.STR) { Debug.Print("skidoku関数の引数タイプが違います。"); return false; } NodeRet.SetInt((!SysData.IsRead(pParams[0].GetString(), pParams[1].GetString(), 0)) ? 0 : 1); return true; case 4: if (nParamNum < 2) { Debug.Print("gkidoku関数の引数が足りません。"); return false; } if (pParams[0].GetNodeType() != QK3_NODETYPE.STR) { Debug.Print("gkidoku関数の引数タイプが違います。"); return false; } NodeRet.SetInt((!GameData.IsRead(pParams[0].GetString(), pParams[1].GetString())) ? 0 : 1); return true; default: return false; } } // Token: 0x040002E1 RID: 737 private const int STR_MAX = 8; // Token: 0x040002E2 RID: 738 private static AmCalc.QC_FUNCINFO[] g_aQcFuncList = new AmCalc.QC_FUNCINFO[] { new AmCalc.QC_FUNCINFO("rand", 0), new AmCalc.QC_FUNCINFO("max", 0), new AmCalc.QC_FUNCINFO("min", 0), new AmCalc.QC_FUNCINFO("skidoku", 0), new AmCalc.QC_FUNCINFO("gkidoku", 0) }; // Token: 0x02000096 RID: 150 private struct QC_FUNCINFO { // Token: 0x0600044A RID: 1098 RVA: 0x0000F6A8 File Offset: 0x0000D8A8 public QC_FUNCINFO(string s, int n) { this.szName = s; this.nReserved = n; } // Token: 0x040002E3 RID: 739 public string szName; // Token: 0x040002E4 RID: 740 public int nReserved; } } }