Exemplo n.º 1
0
        /// <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
            });
        }