public void HandleWeaponFire(Contexts contexts, PlayerEntity player, NewWeaponConfigItem weapon) { if (!this.args.Triggers.IsEmpty(FreeTriggerConstant.WEAPON_FIRE)) { SimpleParaList dama = new SimpleParaList(); dama.AddFields(new ObjectFields(weapon)); SimpleParable sp = new SimpleParable(dama); args.TempUse("weapon", sp); args.TempUse("current", (FreeData)player.freeData.FreeData); this.args.Triggers.Trigger(FreeTriggerConstant.WEAPON_FIRE, args); args.Resume("weapon"); args.Resume("current"); } }
public override void DoAction(IEventArgs args) { if (values != null) { SimpleParaList testParaList = new SimpleParaList(); FreeData fd = GetPlayer(args); if (null != fd) { PlayerEntity player = fd.Player; var entity = args.GameContext.mapObject.GetEntityWithEntityKey(new EntityKey(player.gamePlay.UseEntityId, (int)EEntityType.MapObject)); if (null != entity && entity.hasDoorData) { testParaList.AddFields(new ObjectFields(entity.doorData)); } } SimpleParable sp = new SimpleParable(testParaList); args.TempUse("testPara", sp); args.TempUse(UnitTestConstant.Tester, GetPlayer(args)); GameTrigger trigger = FreeLog.GetTrigger(); foreach (ITestValue value in values) { TestValue tv = value.GetCaseValue(args); tv.Name = value.Name; if (!dic.ContainsKey(tv.Name)) { dic.Add(tv.Name, new List <TestValue>()); dic[tv.Name].Add(tv); } List <TestValue> list = dic[tv.Name]; if (!list[list.Count - 1].IsSame(tv)) { list.Add(tv); } } args.Resume("testPara"); args.Resume(UnitTestConstant.Tester); } }
public void SetGameMode(int mode, int mapId) { ContextsWrapper.contexts.session.serverSessionObjects.GameRule = mode; ContextsWrapper.RoomInfo.ModeId = mode; ContextsWrapper.RoomInfo.MapId = mapId; FreeRuleEventArgs args = new FreeRuleEventArgs(ContextsWrapper.contexts); ContextsWrapper.FreeArgs = args; rule = new FreeGameRule(this); SimpleParaList spl = (SimpleParaList)args.GetDefault().GetParameters(); spl.AddFields(new ObjectFields(ContextsWrapper.RoomInfo)); spl.AddPara(new BoolPara("hxMode", SharedConfig.IsHXMod)); spl.AddPara(new StringPara("version", FreeRuleConfig.GetVersion())); }
public FreeEntityData(FreeMoveEntity entity) { this._entity = entity; this.paras = new SimpleParaList(); this.paras.AddFields(new ObjectFields(this)); this.id = entity.entityKey.Value.EntityId; this.follows = new List <PlayerEntity>(); xPara = new IntPara("x", 0); yPara = new IntPara("y", 0); zPara = new IntPara("z", 0); paras.AddPara(xPara); paras.AddPara(yPara); paras.AddPara(zPara); }
public void SetGameMode(int mode) { _contexts.session.serverSessionObjects.GameRule = mode; _contexts.session.commonSession.RoomInfo.ModeId = mode; FreeRuleEventArgs args = new FreeRuleEventArgs(_contexts); _contexts.session.commonSession.FreeArgs = args; _rule = new FreeGameRule(this); RoomInfo info = _contexts.session.commonSession.RoomInfo; SimpleParaList spl = (SimpleParaList)args.GetDefault().GetParameters(); spl.AddFields(new ObjectFields(info)); }
protected void PlayerReportTrigger(GameOverPlayer gameOverPlayer, IPlayerInfo playerInfo, IFreeArgs freeArgs) { SimpleParable unit = new SimpleParable(); SimpleParaList list = new SimpleParaList(); unit.SetList(list); list.AddFields(new ObjectFields(gameOverPlayer)); list.AddFields(new ObjectFields(_dictGoPlayers)); list.AddFields(new ObjectFields(_dictPlayers)); list.AddFields(new ObjectFields(_dictLeavedPlayers)); IEventArgs args = freeArgs as IEventArgs; if (null != args) { var playerEntity = playerInfo.PlayerEntity as PlayerEntity; args.Trigger(FreeTriggerConstant.PLAYER_REPORT, new TempUnit("report", unit), new TempUnit("current", (FreeData)playerEntity.freeData.FreeData)); } }
//TODO 找到调用的位置,确认逻辑行为 public void HandleWeaponState(Contexts contexts, PlayerEntity player) { if (!this.args.Triggers.IsEmpty(FreeTriggerConstant.WEAPON_STATE)) { SimpleParaList dama = new SimpleParaList(); //dama.AddFields(new ObjectFields(state)); //dama.AddPara(new IntPara("CarryClip", state.ReservedBulletCount)); //dama.AddPara(new IntPara("Clip", state.LoadedBulletCount)); ////dama.AddPara(new IntPara("ClipType", (int)state.Caliber)); //dama.AddPara(new IntPara("id", (int)state.CurrentWeapon)); SimpleParable sp = new SimpleParable(dama); args.TempUse("state", sp); args.TempUse("current", (FreeData)player.freeData.FreeData); this.args.Triggers.Trigger(FreeTriggerConstant.WEAPON_STATE, args); args.Resume("state"); args.Resume("current"); } }
public float HandleDamage(PlayerEntity source, PlayerEntity target, PlayerDamageInfo damage) { if (damagePara == null) { damagePara = new FloatPara("damage", damage.damage); } damagePara.SetValue(Math.Min(damage.damage, target.gamePlay.CurModeHp)); if (!this.args.Triggers.IsEmpty(FreeTriggerConstant.DAMAGE)) { if (source != null) { args.TempUse("source", (FreeData)source.freeData.FreeData); } args.TempUse("target", (FreeData)target.freeData.FreeData); SimpleParaList dama = new SimpleParaList(); dama.AddFields(new ObjectFields(damage)); SimpleParable sp = new SimpleParable(dama); args.TempUse("damage", sp); args.TempUsePara(damagePara); this.args.Triggers.Trigger(FreeTriggerConstant.DAMAGE, args); if (source != null) { args.Resume("source"); } args.Resume("target"); args.Resume("damage"); args.ResumePara("damage"); } return((float)damagePara.GetValue()); }
public override void DoAction(IEventArgs args) { var msg = GameOverMessage.Allocate(); msg.HallRoomId = args.GameContext.session.commonSession.RoomInfo.HallRoomId; FreeGameRule rule = (FreeGameRule)args.Rule; foreach (PlayerEntity player in args.GameContext.player.GetInitializedPlayerEntities()) { SimpleParable sp = new SimpleParable(); SimpleParaList paras = new SimpleParaList(); sp.SetList(paras); var gameOverPlayer = GameOverPlayer.Allocate(); paras.AddFields(new ObjectFields(gameOverPlayer)); gameOverPlayer.Id = player.playerInfo.PlayerId; args.Act(action, new TempUnit[] { new TempUnit("basic", sp) }); } }
public void HandleWeaponState(Contexts contexts, PlayerEntity player, int weaponId) { if (!args.Triggers.IsEmpty(FreeTriggerConstant.WEAPON_STATE)) { SimpleParaList dama = new SimpleParaList(); dama.AddFields(new ObjectFields(player)); /*var weaponData = player.WeaponController().HeldWeaponAgent.ComponentScan; * if (!weaponData.IsSafeVailed) * return; * dama.AddPara(new IntPara("CarryClip", player.WeaponController().GetReservedBullet())); * dama.AddPara(new IntPara("Clip", weaponData.Bullet)); * var config = SingletonManager.Get<WeaponResourceConfigManager>().GetConfigById(weaponData.ConfigId); * dama.AddPara(new IntPara("ClipType", null == config ? 0 : config.Caliber));*/ dama.AddPara(new IntPara("id", weaponId)); SimpleParable sp = new SimpleParable(dama); args.TempUse("state", sp); args.TempUse("current", (FreeData)player.freeData.FreeData); args.Trigger(FreeTriggerConstant.WEAPON_STATE, new TempUnit("state", sp), new TempUnit("current", (FreeData)(player).freeData.FreeData)); args.Resume("state"); args.Resume("current"); /*SimpleParaList dama = new SimpleParaList(); * //dama.AddFields(new ObjectFields(state)); * //dama.AddPara(new IntPara("CarryClip", state.ReservedBulletCount)); * //dama.AddPara(new IntPara("Clip", state.LoadedBulletCount)); * ////dama.AddPara(new IntPara("ClipType", (int)state.Caliber)); * //dama.AddPara(new IntPara("id", (int)state.CurrentWeapon)); * SimpleParable sp = new SimpleParable(dama); * args.TempUse("state", sp); * args.TempUse("current", (FreeData)player.freeData.FreeData); * * this.args.Triggers.Trigger(FreeTriggerConstant.WEAPON_STATE, args); * * args.Resume("state"); * args.Resume("current");*/ } }
private void StartFlying(PlayerEntity playerEntity, ThrowingEntity throwingEntity) { var dir = BulletDirUtility.GetThrowingDir(playerEntity.WeaponController()); Vector3 vel = dir * throwingEntity.throwingData.InitVelocity; Vector3 pos = PlayerEntityUtility.GetThrowingEmitPosition(playerEntity.WeaponController()); throwingEntity.position.Value = pos; throwingEntity.throwingData.Velocity = vel; throwingEntity.throwingData.IsFly = true; if (SharedConfig.IsServer) { IEventArgs args = (IEventArgs)_contexts.session.commonSession.FreeArgs; if (!args.Triggers.IsEmpty((int)EGameEvent.WeaponState)) { SimpleParaList dama = new SimpleParaList(); //TODO 确认逻辑 dama.AddFields(new ObjectFields(playerEntity)); var weaponData = playerEntity.WeaponController().HeldWeaponAgent.ComponentScan; if (!weaponData.IsSafeVailed) { return; } dama.AddPara(new IntPara("CarryClip", playerEntity.WeaponController().GetReservedBullet())); dama.AddPara(new IntPara("Clip", weaponData.Bullet)); var config = SingletonManager.Get <WeaponResourceConfigManager>().GetConfigById(weaponData.ConfigId); dama.AddPara(new IntPara("ClipType", null == config ? 0 : config.Caliber)); dama.AddPara(new IntPara("id", weaponData.ConfigId)); SimpleParable sp = new SimpleParable(dama); args.Trigger((int)EGameEvent.WeaponState, new TempUnit("state", sp), new TempUnit("current", (FreeData)(playerEntity).freeData.FreeData)); } } //清理状态 CastGrenade(_contexts, playerEntity); }
public FreeGameRule(ServerRoom room) { this.args = (FreeRuleEventArgs)room.RoomContexts.session.commonSession.FreeArgs; this.mapId = room.RoomContexts.session.commonSession.RoomInfo.MapId; this.ruleId = room.RoomContexts.session.commonSession.RoomInfo.ModeId; this.Room = room; RandomUtil.SetSeed(RandomUtil.Random(1, 10000000)); SendMessageAction.sender = new FreeMessageSender(); try { string rule = RuleMap.GetRuleName(ruleId); FreeRuleConfig config = FreeRuleConfig.GetRule(rule, SingletonManager.Get <ServerFileSystemConfigManager>().BootConfig.Mysql); args.Triggers.Merge(config.Triggers); args.ComponentMap = config.GameComponentMap; args.AddDefault(this); args.Functions.Merge(config.Functions); args.rule = this; args.FreeContext.TestCase.Merge(config.Triggers); AddCommonTrigger(); } catch (Exception e) { Debug.LogError("加载模式" + RuleMap.GetRuleName(ruleId) + "失败.\n" + e.Message); _logger.Error("加载模式" + RuleMap.GetRuleName(ruleId) + "失败.\n", e); } this.paras = new SimpleParaList(); paras.AddFields(new ObjectFields(this)); this.paras.AddPara(new IntPara(StatePara, 0)); this.paras.AddPara(new IntPara(EnterPara, 0)); }
public ObjectUnit(object obj) { this.obj = obj; list = new SimpleParaList(); list.AddFields(new ObjectFields(obj)); }