public override void DoAction(IEventArgs args) { ParaList target = GetTarget(args); object source = GetSource(args); if (fields != null && source != null && target != null) { foreach (FieldPair fN in FieldPair.Parse(fields)) { string[] ffs = new string[2]; ffs[0] = fN.GetFrom(); ffs[1] = fN.GetTo(); try { FieldInfo f = ReflectionCache.GetField(source, ffs[0].Trim()); AbstractPara para = null; string type = f.GetType().Name.ToLower(); if ("long".Equals(type)) { para = new LongPara(ffs[1].Trim()); } if ("int".Equals(type)) { para = new IntPara(ffs[1].Trim()); } if ("float".Equals(type)) { para = new FloatPara(ffs[1].Trim()); } if ("double".Equals(type)) { para = new DoublePara(ffs[1].Trim()); } if ("string".Equals(type)) { para = new StringPara(ffs[1].Trim()); } if ("boolean".Equals(type)) { para = new BoolPara(ffs[1].Trim()); } if (para == null) { throw new GameConfigExpception(ffs[1].Trim() + "'s type '" + type + "' is not supported."); } para.SetValue(f.GetValue(source)); target.AddPara(para); } catch (Exception e) { throw new GameConfigExpception(fN + " is not a valid field.\n" + ExceptionUtil.GetExceptionContent(e)); } } } }
public static IPara GetPara(object obj, string field) { if (obj == null) { return(null); } FieldInfo f = GetField(obj, field); AbstractPara para = null; if (f != null) { string type = f.FieldType.Name; if (ParseUtility.IsInt64(type)) { para = new LongPara(field); } if (ParseUtility.IsInt32(type)) { para = new IntPara(field); } if (ParseUtility.IsSingle(type)) { para = new FloatPara(field); } if (ParseUtility.IsDouble(type)) { para = new DoublePara(field); } if (ParseUtility.IsString(type)) { para = new StringPara(field); } if (ParseUtility.IsBoolean(type)) { para = new BoolPara(field); } try { if (para != null) { para.SetValue(f.GetValue(obj)); } } catch (Exception e) { throw new GameConfigExpception(field + " is not a valid field.\n" + ExceptionUtil.GetExceptionContent(e)); } } return(para); }
public static void Handle(ServerRoom room, DebugCommand message, PlayerEntity player) { if (commandDic.ContainsKey(message.Command.ToLower())) { FreeLog.Reset(); IGameAction action = commandDic[message.Command.ToLower()]; if (FreeLog.IsEnable()) { FreeLog.SetTrigger(string.Format("命令行 {0}: {1}", message.Command, string.Join(" ", message.Args))); } if (commandPara == null) { commandPara = new StringPara("command", ""); } if (message.Args != null) { for (int i = 1; i <= message.Args.Length; i++) { room.FreeArgs.TempUsePara(new StringPara("arg" + i, message.Args[i - 1])); } } room.FreeArgs.TempUsePara(commandPara); room.FreeArgs.TempUse("current", (FreeData)player.freeData.FreeData); action.Act(room.FreeArgs); if (message.Command == "relive") { player.isFlagCompensation = true; } room.FreeArgs.Resume("current"); room.FreeArgs.ResumePara("command"); if (message.Args != null) { for (int i = 1; i <= message.Args.Length; i++) { room.FreeArgs.ResumePara("arg" + i); } } FreeLog.Print(); } }
public static IPara GetPara(object obj, string field) { if (obj == null) { return(null); } FieldInfo f = GetField(obj, field); AbstractPara para = null; if (f != null) { string type = f.FieldType.Name.ToLower(); if ("int64".Equals(type)) { para = new LongPara(field); } if ("int32".Equals(type)) { para = new IntPara(field); } if ("single".Equals(type)) { para = new FloatPara(field); } if ("double".Equals(type)) { para = new DoublePara(field); } if ("string".Equals(type)) { para = new StringPara(field); } if ("boolean".Equals(type)) { para = new BoolPara(field); } try { if (para != null) { para.SetValue(f.GetValue(obj)); } } catch (Exception e) { throw new GameConfigExpception(field + " is not a valid field.\n" + ExceptionUtil.GetExceptionContent(e)); } } return(para); }
public override void DoAction(IEventArgs args) { UnitPosition up = pos.Select(args); float realRadius = FreeUtil.ReplaceFloat(radius, args); float realDamage = FreeUtil.ReplaceFloat(damage, args); EUIDeadType realType = (EUIDeadType)FreeUtil.ReplaceInt(type, args); if (damagePara == null) { damagePara = new FloatPara("damage", realDamage); disPara = new FloatPara("dis", 0f); typePara = new StringPara("type", FreeUtil.ReplaceVar(type, args)); } if (up != null) { var bombPos = new Vector3(up.GetX(), up.GetY(), up.GetZ()); var colliders = Physics.OverlapSphere(bombPos, realRadius, UnityLayerManager.GetLayerMask(EUnityLayerName.Player) | UnityLayerManager.GetLayerMask(EUnityLayerName.UserInputRaycast) | UnityLayerManager.GetLayerMask(EUnityLayerName.Vehicle) | UnityLayerManager.GetLayerMask(EUnityLayerName.Glass)); foreach (var collider in colliders) { float trueDamage = CalculateBombDamage(collider.transform, bombPos, realDamage, realType); if (Logger.IsDebugEnabled) { Logger.DebugFormat("Process {0}", collider.name); } if (collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.Player)) { HandlePlayer(collider, args, args.GameContext, trueDamage, bombPos); } if (collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.UserInputRaycast)) { HandleFracturedObjects(collider.transform, bombPos, trueDamage); } if (collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.Vehicle)) { HandleVehicle(collider.transform, trueDamage); } if (collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.Glass)) { HandleGlass(collider.transform); } } } }
public void HandleFreeEvent(Contexts room, PlayerEntity player, SimpleProto message) { if (message.Key == 1) { if (_eventKey == null) { _eventKey = new StringPara("event", ""); } if (!this.args.Triggers.IsEmpty(FreeTriggerConstant.CLICK_IMAGE)) { _eventKey.SetValue(message.Ss[0]); args.TempUsePara(_eventKey); this.args.Triggers.Trigger(FreeTriggerConstant.CLICK_IMAGE, args); args.ResumePara("event"); } } }
public override void DoAction(IEventArgs args) { FreeRuleEventArgs fr = (FreeRuleEventArgs)args; IGameUnit player = GetPlayer(args); if (player != null) { FreeData fd = (FreeData)player; try { ItemPosition currentItem = fd.freeInventory.GetCurrentItem(); if (!StringUtil.IsNullOrEmpty(cat)) { currentItem = fd.freeInventory.GetCurrentItem(FreeUtil.ReplaceVar(cat, args)); } if (currentItem != null) { currentItem.GetInventory().RemoveItem(fr, currentItem); if (drop != null) { fr.TempUse("item", currentItem.GetKey()); drop.Act(args); fr.Resume("item"); } } } catch (Exception e) { StringPara sp = new StringPara("message", e.Message); args.GetDefault().GetParameters().TempUse(sp); if (message != null) { message.Act(args); } args.GetDefault().GetParameters().Resume("message"); } } }
public virtual void Draw(SimpleInventoryUI ui, IEventArgs args, ItemInventory inventory, ItemPosition ip) { this.inventory = inventory; if (fui == null) { fui = new FreeUICreateAction(); Sharpen.Collections.AddAll(fui.GetComponents(), components); } ip.GetParameters().AddPara(new StringPara("inventory", inventory.GetName())); StringPara img = new StringPara("img", string.Empty); StringPara itemName = new StringPara("name", string.Empty); IntPara count = new IntPara("count", 0); args.GetDefault().GetParameters().TempUse(img); args.GetDefault().GetParameters().TempUse(count); args.GetDefault().GetParameters().TempUse(itemName); img.SetValue(ip.GetKey().GetImg()); count.SetValue(ip.GetCount()); itemName.SetValue(ip.GetKey().GetName()); FreeImageComponet back = GetBackground(); if (ui.nomouse) { back.SetNoMouse("true"); } if (ui.itemFixed) { back.SetFixed("true"); } int startX = GetX(args, ui, ip, back); int startY = GetY(args, ui, ip, back); if (!StringUtil.IsNullOrEmpty(notused) && !StringUtil.IsNullOrEmpty(used)) { if (ip.IsUsed()) { back.SetUrl(used); } else { back.SetUrl(notused); } } back.SetX(startX.ToString()); back.SetY(startY.ToString()); back.SetRelative(ui.relative); back.SetEvent(inventory.GetName() + "," + ip.GetX() + "," + ip.GetY()); FreeImageComponet itemImg = back; FreeImageComponet secondComponent = GetItemImage(); if (secondComponent != null) { back.SetEvent(string.Empty); itemImg = secondComponent; } if (ui.nomouse) { itemImg.SetNoMouse("true"); } if (ui.itemFixed) { itemImg.SetFixed("true"); } itemImg.SetUrl(ip.GetKey().GetImg()); itemImg.SetOriginalSize(ip.GetKey().GetItemWidth() + "," + ip.GetKey().GetItemHeight()); if (itemImg == back) { AdjustSize(args, ui, ip, inventory, back, itemImg, startX, startY); } else { AdjustSize(args, ui, ip, inventory, back, itemImg, 0, 0); } SetCount(ip); fui.SetKey(ip.GetUIKey()); fui.SetShow(inventory.IsOpen()); fui.SetScope(1); fui.SetPlayer("current"); fui.Act(args); UpdateHotKey(ui, args, ip); args.GetDefault().GetParameters().Resume("img"); args.GetDefault().GetParameters().Resume("name"); args.GetDefault().GetParameters().Resume("count"); }