/// <summary> /// 添加武器组件控制器相关 /// </summary> /// <param name="player"></param> public static void AttachWeaponComponentBehavior(this PlayerEntity player, Contexts contexts, List <int> greandeIds) { int cookie = player.entityKey.Value.GetHashCode(); GameModuleManagement.Dispose(); GameModuleManagement.Allocate(cookie, (PlayerWeaponController controller) => { var playerWeaponAgent = new PlayerWeaponComponentsAgent(player.FindWeaponBagSetComponent, player.FindOverrideBagComponent, player.FindWeaponAuxiliaryComponent); var weaponInteract = new PlayerEntityWeaponInteract(controller, player); controller.SetOwner(player.entityKey.Value); controller.SetPlayerWeaponAgent(playerWeaponAgent); controller.SetInteract(weaponInteract); controller.SetWeaponContext(contexts.weapon); controller.SetConfigManager(contexts.session.commonSession.PlayerWeaponConfigManager); controller.SetProcessListener(player.modeLogic.ModeLogic); var helper = new GrenadeBagCacheHelper(() => { return(FindGrenadeCacheData(player)); }, greandeIds); controller.SetBagCacheHelper(EWeaponSlotType.ThrowingWeapon, helper); playerWeaponAgent.SetController(controller); controller.ResetAllComponents(); }); }
/// <summary> /// 添加武器组件控制器相关 /// </summary> /// <param name="player"></param> public static void AttachWeaponComponentBehavior(this PlayerEntity player, Contexts contexts, List <int> greandeIds) { // GameModuleManagement.Dispose(); GameModuleManagement.ForceAllocate(player.entityKey.Value.EntityId, (PlayerWeaponController controller) => { var greandeHelper = new GrenadeCacheHelper(() => { return(FindGrenadeCacheData(player)); }, () => { return(FindGrenadeWeaponEntity(player)); }, greandeIds, contexts.session.commonSession.FreeArgs); var playerWeaponAgent = new PlayerWeaponComponentsAgent(player.FindBagSetComponent, player.FindOverrideBagComponent, player.FindWeaponAuxiliaryComponent, player.FindCustomizeData); var weaponInteract = new PlayerEntityWeaponInteract(controller, player); controller.Initialize(player.entityKey.Value, playerWeaponAgent, weaponInteract, greandeHelper); //controller.SetWeaponContext(contexts.weapon); // controller.SetConfigManager(contexts.session.commonSession.PlayerWeaponResourceConfigManager); controller.SetProcessListener(player.ModeController().ProcessListener) ; controller.ResetAllComponents(); //#if UNITY_EDITOR // if (!player.hasPlayerDebug) // player.AddPlayerDebug(controller.Bag1DebugInfo,controller.Bag2DebugInfo,controller.Bag3DebugInfo,controller.Bag4DebugInfo); //#endif }); }