public void InitFromDsl(Dsl.ISyntaxComponent param) { Dsl.FunctionData callData = param as Dsl.FunctionData; if (null != callData) { int num = callData.GetParamNum(); if (num > 1) { m_Object.InitFromDsl(callData.GetParam(0)); m_Method.InitFromDsl(callData.GetParam(1)); } for (int i = 2; i < callData.GetParamNum(); ++i) { StoryValue val = new StoryValue(); val.InitFromDsl(callData.GetParam(i)); m_Args.Add(val); } } }
public Dsl.FunctionData InitFromDsl(Dsl.ISyntaxComponent param, int startIndex, bool enableComments) { Dsl.FunctionData ret = null; if (enableComments) { var statementData = param as Dsl.StatementData; if (null != statementData && statementData.GetFunctionNum() == 2) { var first = statementData.First; var last = statementData.Last; if (!first.HaveStatement() && (last.GetId() == "comment" || last.GetId() == "comments")) { ret = last; statementData.Functions.RemoveAt(1); } } } return(ret); }
public static Vector2 CalcVector2(Dsl.FunctionData callData) { if (null == callData || callData.GetId() != "vector2") { return(Vector2.zero); } int num = callData.GetParamNum(); if (2 == num) { float x = float.Parse(callData.GetParamId(0)); float y = float.Parse(callData.GetParamId(1)); return(new Vector2(x, y)); } else { return(Vector2.zero); } }
protected override bool Load(Dsl.FunctionData funcData) { Dsl.CallData callData = funcData.Call; int num = callData.GetParamNum(); for (int ix = 0; ix < num; ++ix) { Dsl.ISyntaxComponent cond = funcData.Call.GetParam(ix); m_Elements.Add(Calculator.Load(cond)); } int fnum = funcData.GetStatementNum(); for (int ix = 0; ix < fnum; ++ix) { IExpression subExp = Calculator.Load(funcData.GetStatement(ix)); m_Expressions.Add(subExp); } return(true); }
protected override void Load(Dsl.FunctionData callData, SkillInstance instance) { int num = callData.GetParamNum(); if (num >= 11) { StartTime = long.Parse(callData.GetParamId(0)); m_CurveTime = float.Parse(callData.GetParamId(1)); m_CurveHeight = float.Parse(callData.GetParamId(2)); m_QteStartTime = float.Parse(callData.GetParamId(3)); m_QteDuration = float.Parse(callData.GetParamId(4)); m_QteHeight = float.Parse(callData.GetParamId(5)); m_QteButtonDuration = float.Parse(callData.GetParamId(6)); m_UpAnim = callData.GetParamId(7); m_DownAnim = callData.GetParamId(8); m_FalldownAnim = callData.GetParamId(9); m_AnimFadeTime = float.Parse(callData.GetParamId(10)); } }
protected override bool Load(Dsl.StatementData statementData) { Load(statementData.First); int ct = statementData.Functions.Count; for (int stIx = 1; stIx < ct; ++stIx) { Dsl.FunctionData functionData = statementData.Functions[stIx]; if (null != functionData) { string funcId = functionData.GetId(); if (funcId == "elseif") { Load(functionData); } else if (funcId == "else") { if (stIx == ct - 1) { for (int i = 0; i < functionData.GetParamNum(); i++) { IStoryCommand cmd = StoryCommandManager.Instance.CreateCommand(functionData.GetParam(i)); if (null != cmd) { m_LoadedElseCommands.Add(cmd); } } } else { #if DEBUG string err = string.Format("[StoryDsl] else must be the last function !!! line:{0}", functionData.GetLine()); throw new Exception(err); #else GameFramework.LogSystem.Error("[StoryDsl] else must be the last function !!!"); #endif } } } } return(true); }
protected override void Load(Dsl.FunctionData funcData, SkillInstance instance) { if (funcData.IsHighOrder) { LoadCall(funcData.LowerOrderFunction, instance); } else if (funcData.HaveParam()) { LoadCall(funcData, instance); } if (funcData.HaveStatement()) { for (int i = 0; i < funcData.GetParamNum(); ++i) { Dsl.ISyntaxComponent statement = funcData.GetParam(i); Dsl.FunctionData stCall = statement as Dsl.FunctionData; if (null != stCall) { string id = stCall.GetId(); string key = stCall.GetParamId(0); object val = string.Empty; if (id == "int") { val = int.Parse(stCall.GetParamId(1)); } else if (id == "float") { val = float.Parse(stCall.GetParamId(1)); } else if (id == "bool") { val = bool.Parse(stCall.GetParamId(1)); } else if (id == "trigger") { val = stCall.GetParamId(1); } m_Params.Add(key, val); } } } }
private static bool CanSplitPrefixPostfixOperator(Dsl.ISyntaxComponent data, out Dsl.FunctionData oper, out bool prefix) { oper = null; prefix = false; Dsl.ISyntaxComponent var = null; if (DetectPrefixPostfixOperator(data, ref oper, ref var, ref prefix) && !DetectVariable(data, oper, var)) { if (var is Dsl.ValueData) { return(true); } else { var fd = var as Dsl.FunctionData; if (fd.GetId() == "getinstance") { var p1 = fd.GetParam(1); if (p1 is Dsl.ValueData && !DetectVariable(data, oper, p1)) { return(true); } } else if (fd.GetId() == "getinterface") { var p1 = fd.GetParam(0); if (p1 is Dsl.ValueData && !DetectVariable(data, oper, p1)) { return(true); } } else if (fd.GetId() == "getstatic") { var p1 = fd.GetParam(1); if (p1 is Dsl.ValueData) { return(true); } } } } return(false); }
private static bool CompareVariable(Dsl.FunctionData data, Dsl.FunctionData var) { bool ret = false; if (data.IsHighOrder && data.IsHighOrder) { ret = CompareVariable(data.LowerOrderFunction, data.LowerOrderFunction) && data.GetParamClass() == data.GetParamClass() && data.GetParamNum() == data.GetParamNum(); if (ret) { int ct = data.GetParamNum(); for (int i = 0; i < ct; ++i) { var l = data.GetParam(i); var r = var.GetParam(i); ret = CompareVariable(l, r); if (!ret) { break; } } } } else if (!data.IsHighOrder && !var.IsHighOrder) { ret = data.GetId() == var.GetId() && data.GetParamClass() == data.GetParamClass() && data.GetParamNum() == data.GetParamNum(); if (ret) { int ct = data.GetParamNum(); for (int i = 0; i < ct; ++i) { var l = data.GetParam(i); var r = var.GetParam(i); ret = CompareVariable(l, r); if (!ret) { break; } } } } return(ret); }
private void LoadKeyFrames(List <Dsl.ISyntaxComponent> statements) { m_Curve = new AnimationCurve(); for (int i = 0; i < statements.Count; i++) { Dsl.FunctionData stCall = statements[i] as Dsl.FunctionData; if (stCall.GetId() == "keyframe") { if (stCall.GetParamNum() >= 4) { float time = float.Parse(stCall.GetParamId(0)); float value = float.Parse(stCall.GetParamId(1)); float inTangent = float.Parse(stCall.GetParamId(2)); float outTangent = float.Parse(stCall.GetParamId(3)); Keyframe keyframe = new Keyframe(time, value, inTangent, outTangent); m_Curve.AddKey(keyframe); } } } }
protected override void Load(Dsl.FunctionData callData, SkillInstance instance) { int num = callData.GetParamNum(); if (num >= 1) { StartTime = long.Parse(callData.GetParamId(0)); } if (num >= 9) { m_RelativeCenter.x = float.Parse(callData.GetParamId(1)); m_RelativeCenter.y = float.Parse(callData.GetParamId(2)); m_RelativeCenter.z = float.Parse(callData.GetParamId(3)); m_Radius = float.Parse(callData.GetParamId(4)); m_AngleOrLength = float.Parse(callData.GetParamId(5)); m_AoeType = int.Parse(callData.GetParamId(6)); m_MaxCount = int.Parse(callData.GetParamId(7)); m_RelativeToTarget = callData.GetParamId(8) == "true"; } }
protected override void Load(Dsl.FunctionData functionData) { Dsl.CallData callData = functionData.Call; if (null != callData) { if (callData.GetParamNum() > 0) { m_LoadedList.InitFromDsl(callData.GetParam(0)); } for (int i = 0; i < functionData.Statements.Count; i++) { IStoryCommand cmd = StoryCommandManager.Instance.CreateCommand(functionData.Statements[i]); if (null != cmd) { m_LoadedCommands.Add(cmd); } } } IsCompositeCommand = true; }
private void Load(Dsl.DslInfo info) { Dsl.FunctionData func = info.First; string id = func.Call.GetParamId(0); List <IExpression> list; if (!m_Procs.TryGetValue(id, out list)) { list = new List <IExpression>(); m_Procs.Add(id, list); } foreach (Dsl.ISyntaxComponent comp in func.Statements) { var exp = Load(comp); if (null != exp) { list.Add(exp); } } }
protected override bool Load(Dsl.StatementData statementData) { Dsl.FunctionData funcData1 = statementData.First; Dsl.FunctionData funcData2 = statementData.Second; if (funcData2.GetId() == ":") { Dsl.ISyntaxComponent cond = funcData1.Call.GetParam(0); Dsl.ISyntaxComponent op1 = funcData1.GetStatement(0); Dsl.ISyntaxComponent op2 = funcData2.GetStatement(0); m_Op1 = Calculator.Load(cond); m_Op2 = Calculator.Load(op1); m_Op3 = Calculator.Load(op2); } else { //error Console.WriteLine("DslCalculator error, {0} line {1}", statementData.ToScriptString(false), statementData.GetLine()); } return(true); }
protected override void Load(Dsl.FunctionData funcData, SkillInstance instance) { Dsl.CallData callData = funcData.Call; if (null != callData) { Load(callData, instance); Dsl.ISyntaxComponent statement = funcData.Statements.Find(st => st.GetId() == "transform"); if (null != statement) { Dsl.CallData stCall = statement as Dsl.CallData; if (null != stCall) { if (stCall.GetParamNum() > 0) { Dsl.CallData param0 = stCall.GetParam(0) as Dsl.CallData; if (null != param0) { m_Pos = DslUtility.CalcVector3(param0); } } if (stCall.GetParamNum() > 1) { Dsl.CallData param1 = stCall.GetParam(1) as Dsl.CallData; if (null != param1) { m_Dir = DslUtility.CalcEularRotation(param1); } } if (stCall.GetParamNum() > 2) { Dsl.CallData param2 = stCall.GetParam(2) as Dsl.CallData; if (null != param2) { m_Scale = DslUtility.CalcVector3(param2); } } } } } }
public static void FirstParse(Dsl.DslInfo dslInfo) { string id = dslInfo.GetId(); if (id == "command") { if (dslInfo.Functions.Count == 2) { StorySystem.CommonCommands.CompositeCommand cmd = new CommonCommands.CompositeCommand(); cmd.InitSharedData(); Dsl.FunctionData first = dslInfo.First; cmd.Name = first.Call.GetParamId(0); Dsl.FunctionData second = dslInfo.Second; for (int ix = 0; ix < second.Call.GetParamNum(); ++ix) { cmd.ArgNames.Add(second.Call.GetParamId(ix)); } //注册 StoryCommandManager.Instance.RegisterCommandFactory(cmd.Name, new CommonCommands.CompositeCommandFactory(cmd), true); } } else if (id == "value") { if (dslInfo.Functions.Count == 3) { StorySystem.CommonValues.CompositeValue val = new CommonValues.CompositeValue(); val.InitSharedData(); Dsl.FunctionData first = dslInfo.First; val.Name = first.Call.GetParamId(0); Dsl.FunctionData second = dslInfo.Second; for (int ix = 0; ix < second.Call.GetParamNum(); ++ix) { val.ArgNames.Add(second.Call.GetParamId(ix)); } Dsl.FunctionData third = dslInfo.Functions[2]; val.ReturnName = third.Call.GetParamId(0); //注册 StoryValueManager.Instance.RegisterValueFactory(val.Name, new CommonValues.CompositeValueFactory(val), true); } } }
protected override void Load(Dsl.FunctionData funcData, SkillInstance instance) { Dsl.CallData callData = funcData.Call; if (null != callData) { Load(callData, instance); for (int i = 0; i < funcData.Statements.Count; ++i) { Dsl.ISyntaxComponent statement = funcData.Statements[i]; Dsl.CallData stCall = statement as Dsl.CallData; if (null != stCall) { string id = stCall.GetId(); string key = stCall.GetParamId(0); object val = string.Empty; if (id == "int") { val = int.Parse(stCall.GetParamId(1)); } else if (id == "long") { val = long.Parse(stCall.GetParamId(1)); } else if (id == "float") { val = float.Parse(stCall.GetParamId(1)); } else if (id == "double") { val = double.Parse(stCall.GetParamId(1)); } else if (id == "string") { val = stCall.GetParamId(1); } m_Params.Add(key, val); } } } }
protected override bool Load(Dsl.FunctionData functionData) { if (functionData.IsHighOrder) { m_LocalInfoIndex = StoryCommandManager.Instance.AllocLocalInfoIndex(); Dsl.FunctionData callData = functionData.LowerOrderFunction; if (callData.GetParamNum() > 0) { m_LoadedList.InitFromDsl(callData.GetParam(0)); } for (int i = 0; i < functionData.GetParamNum(); i++) { IStoryCommand cmd = StoryCommandManager.Instance.CreateCommand(functionData.GetParam(i)); if (null != cmd) { m_LoadedCommands.Add(cmd); } } } return(true); }
protected virtual bool Load(Dsl.FunctionData funcData) { bool ret = true; if (funcData.IsHighOrder) { if (funcData.LowerOrderFunction.GetParamNum() > 0 || funcData.HaveStatement() || funcData.HaveExternScript()) { ret = false; } } else if (funcData.HaveStatement() || funcData.HaveExternScript()) { ret = false; } else if (funcData.HaveParam()) { ret = true; } return(ret); }
public static Vector4 CalcVector4(Dsl.FunctionData callData) { if (null == callData || callData.GetId() != "vector4") { return(Vector4.zero); } int num = callData.GetParamNum(); if (4 == num) { float x = float.Parse(callData.GetParamId(0)); float y = float.Parse(callData.GetParamId(1)); float z = float.Parse(callData.GetParamId(2)); float w = float.Parse(callData.GetParamId(3)); return(new Vector4(x, y, z, w)); } else { return(Vector4.zero); } }
public static Color CalcColor(Dsl.FunctionData callData) { if (null == callData || callData.GetId() != "color") { return(Color.white); } int num = callData.GetParamNum(); if (4 == num) { float r = float.Parse(callData.GetParamId(0)); float g = float.Parse(callData.GetParamId(1)); float b = float.Parse(callData.GetParamId(2)); float a = float.Parse(callData.GetParamId(3)); return(new Color(r, g, b, a)); } else { return(Color.white); } }
public static Quaternion CalcQuaternion(Dsl.FunctionData callData) { if (null == callData || callData.GetId() != "quaternion") { return(Quaternion.identity); } int num = callData.GetParamNum(); if (4 == num) { float x = float.Parse(callData.GetParamId(0)); float y = float.Parse(callData.GetParamId(1)); float z = float.Parse(callData.GetParamId(2)); float w = float.Parse(callData.GetParamId(3)); return(new Quaternion(x, y, z, w)); } else { return(Quaternion.identity); } }
public bool LoadCallData(Dsl.FunctionData callData) { var err = LuaFunctionHelper.BeginCall(m_Cs2Lua_LoadCallData); LuaFunctionHelper.PushValue(Self); LuaFunctionHelper.PushValue(callData); var end_call_res = LuaFunctionHelper.EndCall(err); if (end_call_res) { LuaFunctionHelper.BeginGetResult(err); bool __cs2lua_ret; LuaFunctionHelper.GetResult(out __cs2lua_ret); LuaFunctionHelper.EndGetResult(); return(__cs2lua_ret); } else { return(false); } }
protected override void Load(Dsl.FunctionData callData, SkillInstance instance) { int num = callData.GetParamNum(); if (num > 0) { m_IsEnable = callData.GetParamId(0) == "true"; } else { m_IsEnable = true; } if (num > 1) { StartTime = long.Parse(callData.GetParamId(1)); } else { StartTime = 0; } }
public void InitFromDsl(Dsl.ISyntaxComponent param) { Dsl.FunctionData funcData = param as Dsl.FunctionData; if (null != funcData) { Load(funcData); } else { Dsl.StatementData statementData = param as Dsl.StatementData; if (null != statementData) { //是否支持语句类型的命令语法? Load(statementData); } else { //error } } }
private static bool DetectPrefixPostfixOperator(Dsl.ISyntaxComponent data, ref Dsl.FunctionData oper, ref Dsl.ValueData var, ref bool prefix) { var funcData = data as Dsl.FunctionData; if (null != funcData) { return(DetectPrefixPostfixOperator(funcData, ref oper, ref var, ref prefix)); } else { var stData = data as Dsl.StatementData; if (null != stData) { return(DetectPrefixPostfixOperator(stData, ref oper, ref var, ref prefix)); } else { return(false); } } }
protected override void Load(Dsl.FunctionData callData, SkillInstance instance) { int num = callData.GetParamNum(); if (num > 0) { StartTime = int.Parse(callData.GetParamId(0)); } m_SectionList.Clear(); int nextParamIndex = 1; int section_num = 0; while (num >= nextParamIndex + 7) { MoveSectionInfo section = new MoveSectionInfo(); section.moveTime = (float)System.Convert.ToDouble(callData.GetParamId(nextParamIndex)); ++nextParamIndex; section.speedVect.x = (float)System.Convert.ToDouble(callData.GetParamId(nextParamIndex)); ++nextParamIndex; section.speedVect.y = (float)System.Convert.ToDouble(callData.GetParamId(nextParamIndex)); ++nextParamIndex; section.speedVect.z = (float)System.Convert.ToDouble(callData.GetParamId(nextParamIndex)); ++nextParamIndex; section.accelVect.x = (float)System.Convert.ToDouble(callData.GetParamId(nextParamIndex)); ++nextParamIndex; section.accelVect.y = (float)System.Convert.ToDouble(callData.GetParamId(nextParamIndex)); ++nextParamIndex; section.accelVect.z = (float)System.Convert.ToDouble(callData.GetParamId(nextParamIndex)); ++nextParamIndex; m_SectionList.Add(section); section_num++; } if (num > nextParamIndex) { string moveType = callData.GetParamId(nextParamIndex); ++nextParamIndex; IList <string> list = Converter.ConvertStringList(moveType); m_IsFreeMove = list.IndexOf("freemove") >= 0; } }
internal static void ParseFunctionOptions(Dsl.FunctionData opts, FunctionOptions funcOpts) { foreach (var opt in opts.Params) { var optFd = opt as Dsl.FunctionData; if (null != optFd) { if (optFd.GetId() == "needfuncinfo") { funcOpts.NeedFuncInfo = optFd.GetParamId(0) == "true"; } else if (optFd.GetId() == "rettype") { var tn = optFd.GetParamId(0); var orit = optFd.GetParam(1); var oritk = optFd.GetParam(2); var t = CalcTypeString(orit); var tk = CalcTypeString(oritk); var ro = int.Parse(optFd.GetParamId(3)); var isExtern = optFd.GetParamId(4) == "true"; funcOpts.RetTypes.Add(new TypeInfo { Name = tn, Type = t, TypeKind = tk, RefOrOut = ro, IsExtern = isExtern, OriType = orit, OriTypeKind = oritk }); } else if (optFd.GetId() == "paramtype") { var tn = optFd.GetParamId(0); var orit = optFd.GetParam(1); var oritk = optFd.GetParam(2); var t = CalcTypeString(orit); var tk = CalcTypeString(oritk); var ro = int.Parse(optFd.GetParamId(3)); var isExtern = optFd.GetParamId(4) == "true"; funcOpts.ParamTypes.Add(new TypeInfo { Name = tn, Type = t, TypeKind = tk, RefOrOut = ro, IsExtern = isExtern, OriType = orit, OriTypeKind = oritk }); } } } }
protected override void Load(Dsl.FunctionData funcData, SkillInstance instance) { Dsl.CallData callData = funcData.Call; if (null == callData) { return; } Load(callData, instance); for (int i = 0; i < funcData.Statements.Count; i++) { Dsl.CallData stCall = funcData.Statements[i] as Dsl.CallData; if (null == stCall) { continue; } if (stCall.GetId() == "position") { LoadPositionConfig(stCall); } else if (stCall.GetId() == "bone") { LoadBoneConfig(stCall); } else if (stCall.GetId() == "audiogroup") { LoadAudioGroup(stCall); } else if (stCall.GetId() == "volume") { if (stCall.GetParamNum() >= 1) { m_volume = float.Parse(stCall.GetParamId(0)); } else { m_volume = 1.0f; } } } }
protected override void Load(Dsl.FunctionData callData) { int num = callData.GetParamNum(); if (num > 7) { m_Receiver.InitFromDsl(callData.GetParam(0)); m_Title.InitFromDsl(callData.GetParam(1)); m_Content.InitFromDsl(callData.GetParam(2)); m_Sender.InitFromDsl(callData.GetParam(3)); m_LevelDemand.InitFromDsl(callData.GetParam(4)); m_ValidPeriod.InitFromDsl(callData.GetParam(5)); m_Money.InitFromDsl(callData.GetParam(6)); m_Gold.InitFromDsl(callData.GetParam(7)); } for (int i = 8; i < callData.GetParamNum(); ++i) { StoryValue <int> val = new StoryValue <int>(); val.InitFromDsl(callData.GetParam(i)); m_MailItems.Add(val); } }