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 IFireLogic GetFireLogic(WeaponResConfigItem newWeaponConfig, DefaultWeaponAbstractFireFireLogicConfig config) { if (!_cache.ContainsKey(newWeaponConfig.Id)) { var defaultCfg = config as DefaultFireLogicConfig; if (null != defaultCfg) { _cache[newWeaponConfig.Id] = CreateDefaultFireLogic(newWeaponConfig, defaultCfg); } var meleeCfg = config as MeleeFireLogicConfig; if (null != meleeCfg) { _cache[newWeaponConfig.Id] = new MeleeFireLogic(meleeCfg); } var throwingCfg = config as ThrowingFireLogicConfig; if (null != throwingCfg) { _cache[newWeaponConfig.Id] = new ThrowingFireLogic( newWeaponConfig, throwingCfg, _componentsFactory); } } if (_cache.ContainsKey(newWeaponConfig.Id)) { return(_cache[newWeaponConfig.Id]); } if (newWeaponConfig.Type != (int)EWeaponType_Config.TacticWeapon) { Logger.ErrorFormat("no firelogic for weapon {0}", newWeaponConfig.Id); } return(null); }
public IBulletFireListener CreateShowFireInMap(DefaultWeaponAbstractFireFireLogicConfig config) { var defaultFireConfig = config as DefaultFireLogicConfig; if (null != defaultFireConfig) { return(new ShowFireListenerInMap(_contexts.ui)); } return(null); }
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); }
public IFireTriggger CreateFireTrigger(DefaultWeaponAbstractFireFireLogicConfig config) { var defaultFireLogicConfig = config as DefaultFireLogicConfig; if (null != defaultFireLogicConfig) { return(new DefaultFireCmdTrigger()); } var meleeFireLogicConfig = config as MeleeFireLogicConfig; if (null != meleeFireLogicConfig) { //TODO 近战武器实现 return(null); } var throwingFireLogicConfig = config as ThrowingFireLogicConfig; if (null != throwingFireLogicConfig) { //TODO 投掷武器实现 return(null); } return(null); }