Beispiel #1
0
 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);
 }
Beispiel #2
0
 public IIdleAndAfterFireProcess CreateFireActionLogic(WeaponAllConfigs configs)
 {
     if (configs.NewWeaponCfg.IsSnipperType)
     {
         return(new SpecialFireAppearanceUpdater());
     }
     return(new CommonFireAppearanceUpdater());
 }
Beispiel #3
0
        public TacticWeaponLogic(int weaponId, IFreeArgs freeArgs)
        {
            _weaponConfig = SingletonManager.Get <WeaponConfigManagement>().FindConfigById(weaponId);

            if (SharedConfig.IsServer)
            {
                _unitSkill = WeaponSkillFactory.GetSkill(weaponId);
                _freeArgs  = freeArgs as ISkillArgs;
            }
        }
Beispiel #4
0
 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);
                    }
                }
            }
        }
Beispiel #8
0
 public static float GetDecayInterval(WeaponAllConfigs configs)
 {
     return(configs.S_CommonFireCfg.AttackInterval * configs.SRifleShakeCfg.DecaytimeFactor);
 }
 public IWeaponFireController GetFireController(WeaponAllConfigs configs)
 {
     return(GetFireController(configs, configs.InitAbstractLogicConfig));
 }
Beispiel #10
0
        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() + " 没有定义配件.");
                }
            }
        }