private void Load(ScriptableData.ScriptableDataFile dataFile, int sceneId)
 {
     lock (m_oLock)
     {
         foreach (var info in dataFile.ScriptableDatas)
         {
             if (info.GetId() == "story" || info.GetId() == "script")
             {
                 ScriptableData.FunctionData funcData = info.First;
                 if (funcData != null)
                 {
                     ScriptableData.CallData callData = funcData.Call;
                     if (callData != null && callData.HaveParam())
                     {
                         int storyId = int.Parse(callData.GetParamId(0));
                         int id      = GetId(storyId, sceneId);
                         if (!m_dicStoryInstance.ContainsKey(id))
                         {
                             StoryInstance instance = new StoryInstance();
                             instance.Init(info);
                             m_dicStoryInstance.Add(id, instance);
                         }
                         else
                         {
                         }
                     }
                 }
             }
         }
     }
 }
        private void Load(ScriptableData.ScriptableDataFile dataFile, int type)
        {
            lock (m_Lock)
            {
                for (int i = 0; i < dataFile.ScriptableDatas.Count; i++)
                {
                    if (dataFile.ScriptableDatas[i].GetId() == "skill" || dataFile.ScriptableDatas[i].GetId() == "script")
                    {
                        ScriptableData.FunctionData funcData = dataFile.ScriptableDatas[i].First;
                        if (null != funcData)
                        {
                            ScriptableData.CallData callData = funcData.Call;
                            if (null != callData && callData.HaveParam())
                            {
                                int storyId = int.Parse(callData.GetParamId(0));
                                int id      = GenId(storyId, type);
                                if (!m_Instances.ContainsKey(id))
                                {
                                    Instance instance = new Instance();
                                    instance.Init(dataFile.ScriptableDatas[i]);
                                    m_Instances.Add(id, instance);

                                    LogUtil.Debug("ParseStory {0}", id);
                                }
                                else
                                {
                                    //repeated story config.
                                }
                            }
                        }
                    }
                }
            }
        }
        private void Load(ScriptableData.ScriptableDataFile dataFile)
        {
            lock (m_Lock)
            {
                for (int i = 0; i < dataFile.ScriptableDatas.Count; i++)
                {
                    if (dataFile.ScriptableDatas[i].GetId() == "skill")
                    {
                        ScriptableData.FunctionData funcData = dataFile.ScriptableDatas[i].First;
                        if (null != funcData)
                        {
                            ScriptableData.CallData callData = funcData.Call;
                            if (null != callData && callData.HaveParam())
                            {
                                int id = int.Parse(callData.GetParamId(0));
                                if (!m_SkillInstances.ContainsKey(id))
                                {
                                    SkillInstance instance = new SkillInstance();
                                    instance.Init(dataFile.ScriptableDatas[i]);
                                    m_SkillInstances.Add(id, instance);

                                    LogSystem.Debug("ParseSkill {0}", id);
                                }
                                //else
                                //{
                                //repeated skill config.
                                //}
                            }
                        }
                    }
                }

                /*
                 * foreach (ScriptableData.ScriptableDataInfo info in dataFile.ScriptableDatas) {
                 * if (info.GetId() == "skill") {
                 *  ScriptableData.FunctionData funcData = info.First;
                 *  if (null != funcData) {
                 *    ScriptableData.CallData callData = funcData.Call;
                 *    if (null != callData && callData.HaveParam()) {
                 *      int id = int.Parse(callData.GetParamId(0));
                 *      if (!m_SkillInstances.ContainsKey(id)) {
                 *        SkillInstance instance = new SkillInstance();
                 *        instance.Init(info);
                 *        m_SkillInstances.Add(id, instance);
                 *
                 *        LogSystem.Debug("ParseSkill {0}", id);
                 *      } else {
                 *        //repeated skill config.
                 *      }
                 *    }
                 *  }
                 * }
                 * }*/
            }
        }
Esempio n. 4
0
 public void Load(ScriptableData.FunctionData messageHandlerData)
 {
     ScriptableData.CallData callData = messageHandlerData.Call;
     if (null != callData && callData.HaveParam())
     {
         string[] args = new string[callData.GetParamNum()];
         for (int i = 0; i < callData.GetParamNum(); ++i)
         {
             args[i] = callData.GetParamId(i);
         }
         m_MessageId = string.Join(":", args);
     }
     RefreshCommands(messageHandlerData);
 }
Esempio n. 5
0
 public void Load(ScriptableData.FunctionData sectionData, int skillId)
 {
     ScriptableData.CallData callData = sectionData.Call;
     if (null != callData && callData.HaveParam())
     {
         string[] args = new string[callData.GetParamNum()];
         for (int i = 0; i < callData.GetParamNum(); ++i)
         {
             args[i] = callData.GetParamId(i);
         }
         m_MsgId = string.Join(":", args);
     }
     RefreshTrigers(sectionData, skillId);
 }
Esempio n. 6
0
 /// <summary>
 /// 加载命令,存到loaded的链表中
 /// </summary>
 /// <param name="messageHandlerData"></param>
 public void Load(ScriptableData.FunctionData messageHandlerData)
 {
     ScriptableData.CallData callData = messageHandlerData.Call;
     if (callData != null && callData.HaveParam())
     {
         int      argsNum = callData.GetParamNum();
         string[] args    = new string[argsNum];
         for (int i = 0; i < argsNum; i++)
         {
             args[i] = callData.GetParamId(i);
         }
         m_sMessageId = string.Join(":", args);
     }
     RefreshCommand(messageHandlerData);
 }
Esempio n. 7
0
 public void Load(ScriptableData.FunctionData sectionData, int skillId)
 {
     ScriptableData.CallData callData = sectionData.Call;
     if (null != callData && callData.HaveParam())
     {
         if (callData.GetParamNum() > 0)
         {
             m_Duration = long.Parse(callData.GetParamId(0));
         }
         else
         {
             m_Duration = 1000;
             LogSystem.Error("Skill {0} DSL, section must have a time argument !", skillId);
         }
     }
     RefreshTrigers(sectionData, skillId);
 }
 public bool Init(ScriptableData.ScriptableDataInfo config)
 {
     bool ret = false;
     ScriptableData.FunctionData story = config.First;
     if (story != null && (story.GetId() == "story" || story.GetId() == "script"))
     {
         ret = true;
         //参数
         ScriptableData.CallData callData = story.Call;
         if (callData != null && callData.HaveParam())
         {
             //第一个参数是剧情的id
             m_iStoryId = int.Parse(callData.GetParamId(0));
         }
         foreach (var info in story.Statements)
         {
             if (info.GetId() == "local")
             {
                 ScriptableData.FunctionData sectionData = info as ScriptableData.FunctionData;
                 if (null != sectionData)
                 {
                     foreach (ScriptableData.ISyntaxComponent def in sectionData.Statements)
                     {
                         ScriptableData.CallData defData = def as ScriptableData.CallData;
                         if (null != defData && defData.HaveId() && defData.HaveParam())
                         {
                             string id = defData.GetId();
                             if (id.StartsWith("@") && !id.StartsWith("@@"))
                             {
                                 StoryValue val = new StoryValue();
                                 val.InitFromDsl(defData.GetParam(0));
                                 if (!m_dicLocalVariables.ContainsKey(id))
                                 {
                                     m_dicLocalVariables.Add(id, val.Value);
                                 }
                                 else
                                 {
                                     m_dicLocalVariables[id] = val.Value;
                                 }
                             }
                         }
                     }
                 }
                 else
                 {
                     Debug.LogError("剧情" + m_iStoryId + "DSL语法,必须是个函数");
                 }
             }
             else if (info.GetId() == "onmessage")
             {
                 ScriptableData.FunctionData sectionData = info as ScriptableData.FunctionData;
                 if (null != sectionData)
                 {
                     StoryMessageHandler handler = new StoryMessageHandler();
                     handler.Load(sectionData);
                     m_listMessageHandlers.Add(handler);
                 }
                 else
                 {
                     Debug.LogError("剧情" + m_iStoryId + "DSL语法,必须是个函数");
                 }
             }
             else
             {
                 Debug.LogError("StoryInstance::Init,不知道DSL语法部分:" + info.GetId());
             }
         }
     }
     else
     {
         Debug.LogError("StoryInstance::Init,不是一个DSL语法");
     }
     return ret;
 }
        private void Load(ScriptableData.ScriptableDataFile dataFile, int sceneId)
        {
            lock (m_Lock)
            {
#if false
                for (int i = 0; i < dataFile.ScriptableDatas.Count; i++)
                {
                    if (dataFile.ScriptableDatas[i].GetId() == "story" || dataFile.ScriptableDatas[i].GetId() == "script")
                    {
                        ScriptableData.FunctionData funcData = dataFile.ScriptableDatas[i].First;
                        if (null != funcData)
                        {
                            ScriptableData.CallData callData = funcData.Call;
                            if (null != callData && callData.HaveParam())
                            {
                                int storyId = int.Parse(callData.GetParamId(0));
                                int id      = GenId(storyId, sceneId);
                                if (!m_StoryInstances.ContainsKey(id))
                                {
                                    StoryInstance instance = new StoryInstance();
                                    instance.Init(dataFile.ScriptableDatas[i]);
                                    m_StoryInstances.Add(id, instance);

                                    LogSystem.Debug("ParseStory {0}", id);
                                }
                                else
                                {
                                    //repeated story config.
                                }
                            }
                        }
                    }
                }
#else
                int id = GenId(1, sceneId);
                if (!m_StoryInstances.ContainsKey(id))
                {
                    StoryInstance instance = new StoryInstance();
                    instance.Init(dataFile);
                    m_StoryInstances.Add(id, instance);
                }
#endif

                /*
                 * foreach (ScriptableData.ScriptableDataInfo info in dataFile.ScriptableDatas) {
                 * if (info.GetId() == "story" || info.GetId() == "script") {
                 *  ScriptableData.FunctionData funcData = info.First;
                 *  if (null != funcData) {
                 *    ScriptableData.CallData callData = funcData.Call;
                 *    if (null != callData && callData.HaveParam()) {
                 *      int storyId = int.Parse(callData.GetParamId(0));
                 *      int id = GenId(storyId, sceneId);
                 *      if (!m_StoryInstances.ContainsKey(id)) {
                 *        StoryInstance instance = new StoryInstance();
                 *        instance.Init(info);
                 *        m_StoryInstances.Add(id, instance);
                 *
                 *        LogSystem.Debug("ParseStory {0}", id);
                 *      } else {
                 *        //repeated story config.
                 *      }
                 *    }
                 *  }
                 * }
                 * }*/
            }
        }
Esempio n. 10
0
 public bool Init(ScriptableData.ScriptableDataInfo config)
 {
     bool ret = false;
     ScriptableData.FunctionData skill = config.First;
     if (null != skill && (skill.GetId() == "skill" || skill.GetId() == "script"))
     {
         ret = true;
         ScriptableData.CallData callData = skill.Call;
         if (null != callData && callData.HaveParam())
         {
             m_Id = int.Parse(callData.GetParamId(0));
         }
         for (int i = 0; i < skill.Statements.Count; i++)
         {
             if (skill.Statements[i].GetId() == "local")
             {
                 ScriptableData.FunctionData sectionData = skill.Statements[i] as ScriptableData.FunctionData;
                 if (null != sectionData)
                 {
                     for (int j = 0; j < sectionData.Statements.Count; j++)
                     {
                         ScriptableData.CallData defData = sectionData.Statements[j] as ScriptableData.CallData;
                         if (null != defData && defData.HaveId() && defData.HaveParam())
                         {
                             string id = defData.GetId();
                             if (id.StartsWith("@") && !id.StartsWith("@@"))
                             {
                                 SkillValue val = new SkillValue();
                                 val.InitFromDsl(defData.GetParam(0));
                                 if (!m_PreInitedLocalVariables.ContainsKey(id))
                                 {
                                     m_PreInitedLocalVariables.Add(id, val.Value);
                                 }
                                 else
                                 {
                                     m_PreInitedLocalVariables[id] = val.Value;
                                 }
                             }
                         }
                     }
                 }
                 else
                 {
                     LogUtil.Error("Story {0} DSL, local must be a function !", m_Id);
                 }
             }
             else if (skill.Statements[i].GetId() == "onmessage")
             {
                 ScriptableData.FunctionData sectionData = skill.Statements[i] as ScriptableData.FunctionData;
                 if (null != sectionData)
                 {
                     MessageHandler handler = new MessageHandler();
                     handler.Load(sectionData);
                     string msgId = handler.MessageId;
                     if (!m_MessageQueues.ContainsKey(msgId))
                     {
                         m_MessageHandlers.Add(handler);
                         m_MessageQueues.Add(msgId, new Queue<MessageInfo>());
                     }
                     else
                     {
                         LogUtil.Error("Story {0} DSL, onmessage {1} duplicate, discard it !", m_Id, msgId);
                     }
                 }
                 else
                 {
                     LogUtil.Error("Story {0} DSL, onmessage must be a function !", m_Id);
                 }
             }
             else
             {
                 LogUtil.Error("Instance::Init, unknown part {0}", skill.Statements[i].GetId());
             }
         }
     }
     else
     {
         LogUtil.Error("Instance::Init, isn't story DSL");
     }
     //LogSystem.Debug("Instance.Init message handler num:{0} {1}", m_MessageHandlers.Count, ret);
     return ret;
 }
Esempio n. 11
0
        public bool Init(ScriptableData.ScriptableDataInfo config)
        {
            bool ret = false;

            ScriptableData.FunctionData skill = config.First;
            if (null != skill && skill.GetId() == "skill")
            {
                ret = true;
                ScriptableData.CallData callData = skill.Call;
                if (null != callData && callData.HaveParam())
                {
                    m_SkillId = int.Parse(callData.GetParamId(0));
                }

                for (int i = 0; i < skill.Statements.Count; i++)
                {
                    if (skill.Statements[i].GetId() == "section")
                    {
                        ScriptableData.FunctionData sectionData = skill.Statements[i] as ScriptableData.FunctionData;
                        if (null != sectionData)
                        {
                            SkillSection section = new SkillSection();
                            section.Load(sectionData, m_SkillId);
                            m_Sections.Add(section);
                        }
                        else
                        {
                            LogSystem.Error("Skill {0} DSL, section must be a function !", m_SkillId);
                        }
                    }
                    else if (skill.Statements[i].GetId() == "onmessage")
                    {
                        ScriptableData.FunctionData sectionData = skill.Statements[i] as ScriptableData.FunctionData;
                        if (null != sectionData)
                        {
                            SkillMessageHandler handler = new SkillMessageHandler();
                            handler.Load(sectionData, m_SkillId);
                            m_MessageHandlers.Add(handler);
                        }
                        else
                        {
                            LogSystem.Error("Skill {0} DSL, onmessage must be a function !", m_SkillId);
                        }
                    }
                    else if (skill.Statements[i].GetId() == "onstop")
                    {
                        ScriptableData.FunctionData sectionData = skill.Statements[i] as ScriptableData.FunctionData;
                        if (null != sectionData)
                        {
                            m_StopSection = new SkillMessageHandler();
                            m_StopSection.Load(sectionData, m_SkillId);
                        }
                        else
                        {
                            LogSystem.Error("Skill {0} DSL, onstop must be a function !", m_SkillId);
                        }
                    }
                    else if (skill.Statements[i].GetId() == "oninterrupt")
                    {
                        ScriptableData.FunctionData sectionData = skill.Statements[i] as ScriptableData.FunctionData;
                        if (null != sectionData)
                        {
                            m_InterruptSection = new SkillMessageHandler();
                            m_InterruptSection.Load(sectionData, m_SkillId);
                        }
                        else
                        {
                            LogSystem.Error("Skill {0} DSL, oninterrupt must be a function !", m_SkillId);
                        }
                    }
                    else
                    {
                        LogSystem.Error("SkillInstance::Init, unknown part {0}", skill.Statements[i].GetId());
                    }
                }

                /*
                 * foreach (ScriptableData.ISyntaxComponent info in skill.Statements) {
                 * if (info.GetId() == "section") {
                 *  ScriptableData.FunctionData sectionData = info as ScriptableData.FunctionData;
                 *  if (null != sectionData) {
                 *    SkillSection section = new SkillSection();
                 *    section.Load(sectionData, m_SkillId);
                 *    m_Sections.Add(section);
                 *  } else {
                 *    LogSystem.Error("Skill {0} DSL, section must be a function !", m_SkillId);
                 *  }
                 * } else if (info.GetId() == "onmessage") {
                 *  ScriptableData.FunctionData sectionData = info as ScriptableData.FunctionData;
                 *  if (null != sectionData) {
                 *    SkillMessageHandler handler = new SkillMessageHandler();
                 *    handler.Load(sectionData, m_SkillId);
                 *    m_MessageHandlers.Add(handler);
                 *  } else {
                 *    LogSystem.Error("Skill {0} DSL, onmessage must be a function !", m_SkillId);
                 *  }
                 * } else if (info.GetId() == "onstop") {
                 *  ScriptableData.FunctionData sectionData = info as ScriptableData.FunctionData;
                 *  if (null != sectionData) {
                 *    m_StopSection = new SkillMessageHandler();
                 *    m_StopSection.Load(sectionData, m_SkillId);
                 *  } else {
                 *    LogSystem.Error("Skill {0} DSL, onstop must be a function !", m_SkillId);
                 *  }
                 * } else if (info.GetId() == "oninterrupt") {
                 *  ScriptableData.FunctionData sectionData = info as ScriptableData.FunctionData;
                 *  if (null != sectionData) {
                 *    m_InterruptSection = new SkillMessageHandler();
                 *    m_InterruptSection.Load(sectionData, m_SkillId);
                 *  } else {
                 *    LogSystem.Error("Skill {0} DSL, oninterrupt must be a function !", m_SkillId);
                 *  }
                 * } else {
                 *  LogSystem.Error("SkillInstance::Init, unknown part {0}", info.GetId());
                 * }
                 * }*/
            }
            else
            {
                LogSystem.Error("SkillInstance::Init, isn't skill DSL");
            }
            //LogSystem.Debug("SkillInstance.Init section num:{0} {1}", m_Sections.Count, ret);
            return(ret);
        }