コード例 #1
0
ファイル: EntityAction.cs プロジェクト: Enanyy/moon
    public virtual void SetAgent(BattleEntity entity)
    {
        agent = entity;
        if (agent == null || agent.param == null)
        {
            return;
        }

        param = agent.param.GetAction(type);
        if (param != null)
        {
            weight   = param.weight;
            duration = duration == 0 ? param.duration : duration;

            var plugins = param.GetParams <EntityParamPlugin>();
            for (int i = 0; i < plugins.Count; ++i)
            {
                try
                {
                    ActionPlugin plugin = ObjectPool.GetInstance <ActionPlugin>(plugins[i].plugin);
                    if (plugin != null)
                    {
                        plugin.Init(plugins[i]);
                        plugin.agent  = agent;
                        plugin.action = this;
                        AddSubState(plugin);
                    }
                }
                catch (Exception e)
                {
                    Debug.LogError(e.Message);
                }
            }
        }
    }
コード例 #2
0
        public IEnumerable <IActionPlugin> Read()
        {
            if (!File.Exists(Path))
            {
                throw new FileNotFoundException();
            }

            var actionPlugins = new List <IActionPlugin>();

            using (var streamReader = new StreamReader(Path, System.Text.Encoding.Default))
            {
                var pattern = @"\[(.*?)\]";
                var rgx     = new Regex(pattern, RegexOptions.IgnoreCase);

                while (streamReader.Peek() > -1)
                {
                    string operation = null, _class = null, assembly = null;

                    foreach (Match match in rgx.Matches(streamReader.ReadLine()))
                    {
                        if (match.Value.Contains(",") == false)
                        {
                            operation = match.Value.Substring(match.Value.IndexOf("[") + 1, match.Value.IndexOf("]") - 1);
                        }
                        else
                        {
                            _class   = match.Value.Split(',')[0];
                            _class   = _class.Substring(_class.IndexOf("[") + 1);
                            assembly = match.Value.Split(',')[1];
                            assembly = assembly.Substring(0, assembly.IndexOf("]"));
                        }
                    }
                    IActionPlugin actionPlugin = new ActionPlugin((TypeOperation)Enum.Parse(typeof(TypeOperation), operation), _class, assembly);

                    actionPlugins.Add(actionPlugin);
                }
            }
            return(actionPlugins);
        }
コード例 #3
0
        public IEnumerable <IActionPlugin> Read()
        {
            if (!File.Exists(Path))
            {
                throw new FileNotFoundException();
            }

            var actionPlugins = new List <IActionPlugin>();

            using (var binaryReader = new BinaryReader(new FileStream(Path, FileMode.Open)))
            {
                while (binaryReader.PeekChar() > -1)
                {
                    var operation = binaryReader.ReadString();
                    var _class    = binaryReader.ReadString();
                    var assembly  = binaryReader.ReadString();

                    IActionPlugin actionPlugin = new ActionPlugin((TypeOperation)Enum.Parse(typeof(TypeOperation), operation), _class, assembly);

                    actionPlugins.Add(actionPlugin);
                }
            }
            return(actionPlugins);
        }