Beispiel #1
0
 /// <summary>
 /// 初始化剧情命令
 /// </summary>
 /// <param name="config"></param>
 public void Init(ScriptableData.ISyntaxComponent config)
 {
     ScriptableData.CallData callData = config as ScriptableData.CallData;
     if (callData != null)
     {
         Load(callData);
     }
     else
     {
         ScriptableData.FunctionData funcData = config as ScriptableData.FunctionData;
         if (funcData != null)
         {
             Load(funcData);
         }
         else
         {
             ScriptableData.StatementData stateData = config as ScriptableData.StatementData;
             if (stateData != null)
             {
                 Load(stateData);
             }
             else
             {
                 Debug.LogError("剧情命令不能解析");
             }
         }
     }
 }
Beispiel #2
0
        protected override void Load(ScriptableData.FunctionData functionData)
        {
            ScriptableData.CallData callData = functionData.Call;
            if (null != callData)
            {
                if (callData.GetParamNum() > 0)
                {
                    ScriptableData.ISyntaxComponent param = callData.GetParam(0);
                    m_Condition.InitFromDsl(param);
                }
                for (int i = 0; i < functionData.Statements.Count; i++)
                {
                    ICommand cmd = CommandManager.Instance.CreateCommand(functionData.Statements[i]);
                    if (null != cmd)
                    {
                        m_LoadedIfCommands.Add(cmd);
                    }
                }

                /*
                 * foreach (ScriptableData.ISyntaxComponent statement in functionData.Statements) {
                 * ICommand cmd = StoryCommandManager.Instance.CreateCommand(statement);
                 * if (null != cmd)
                 *  m_LoadedIfCommands.Add(cmd);
                 * }*/
            }
        }
Beispiel #3
0
 public IStoryValue <object> CalcValue(ScriptableData.ISyntaxComponent param)
 {
     if (param.IsValid() && param.GetId().Length == 0)
     {
         //处理括弧
         ScriptableData.CallData callData = param as ScriptableData.CallData;
         if (null != callData && callData.GetParamNum() > 0)
         {
             int ct = callData.GetParamNum();
             return(CalcValue(callData.GetParam(ct - 1)));
         }
         else
         {
             //不支持的语法
             return(null);
         }
     }
     else
     {
         IStoryValue <object> ret = null;
         string id = param.GetId();
         if (m_dicValueHandlers.ContainsKey(id))
         {
             ret = m_dicValueHandlers[id].Build(param);
         }
         return(ret);
     }
 }
        public ISkillTriger Create(ScriptableData.ISyntaxComponent trigerConfig)
        {
            T t = new T();

            t.Init(trigerConfig);
            return(t);
        }
        public ICommand Create(ScriptableData.ISyntaxComponent commandConfig)
        {
            T t = new T();

            t.Init(commandConfig);
            return(t);
        }
Beispiel #6
0
        public void InitFromDsl(ScriptableData.ISyntaxComponent param)
        {
            string id     = param.GetId();
            int    idType = param.GetIdType();

            if (idType == ScriptableData.ValueData.ID_TOKEN && id.StartsWith("$"))
            {
                if (0 == id.CompareTo("$$"))
                {
                    SetArgument(c_Iterator);
                }
                else
                {
                    SetArgument(int.Parse(id.Substring(1)));
                }
            }
            else if (idType == ScriptableData.ValueData.ID_TOKEN && id.StartsWith("@"))
            {
                if (id.StartsWith("@@"))
                {
                    SetGlobal(id);
                }
                else
                {
                    SetLocal(id);
                }
            }
            else
            {
                CalcInitValue(param);
            }
        }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "rndfloat")
     {
     }
 }
        public IValue <object> Build(ScriptableData.ISyntaxComponent param)
        {
            C c = new C();

            c.InitFromDsl(param);
            return(c);
        }
 public IValue <object> CalcValue(ScriptableData.ISyntaxComponent param)
 {
     if (param.IsValid() && param.GetId().Length == 0)
     {
         //处理括弧
         ScriptableData.CallData callData = param as ScriptableData.CallData;
         if (null != callData && callData.GetParamNum() > 0)
         {
             int ct = callData.GetParamNum();
             return(CalcValue(callData.GetParam(ct - 1)));
         }
         else
         {
             //不支持的语法
             return(null);
         }
     }
     else
     {
         IValue <object> ret = null;
         string          id  = param.GetId();
         IValueFactory   factory;
         if (m_ValueHandlers.TryGetValue(id, out factory))
         {
             ret = factory.Build(param);
         }
         return(ret);
     }
 }
Beispiel #10
0
 public void Init(ScriptableData.ISyntaxComponent config)
 {
     ScriptableData.CallData callData = config as ScriptableData.CallData;
     if (null != callData)
     {
         Load(callData);
     }
     else
     {
         ScriptableData.FunctionData funcData = config as ScriptableData.FunctionData;
         if (null != funcData)
         {
             Load(funcData);
         }
         else
         {
             ScriptableData.StatementData statementData = config as ScriptableData.StatementData;
             if (null != statementData)
             {
                 Load(statementData);
             }
             else
             {
                 //error
             }
         }
     }
 }
Beispiel #11
0
        protected override void Load(ScriptableData.FunctionData functionData)
        {
            ScriptableData.CallData callData = functionData.Call;
            if (null != callData)
            {
                for (int i = 0; i < callData.GetParamNum(); ++i)
                {
                    ScriptableData.ISyntaxComponent param = callData.GetParam(i);
                    SkillValue val = new SkillValue();
                    val.InitFromDsl(param);
                    m_LoadedIterators.Add(val);
                    m_Iterators.Enqueue(val);
                }
                for (int i = 0; i < functionData.Statements.Count; i++)
                {
                    ICommand cmd = CommandManager.Instance.CreateCommand(functionData.Statements[i]);
                    if (null != cmd)
                    {
                        m_LoadedCommands.Add(cmd);
                    }
                }

                /*
                 * foreach (ScriptableData.ISyntaxComponent statement in functionData.Statements) {
                 * ICommand cmd = StoryCommandManager.Instance.CreateCommand(statement);
                 * if(null!=cmd)
                 *  m_LoadedCommands.Add(cmd);
                 * }*/
            }
        }
Beispiel #12
0
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "iscombatnpc" && 1 == callData.GetParamNum())
     {
         m_ObjId.InitFromDsl(callData.GetParam(0));
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "objid2unitid" && callData.GetParamNum() == 1)
     {
         m_ObjId.InitFromDsl(callData.GetParam(0));
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "calcdir" && callData.GetParamNum() == 2)
     {
         m_ObjId.InitFromDsl(callData.GetParam(0));
         m_TargetId.InitFromDsl(callData.GetParam(1));
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     if (param is ScriptableData.CallData callData && callData.GetId() == "vector2" && callData.GetParamNum() == 2)
     {
         m_X.InitFromDsl(callData.GetParam(0));
         m_Y.InitFromDsl(callData.GetParam(1));
         TryUpdateValue();
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "rndint" && callData.GetParamNum() == 2)
     {
         m_Min.InitFromDsl(callData.GetParam(0));
         m_Max.InitFromDsl(callData.GetParam(1));
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "isfriend" && callData.GetParamNum() == 2)
     {
         m_Camp1.InitFromDsl(callData.GetParam(0));
         m_Camp2.InitFromDsl(callData.GetParam(1));
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "cosh" && callData.GetParamNum() == 1)
     {
         m_X.InitFromDsl(callData.GetParam(0));
         TryUpdateValue();
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "vector3dist" && callData.GetParamNum() == 2)
     {
         m_Pt1.InitFromDsl(callData.GetParam(0));
         m_Pt2.InitFromDsl(callData.GetParam(1));
         TryUpdateValue();
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "quaternion" && callData.GetParamNum() == 4)
     {
         m_X.InitFromDsl(callData.GetParam(0));
         m_Y.InitFromDsl(callData.GetParam(1));
         m_Z.InitFromDsl(callData.GetParam(2));
         m_W.InitFromDsl(callData.GetParam(3));
         TryUpdateValue();
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "max")
     {
         for (int i = 0; i < callData.GetParamNum(); ++i)
         {
             ScriptableData.ISyntaxComponent arg = callData.GetParam(i);
             SkillValue val = new SkillValue();
             val.InitFromDsl(arg);
             m_List.Add(val);
         }
         TryUpdateValue();
     }
 }
    /// <summary>
    /// 创建一个命令
    /// </summary>
    /// <param name="commandConfig"></param>
    /// <returns></returns>
    public IStoryCommand CreateCommand(ScriptableData.ISyntaxComponent commandConfig)
    {
        IStoryCommand        command = null;
        string               type    = commandConfig.GetId();
        IStoryCommandFactory factory = GetFactory(type);

        if (factory != null)
        {
            command = factory.Create(commandConfig);
        }
        else
        {
            m_log.Error("创建命令失败,命令类型:" + type);
        }
        return(command);
    }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "rndfromlist")
     {
         m_ParamNum = callData.GetParamNum();
         if (m_ParamNum > 0)
         {
             m_ListValue.InitFromDsl(callData.GetParam(0));
         }
         if (m_ParamNum > 1)
         {
             m_DefaultValue.InitFromDsl(callData.GetParam(1));
         }
     }
 }
Beispiel #24
0
        public ICommand CreateCommand(ScriptableData.ISyntaxComponent commandConfig)
        {
            ICommand        command = null;
            string          type    = commandConfig.GetId();
            ICommandFactory factory = GetFactory(type);

            if (null != factory)
            {
                command = factory.Create(commandConfig);
            }
            else
            {
                LogUtil.Debug("CreateCommand failed, unknown type:{0}.", type);
            }
            return(command);
        }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "objget")
     {
         m_ParamNum = callData.GetParamNum();
         if (m_ParamNum > 1)
         {
             m_ObjId.InitFromDsl(callData.GetParam(0));
             m_LocalName.InitFromDsl(callData.GetParam(1));
         }
         if (m_ParamNum > 2)
         {
             m_DefaultValue.InitFromDsl(callData.GetParam(2));
         }
     }
 }
Beispiel #26
0
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "substring" && callData.GetParamNum() > 0)
     {
         m_ParamNum = callData.GetParamNum();
         m_Start.InitFromDsl(callData.GetParam(0));
         if (m_ParamNum > 1)
         {
             m_Start.InitFromDsl(callData.GetParam(1));
         }
         if (m_ParamNum > 2)
         {
             m_Length.InitFromDsl(callData.GetParam(2));
         }
         TryUpdateValue();
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "listget")
     {
         m_ParamNum = callData.GetParamNum();
         if (m_ParamNum > 1)
         {
             m_ListValue.InitFromDsl(callData.GetParam(0));
             m_IndexValue.InitFromDsl(callData.GetParam(1));
             if (m_ParamNum > 2)
             {
                 m_DefaultValue.InitFromDsl(callData.GetParam(2));
             }
             TryUpdateValue();
         }
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "log")
     {
         m_ParamNum = callData.GetParamNum();
         if (1 == m_ParamNum)
         {
             m_X.InitFromDsl(callData.GetParam(0));
         }
         else if (2 == m_ParamNum)
         {
             m_X.InitFromDsl(callData.GetParam(0));
             m_Y.InitFromDsl(callData.GetParam(1));
         }
         TryUpdateValue();
     }
 }
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "+")
     {
         if (callData.GetParamNum() == 1)
         {
             m_X.InitFromDsl(new ScriptableData.ValueData("0"));
             m_Y.InitFromDsl(callData.GetParam(0));
         }
         else if (callData.GetParamNum() == 2)
         {
             m_X.InitFromDsl(callData.GetParam(0));
             m_Y.InitFromDsl(callData.GetParam(1));
         }
         TryUpdateValue();
     }
 }
Beispiel #30
0
 public void InitFromDsl(ScriptableData.ISyntaxComponent param)
 {
     ScriptableData.CallData callData = param as ScriptableData.CallData;
     if (null != callData && callData.GetId() == "format")
     {
         int num = callData.GetParamNum();
         if (num > 0)
         {
             m_Format.InitFromDsl(callData.GetParam(0));
         }
         for (int i = 1; i < callData.GetParamNum(); ++i)
         {
             SkillValue val = new SkillValue();
             val.InitFromDsl(callData.GetParam(i));
             m_FormatArgs.Add(val);
         }
         TryUpdateValue();
     }
 }