Esempio n. 1
0
 private void AddTo(string[] fields, IParable target, ParaList to)
 {
     foreach (string field in fields)
     {
         FieldPair fp = FieldPair.Parse(field)[0];
         ParaList  tp = target.GetParameters();
         if (tp.HasPara(fp.GetFrom()))
         {
             IPara para = tp.Get(fp.GetFrom());
             if (para != null)
             {
                 IPara clone = (IPara)para.Copy();
                 clone.SetName(fp.GetTo());
                 if (@override || !to.HasPara(fp.GetTo()))
                 {
                     to.AddPara(clone);
                 }
                 else
                 {
                     to.AddPara(clone);
                 }
             }
         }
     }
 }
Esempio n. 2
0
        public override void DoAction(IEventArgs args)
        {
            if (StringUtil.IsNullOrEmpty(key))
            {
                key = BaseEventArgs.DEFAULT;
            }
            IParable unit = args.GetUnit(key);

            if (unit != null)
            {
                IPara sort = unit.GetParameters().Get(sorter);
                if (sort != null && sort is ParaListSet)
                {
                    ParaListSet pls = (ParaListSet)sort;
                    IParable    pa  = Get();
                    if (action != null)
                    {
                        args.TempUse(TEMP_SORT, pa);
                        args.TempUse("element", pa);
                        action.Act(args);
                        args.Resume("element");
                        args.Resume(TEMP_SORT);
                    }
                    pls.AddParaList(pa.GetParameters());
                }
            }
        }
        public override void DoAction(IEventArgs args)
        {
            if (string.IsNullOrEmpty(player))
            {
                player = "current";
            }

            FreeRuleEventArgs fr = (FreeRuleEventArgs)args;

            PlayerEntity playerEntity = (PlayerEntity)fr.GetEntity(player);

            IParable item = args.GetUnit("item");

            if (playerEntity != null && item != null)
            {
                SimpleProto message = FreePool.Allocate();
                message.Key = FreeMessageConstant.ChangeAvatar;

                int itemId = FreeUtil.ReplaceInt("{item.itemId}", args);

                if (takeoff)
                {
                    TakeOff(playerEntity, itemId);
                }
                else
                {
                    PutOn(playerEntity, itemId);
                }

                ReduceDamageUtil.UpdateArmorAndHelmet((FreeData)playerEntity.freeData.FreeData);
            }
        }
Esempio n. 4
0
        public override void DoAction(IEventArgs args)
        {
            IParable p = null;

            if (StringUtil.IsNullOrEmpty(key))
            {
                p = args.GetDefault();
            }
            else
            {
                p = args.GetUnit(key);
            }
            if (p != null && paras != null)
            {
                foreach (ParaValue para in paras)
                {
                    if (null == para)
                    {
                        throw new GameConfigExpception("para is not a null field at " + key);
                    }
                    if (!p.GetParameters().HasPara(para.GetName()) || @override)
                    {
                        p.GetParameters().AddPara(para.GetPara(args));
                    }
                }
            }
            if (paras == null || paras.Count == 0)
            {
                _logger.Info("AddParaValueAction paras is null or count is 0 !");
            }
        }
Esempio n. 5
0
        public override void DoAction(IEventArgs args)
        {
            string from     = FreeUtil.ReplaceVar(ParaFrom, args);
            string to       = FreeUtil.ReplaceVar(ParaTo, args);
            string itemCat  = FreeUtil.ReplaceVar(ParaItemCat, args);
            int    clipType = FreeUtil.ReplaceInt(ParaClipType, args);

            IParable item = args.GetUnit(FreeArgConstant.Item);

            if (to == ChickenConstant.BagDefault && itemCat == ChickenConstant.ItemCatGrenadeWeapon)
            {
                HandleAddGrenade(args);
            }
            if (from == ChickenConstant.BagDefault && itemCat == ChickenConstant.ItemCatGrenadeWeapon)
            {
                HandleRemoveGrenade(args);
            }
            if (to == ChickenConstant.BagDefault && item.GetParameters().HasPara(ClipType))
            {
                HandleSetClip(args, clipType);
            }
            else if (from == ChickenConstant.BagDefault && item.GetParameters().HasPara(ClipType))
            {
                HandleClearClip(args, clipType);
            }

            HandleCapacity(args);
        }
Esempio n. 6
0
        public virtual IPara GetTargetPara(IEventArgs args, IPara source)
        {
            IPara replace = ExpSetParser.GetReplaceValue(unitPara.GetPara(), args);

            if (replace != null)
            {
                return(replace);
            }
            IParable p1 = args.GetUnit(unitPara.GetUnit());

            if (p1 != null)
            {
                IPara p = unitPara.GetPara(args);
                if (p == null)
                {
                    p = source.Initial(op, unitPara.GetPara());
                }
                return(p);
            }
            else
            {
                if (!StringUtil.IsNullOrEmpty(unitPara.GetUnit()))
                {
                    return(source.Initial(op, unitPara.GetUnit() + "." + unitPara.GetPara()));
                }
                else
                {
                    return(source.Initial(op, unitPara.GetPara()));
                }
            }
        }
Esempio n. 7
0
        public override void DoAction(IEventArgs args)
        {
            IParable p = null;

            if (StringUtil.IsNullOrEmpty(key))
            {
                p = args.GetDefault();
            }
            else
            {
                p = args.GetUnit(key);
            }
            if (p != null && paras != null)
            {
                foreach (IPara para in paras)
                {
                    if (!p.GetParameters().HasPara(para) || @override)
                    {
                        IPara clone = (IPara)para.Copy();
                        clone.SetName(FreeUtil.ReplaceVar(clone.GetName(), args));
                        p.GetParameters().AddPara(clone);
                    }
                }
            }
        }
Esempio n. 8
0
        public override void DoAction(IEventArgs args)
        {
            if (StringUtil.IsNullOrEmpty(key))
            {
                key = BaseEventArgs.DEFAULT;
            }
            IParable unit = args.GetUnit(key);

            if (unit != null)
            {
                IPara sort = unit.GetParameters().Get(sorter);
                if (sort != null)
                {
                    ParaListSet pls = (ParaListSet)sort;
                    if (action != null)
                    {
                        ParaListSet temp = pls.Sort(FreeUtil.ReplaceVar(exp, args));
                        temp.SetName(pls.GetName());
                        unit.GetParameters().TempUse(temp);
                        action.Act(args);
                        unit.GetParameters().Resume(temp.GetName());
                    }
                    if (!keep)
                    {
                        pls.ReOrder();
                    }
                }
            }
        }
        public override void DoAction(IEventArgs args)
        {
            if (string.IsNullOrEmpty(player))
            {
                player = "current";
            }

            FreeRuleEventArgs fr           = (FreeRuleEventArgs)args;
            PlayerEntity      playerEntity = (PlayerEntity)fr.GetEntity(player);

            IParable item = args.GetUnit("item");

            if (playerEntity != null && item != null)
            {
            }

            /*SimpleProto message = FreePool.Allocate();
             * message.Key = FreeMessageConstant.ChangeAvatar;
             *
             * int itemId = FreeUtil.ReplaceInt("{item.itemId}", args);
             *
             * playerEntity.WeaponController().PickUpWeapon(WeaponUtil.CreateScan(itemId));
             * //playerEntity.bag.Bag.SetWeaponBullet(30);
             * //playerEntity.bag.Bag.SetReservedCount(100);
             *
             * message.Ins.Add(itemId);
             *
             * message.Ks.Add(2);
             *
             * playerEntity.network.NetworkChannel.SendReliable((int)EServer2ClientMessage.FreeData, message);*/
        }
Esempio n. 10
0
        public bool RemovePara(string key, out IParable parable)
        {
            parable = null;
            switch (key)
            {
            case DEFAULT:
                defaultStack.Clear();
                parable      = defaultParas;
                defaultParas = null;
                return(true);

            case buf:
                bufStack.Clear();
                parable  = bufParas;
                bufParas = null;
                return(true);

            case creator:
                creatorStack.Clear();
                parable      = creatorParas;
                creatorParas = null;
                return(true);
            }
            return(false);
        }
Esempio n. 11
0
        public override void DoAction(IEventArgs args)
        {
            FreeRuleEventArgs fr     = (FreeRuleEventArgs)args;
            IGameUnit         player = GetPlayer(args);

            if (player != null)
            {
                IParable pa = fr.GetUnit(item);
                if (pa is ItemPosition)
                {
                    ItemPosition  ip    = (ItemPosition)pa;
                    FreeData      fd    = (FreeData)player;
                    ItemInventory toInv = fd.freeInventory.GetInventoryManager().GetInventory(FreeUtil.ReplaceVar(toInventory, args));
                    if (toInv != null)
                    {
                        int toX = 0;
                        int toY = 0;
                        if (string.IsNullOrEmpty(x) && string.IsNullOrEmpty(y))
                        {
                            int[] next = toInv.GetNextEmptyPosition(ip.GetKey());
                            toX = next[0];
                            toY = next[1];
                        }
                        else
                        {
                            toX = FreeUtil.ReplaceInt(x, args);
                            toY = FreeUtil.ReplaceInt(y, args);
                        }
                        ItemInventoryUtil.MovePosition(ip, toInv, toX, toY, fr);
                    }
                }
            }
        }
Esempio n. 12
0
        public override void DoAction(IEventArgs args)
        {
            if (StringUtil.IsNullOrEmpty(key))
            {
                key = BaseEventArgs.DEFAULT;
            }
            IParable unit = args.GetUnit(key);

            if (unit != null)
            {
                IPara sort = unit.GetParameters().Get(sorter);
                if (sort != null)
                {
                    ParaListSet      pls     = (ParaListSet)sort;
                    IList <ParaList> removes = new List <ParaList>();
                    foreach (ParaList pl in pls)
                    {
                        if (StringUtil.IsNullOrEmpty(exp) || pl.Meet(exp))
                        {
                            removes.Add(pl);
                        }
                    }
                    foreach (ParaList pl_1 in removes)
                    {
                        pls.RemoveParaList(pl_1);
                    }
                }
            }
        }
Esempio n. 13
0
 public void SendMessage(IEventArgs args, SimpleProto message, int scope, string player)
 {
     //PlayerEntity[] players = args.GameContext.player.GetInitializedPlayerEntities();
     PlayerEntity[] players = args.GameContext.player.GetEntities();
     if (scope == 4)
     {
         foreach (PlayerEntity p in players)
         {
             if (p.hasNetwork)
             {
                 p.network.NetworkChannel.SendReliable((int)EServer2ClientMessage.FreeData, message);
             }
         }
     }
     else if (scope == 1)
     {
         IParable unit = args.GetUnit(FreeUtil.ReplaceVar(player, args));
         if (unit != null)
         {
             PlayerEntity p = ((FreeData)unit).Player;
             if (p.hasNetwork)
             {
                 p.network.NetworkChannel.SendReliable((int)EServer2ClientMessage.FreeData, message);
             }
         }
     }
 }
Esempio n. 14
0
        public override void DoAction(IEventArgs args)
        {
            IParable parable = args.GetUnit(FreeUtil.ReplaceVar(var, args));

            if (parable != null)
            {
                args.SetPara(FreeUtil.ReplaceVar(name, args), parable);
            }
        }
Esempio n. 15
0
        public virtual void TempUse(string key, IParable paras)
        {
            if (!temp.ContainsKey(key))
            {
                temp[key] = new Stack <IParable>();
            }
            temp[key].Push(GetUnit(key));

            this.map[key] = paras;
        }
Esempio n. 16
0
        public static void SendMessage(IEventArgs args, string player, SimpleProto message)
        {
            IParable unit = args.GetUnit(FreeUtil.ReplaceVar(player, args));

            if (unit != null)
            {
                PlayerEntity p = ((FreeData)unit).Player;
                p.network.NetworkChannel.SendReliable((int)EServer2ClientMessage.FreeData, message);
            }
        }
Esempio n. 17
0
        public virtual void Resume(string key)
        {
            if (useArgs.Resume(key))
            {
                return;
            }

            IParable old = temp[key].Pop();

            this.map[key] = old;
        }
Esempio n. 18
0
        public PlayerEntity GetPlayer(string player)
        {
            IParable unit = GetUnit(FreeUtil.ReplaceVar(player, this));

            if (unit is FreeData)
            {
                return(((FreeData)unit).Player);
            }

            return(null);
        }
Esempio n. 19
0
 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);
 }
Esempio n. 20
0
        public virtual IParable RemovePara(string key)
        {
            IParable para = this.map[key];

            this.map.Remove(key);

            this.directMap.Remove(key);
            if (temp.ContainsKey(key))
            {
                this.temp.Remove(key);
            }

            return(para);
        }
        public override void DoAction(IEventArgs args)
        {
            FreeRuleEventArgs fr = (FreeRuleEventArgs)args;
            IParable          pe = args.GetUnit(item);

            if (pe != null && pe is FreeItem)
            {
                FreeItem fi = (FreeItem)pe;
                if (!StringUtil.IsNullOrEmpty(time))
                {
                    ((FreeGameItem)fi).SetTime(time);
                }
                fi.Drop(fr, pos.Select(args));
            }
        }
Esempio n. 22
0
        public override void DoAction(IEventArgs args)
        {
            if (string.IsNullOrEmpty(player))
            {
                player = "current";
            }

            FreeRuleEventArgs fr = (FreeRuleEventArgs)args;

            PlayerEntity playerEntity = (PlayerEntity)fr.GetEntity(player);

            IParable item = args.GetUnit("item");

            if (playerEntity != null && item != null)
            {
                EWeaponSlotType type = FreeWeaponUtil.GetSlotType(FreeUtil.ReplaceInt(weaponKey, args));

                SimpleProto message = FreePool.Allocate();
                message.Key = FreeMessageConstant.ChangeAvatar;

                int itemId = FreeUtil.ReplaceInt("{item.itemId}", args);

                if (!delete)
                {
                    playerEntity.WeaponController().SetWeaponPart(type, itemId);

                    message.Ins.Add((int)type);
                    message.Ins.Add(itemId);
                    message.Ks.Add(3);

                    FreeMessageSender.SendMessage(playerEntity, message);
                    //playerEntity.network.NetworkChannel.SendReliable((int)EServer2ClientMessage.FreeData, message);
                }
                else
                {
                    var part = SingletonManager.Get <WeaponPartsConfigManager>().GetPartType(SingletonManager.Get <WeaponPartSurvivalConfigManager>().GetDefaultPartBySetId(itemId));

                    playerEntity.WeaponController().DeleteWeaponPart(type, part);

                    message.Ins.Add((int)type);
                    message.Ins.Add((int)part);
                    message.Ks.Add(4);

                    FreeMessageSender.SendMessage(playerEntity, message);
                    //playerEntity.network.NetworkChannel.SendReliable((int)EServer2ClientMessage.FreeData, message);
                }
            }
        }
Esempio n. 23
0
        public override void DoAction(IEventArgs args)
        {
            if (StringUtil.IsNullOrEmpty(key))
            {
                key = BaseEventArgs.DEFAULT;
            }
            IParable unit = args.GetUnit(key);

            if (unit != null)
            {
                IPara sort = unit.GetParameters().Get(sorter);
                if (sort != null)
                {
                    ParaListSet pls = (ParaListSet)sort;
                    if (action != null)
                    {
                        Iterator <ParaList> it = pls.Iterator();
                        int i = 1;
                        while (it.HasNext())
                        {
                            ParaList pl = it.Next();
                            args.TempUse("element", new SimpleParable(pl));
                            args.GetDefault().GetParameters().TempUse(new IntPara("index", i++));
                            if (condition == null || condition.Meet(args))
                            {
                                if (action != null)
                                {
                                    action.Act(args);
                                }
                                if (FreeUtil.ReplaceBool(remove, args))
                                {
                                    it.Remove();
                                }
                            }
                            args.GetDefault().GetParameters().Resume("index");
                            args.Resume("element");
                        }
                        if (i == 1)
                        {
                            if (noneAction != null)
                            {
                                noneAction.Act(args);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 24
0
 private void SetArg(IEventArgs fr, long s)
 {
     foreach (string key in map[s].Keys)
     {
         IParable pa = map[s][key];
         ParaList snapshotParaList = vMap[s][key];
         if (pa != null && snapshotParaList != null)
         {
             foreach (string field in snapshotParaList.GetFields())
             {
                 pa.GetParameters().TempUse(snapshotParaList.Get(field));
             }
         }
         fr.TempUse(key, pa);
     }
 }
Esempio n. 25
0
 private void ResumeArg(IEventArgs fr, long s)
 {
     foreach (string key in map[s].Keys)
     {
         fr.Resume(key);
         IParable pa = map[s][key];
         ParaList snapshotParaList = vMap[s][key];
         if (pa != null && snapshotParaList != null)
         {
             foreach (string field in snapshotParaList.GetFields())
             {
                 pa.GetParameters().Resume(field);
             }
         }
     }
 }
Esempio n. 26
0
        public bool TempUse(string key, IParable paras)
        {
            switch (key)
            {
            case buf:
                bufStack.Push(baseEventArgs.GetUnit(key));
                bufParas = paras;
                return(true);

            case creator:
                creatorStack.Push(baseEventArgs.GetUnit(key));
                creatorParas = paras;
                return(true);
            }
            return(false);
        }
Esempio n. 27
0
        public virtual void TempUse(string key, IParable paras)
        {
            if (useArgs.TempUse(key, paras))
            {
                return;
            }

            Stack <IParable> v = null;

            if (!temp.TryGetValue(key, out v))
            {
                temp[key] = new Stack <IParable>();
            }
            temp[key].Push(GetUnit(key));

            this.map[key] = paras;
        }
Esempio n. 28
0
        public override void DoAction(IEventArgs args)
        {
            IParable pa    = args.GetUnit(key);
            IParable other = args.GetUnit(from);

            if (pa != null && other != null)
            {
                if (StringUtil.IsNullOrEmpty(fields))
                {
                    AddTo(other.GetParameters().GetFields(), other, pa.GetParameters());
                }
                else
                {
                    AddTo(StringUtil.Split(fields, ","), other, pa.GetParameters());
                }
            }
        }
Esempio n. 29
0
        public bool Resume(string key)
        {
            IParable old = null;

            switch (key)
            {
            case buf:
                old      = bufStack.Pop();
                bufParas = old;
                return(true);

            case creator:
                old          = creatorStack.Pop();
                creatorParas = old;
                return(true);
            }
            return(false);
        }
Esempio n. 30
0
        public virtual IParable GetUnit(string key)
        {
            IParable v = null;

            if (useArgs.GetUnit(key, out v))
            {
                return(v);
            }

            if (/*directMap.Count > 0 && */ directMap.TryGetValue(key, out v))
            {
                return(v);
            }
            else
            {
                return(map[key]);
            }
        }