コード例 #1
0
ファイル: FreeLog.cs プロジェクト: yangfan111/CsharpCode
 private static IPara GetPara(IEventArgs args, ParaExp pe)
 {
     if (pe.GetUnit().Equals("robot"))
     {
         foreach (string key in args.GetUnitKeys())
         {
             if (key.Equals("robot"))
             {
                 IParable parable = args.GetUnit(key);
                 if (parable != null && parable.GetType().Name.Equals("FreeData"))
                 {
                     IPara para = parable.GetParameters().Get(pe.GetPara());
                     if (para != null)
                     {
                         return(para);
                     }
                 }
             }
         }
     }
     else
     {
         if (pe.GetUnit().Equals("player"))
         {
             foreach (string key in args.GetUnitKeys())
             {
                 if (!key.Equals("robot"))
                 {
                     IParable parable = args.GetUnit(key);
                     if (parable != null && parable.GetType().Name.Equals("FreeData"))
                     {
                         IPara para = parable.GetParameters().Get(pe.GetPara());
                         if (para != null)
                         {
                             return(para);
                         }
                     }
                 }
             }
         }
         else
         {
             IParable parable = args.GetUnit(pe.GetUnit());
             if (parable != null)
             {
                 return(pe.GetSourcePara(args));
             }
         }
     }
     return(null);
 }
コード例 #2
0
ファイル: GameFunc.cs プロジェクト: yangfan111/CsharpCode
        private void SetArg(FuncArg arg, IList <ArgValue> funcArgs, IEventArgs args)
        {
            ArgValue fa = GetArgValue(arg, funcArgs, args);

            if (fa != null)
            {
                IPara para = ParaUtil.GetPara(arg.GetType());
                if (para != null)
                {
                    try
                    {
                        IPara old = new ParaExp(fa.GetValue()).GetSourcePara(args);
                        if (old != null)
                        {
                            if (old.GetValue() != null)
                            {
                                para = para.Initial("=", old.GetValue().ToString());
                            }
                            else
                            {
                                para = para.Initial("=", string.Empty);
                            }
                        }
                        else
                        {
                            para = para.Initial("=", FreeUtil.ReplaceNumber(fa.GetValue(), args));
                        }
                    }
                    catch (Exception)
                    {
                        para = para.Initial("=", FreeUtil.ReplaceNumber(fa.GetValue(), args));
                    }
                    para.SetName("arg_" + arg.GetName());
                    args.GetDefault().GetParameters().TempUse(para);
                    IPara p = (IPara)para.Borrow();
                    p.SetName(arg.GetName());
                    if (para.GetValue() != null)
                    {
                        p.SetValue("=", para);
                    }
                    args.GetDefault().GetParameters().TempUse(p);
                    FreeLog.FuncArg(p.ToString());
                }
                else
                {
                    // 非简单变量
                    ((BaseEventArgs)args).TempUse(arg.GetName(), args.GetUnit(fa.GetValue()));
                }
            }
        }
コード例 #3
0
ファイル: FreeUtil.cs プロジェクト: yangfan111/common
 private string Replace(IEventArgs args, bool once)
 {
     if (!var)
     {
         return(text);
     }
     else
     {
         IList <FreeUtil.PosIndex> list = GetPos(text, '{', '}');
         if (list.Count == 0 || once)
         {
             IPara pa = new ParaExp(text).GetSourcePara(args);
             if (pa != null)
             {
                 object va = pa.GetValue();
                 if (va != null)
                 {
                     return(va.ToString());
                 }
             }
             string v = HandleSpecial(text, args);
             if (v != null)
             {
                 return(v);
             }
             StringBuilder sb = new StringBuilder();
             sb.Append(VAR_START);
             sb.Append(text);
             sb.Append(VAR_END);
             return(sb.ToString());
         }
         else
         {
             IList <FreeUtil.VarText> subs = ToVarText(text);
             StringBuilder            sb   = new StringBuilder();
             foreach (FreeUtil.VarText vt in subs)
             {
                 sb.Append(vt.Replace(args, false));
             }
             FreeUtil.VarText newVt = new FreeUtil.VarText(sb.ToString(), true);
             return(newVt.Replace(args, true));
         }
     }
 }
コード例 #4
0
ファイル: FreeLog.cs プロジェクト: yangfan111/CsharpCode
 public static void SetParas(string para)
 {
     if (enable)
     {
         paras = new List <ParaExp>();
         if (!StringUtil.IsNullOrEmpty(para))
         {
             string[] ss = StringUtil.Split(para, ",");
             foreach (string s in ss)
             {
                 ParaExp pe = new ParaExp(s);
                 paras.Add(pe);
             }
         }
         vars.Clear();
         errors.Clear();
         messages.Clear();
         funcs.Clear();
         ais.Clear();
         messageCount = 0;
     }
 }
コード例 #5
0
ファイル: FreeUtil.cs プロジェクト: yangfan111/common
        // 只有一层的变量,速度快
        private static string ReplaceOneLevelVar(string message, IEventArgs args)
        {
            string nv = message;

            string[] vs = GetVars(message);
            if (vs.Length > 0)
            {
                string temp = message;
                foreach (string v in vs)
                {
                    IPara pa = new ParaExp(v).GetSourcePara(args);
                    if (pa != null)
                    {
                        object va = pa.GetValue();
                        if (va != null)
                        {
                            temp = temp.Replace(VAR_START + v + VAR_END, va.ToString());
                        }
                    }
                }
                nv = temp;
            }
            return(nv);
        }