public IWeaponFireController GetFireController(WeaponAllConfigs configs, DefaultWeaponAbstractFireFireLogicConfig config) { if (!_cache.ContainsKey(configs.S_Id)) { var defaultCfg = config as DefaultFireLogicConfig; if (null != defaultCfg) { _cache[configs.S_Id] = CreateCommonFireController(configs, defaultCfg); } var meleeCfg = config as MeleeFireLogicConfig; if (null != meleeCfg) { _cache[configs.S_Id] = new MeleeWeaponFireController(meleeCfg); } var throwingCfg = config as ThrowingFireLogicConfig; if (null != throwingCfg) { _cache[configs.S_Id] = new ThrowingWeaponFireController( throwingCfg, _scriptUtil.CreateThrowingFactory(configs.NewWeaponCfg, throwingCfg.Throwing)); } } if (_cache.ContainsKey(configs.S_Id)) { return(_cache[configs.S_Id]); } if (configs.NewWeaponCfg.Type != (int)EWeaponType_Config.TacticWeapon) { Logger.ErrorFormat("no firelogic for weapon {0}", configs.S_Id); } return(null); }
public IIdleAndAfterFireProcess CreateFireActionLogic(WeaponAllConfigs configs) { if (configs.NewWeaponCfg.IsSnipperType) { return(new SpecialFireAppearanceUpdater()); } return(new CommonFireAppearanceUpdater()); }
public TacticWeaponLogic(int weaponId, IFreeArgs freeArgs) { _weaponConfig = SingletonManager.Get <WeaponConfigManagement>().FindConfigById(weaponId); if (SharedConfig.IsServer) { _unitSkill = WeaponSkillFactory.GetSkill(weaponId); _freeArgs = freeArgs as ISkillArgs; } }
public IFireChecker CreateFireModeChecker(WeaponAllConfigs configs) { if (configs.S_DefaultFireModeLogicCfg == null) { return(null); } if (configs.NewWeaponCfg.IsSnipperType) { return(new SpecialFireModeChecker()); } return(new FireModeChecker()); }
public IWeaponFireController GetFireController(WeaponAllConfigs configs, DefaultWeaponAbstractFireFireLogicConfig config) { IWeaponFireController v = null; if (_cache.TryGetValue(configs.S_Id, out v)) { return(_cache[configs.S_Id]); } var defaultCfg = config as DefaultFireLogicConfig; if (null != defaultCfg) { v = CreateCommonFireController(configs, defaultCfg); _cache[configs.S_Id] = v; return(v); } var meleeCfg = config as MeleeFireLogicConfig; if (null != meleeCfg) { v = new MeleeWeaponFireController(meleeCfg); _cache[configs.S_Id] = v; return(v); } var throwingCfg = config as ThrowingFireLogicConfig; if (null != throwingCfg) { v = new ThrowingWeaponFireController(throwingCfg, configs.NewWeaponCfg); _cache[configs.S_Id] = v; return(v); } if (configs.NewWeaponCfg.Type != (int)EWeaponType_Config.TacticWeapon) { Logger.ErrorFormat("no firelogic for weapon {0}", configs.S_Id); } return(null); }
private IWeaponFireController CreateCommonFireController(WeaponAllConfigs allConfigs, DefaultFireLogicConfig config) { var fireLogic = new CommonWeaponFireController(); fireLogic.RegisterProcessor(_scriptUtil.CreateAccuracyCalculator(config.AccuracyLogic)); fireLogic.RegisterProcessor(_scriptUtil.CreateSpreadProcessor(config.SpreadLogic)); fireLogic.RegisterProcessor(_scriptUtil.CreateShakeProcessor(config.Shake)); fireLogic.RegisterProcessor(_scriptUtil.CreateEffectManager(allConfigs.S_EffectConfig)); fireLogic.RegisterProcessor(_scriptUtil.CreateFireModeChecker(allConfigs)); fireLogic.RegisterProcessor(_scriptUtil.CreateFireModeUpdater(config.FireModeLogic)); fireLogic.RegisterProcessor(_scriptUtil.CreateFireActionLogic(allConfigs)); fireLogic.RegisterProcessor(_scriptUtil.CreateFireBulletCounter(config.FireCounter)); fireLogic.RegisterProcessor(_scriptUtil.CreateAutoFireProcessor(config.FireModeLogic)); fireLogic.RegisterProcessor(_scriptUtil.CreateBulletFireListener(config.Bullet)); fireLogic.RegisterProcessor(_scriptUtil.CreateSpecialReloadChecker(config.Basic)); fireLogic.RegisterProcessor(_scriptUtil.CreateFireTrigger(config)); fireLogic.RegisterProcessor(_scriptUtil.CreateShowFireInMap(config)); return(fireLogic); }
public override void DoAction(IEventArgs args) { FreeData fd = (FreeData)args.GetUnit("target"); if (fd != null) { SimpleParable damage = (SimpleParable)args.GetUnit("damage"); if (damage != null) { PlayerDamageInfo info = (PlayerDamageInfo)damage.GetFieldObject(0); WeaponAllConfigs configs = SingletonManager.Get <WeaponConfigManagement>().FindConfigById(info.weaponId); if (configs != null) { int time = configs.InitWeaponAllConfig.RigidityDuration; int per = configs.InitWeaponAllConfig.RigidityEffect; fd.EffectBufs.AddEffect(RigidityEffect, (float)per / 100, time, args); } } } }
public static float GetDecayInterval(WeaponAllConfigs configs) { return(configs.S_CommonFireCfg.AttackInterval * configs.SRifleShakeCfg.DecaytimeFactor); }
public IWeaponFireController GetFireController(WeaponAllConfigs configs) { return(GetFireController(configs, configs.InitAbstractLogicConfig)); }
private void redrawPart(ItemInventory inventory, ISkillArgs args, ItemPosition ip, FreeData fd) { if (inventory.name == ChickenConstant.BagPrimeWeapon || inventory.name == ChickenConstant.BagSecondaryWeapon || inventory.name == ChickenConstant.BagPistolWeapon) { int id = (int)((IntPara)ip.GetParameters().Get("itemId")).GetValue(); WeaponAllConfigs configs = SingletonManager.Get <WeaponConfigManagement>().FindConfigById(id); if (configs != null) { HashSet <int> list = new HashSet <int>(); foreach (XmlConfig.EWeaponPartType part in configs.ApplyPartsSlot) { list.Add(FreeWeaponUtil.GetWeaponPart(part)); } List <string> showP = new List <string>(); List <string> hideP = new List <string>(); for (int i = 1; i <= 5; i++) { if (list.Contains(i)) { showP.Add(i.ToString()); } else { hideP.Add(i.ToString()); } } ShowPartAction show = new ShowPartAction(); show.show = true; show.SetPlayer("current"); show.SetScope(1); if (inventory.name == ChickenConstant.BagPrimeWeapon) { show.weaponKey = "1"; } else if (inventory.name == ChickenConstant.BagSecondaryWeapon) { show.weaponKey = "2"; } else { show.weaponKey = "3"; } show.parts = StringUtil.GetStringFromStrings(showP, ","); show.Act(args); show.show = false; show.parts = StringUtil.GetStringFromStrings(hideP, ","); show.Act(args); } else { Debug.LogError(ip.key.GetName() + " 没有定义配件."); } } }