Esempio n. 1
0
        public static bool MayHasPart(this EWeaponType_Config weaponType)
        {
            switch (weaponType)
            {
            case EWeaponType_Config.PrimeWeapon:
            case EWeaponType_Config.SubWeapon:
                return(true);

            default:
                return(false);
            }
        }
Esempio n. 2
0
 public static bool CanAutoPick(this EWeaponType_Config weaponType)
 {
     return(weaponType != EWeaponType_Config.ThrowWeapon);
     //switch (weaponType)
     //{
     //    case EWeaponType_Config.:
     //    case EWeaponType_Config.PrimeWeapon:
     //    case EWeaponType_Config.SubWeapon:
     //    case EWeaponType_Config.TacticWeapon:
     //        return true;
     //    default:
     //        return false;
     //}
 }
Esempio n. 3
0
        private string GetDurableTypeText(EWeaponType_Config type)
        {
            switch (type)
            {
            case EWeaponType_Config.Armor:
                return("防弹衣");

            case EWeaponType_Config.Helmet:
                return("头盔");

            default:
                return(string.Empty);
            }
        }
Esempio n. 4
0
        public virtual void AutoPickupWeapon(PlayerEntity player, List <int> sceneKeys)
        {
            for (int i = 0; i < sceneKeys.Count; i++)
            {
                SceneObjectEntity sceneEntity = sceneObjectEntityFactory.GetSceneEntity(sceneKeys[i]) as SceneObjectEntity;
                //sceneKeys.Remove(sceneKeys[i]);
                if (sceneEntity == null || !sceneEntity.hasWeaponObject)
                {
                    Logger.Warn("sceneEntity null failed");
                    return;
                }

                EWeaponType_Config configType = (EWeaponType_Config)SingletonManager.Get <WeaponResourceConfigManager>().GetConfigById(sceneEntity.weaponObject.ConfigId).Type;
                if (!configType.CanAutoPick())
                {
                    Logger.Warn("CanAutoPick failed");
                    return;
                }
                if (configType == EWeaponType_Config.TacticWeapon && !sceneEntity.IsCanPickUpByPlayer(player))
                {
                    Logger.Warn("IsCanPickUpByPlayer failed");
                    return;
                }

                var  newWeaponScan = (WeaponScanStruct)sceneEntity.weaponObject;
                bool pickupResult  = player.WeaponController().AutoPickUpWeapon(newWeaponScan);
                if (!pickupResult)
                {
                    Logger.Warn("pickupResult failed");
                    return;
                }

                sceneObjectEntityFactory.DestroySceneWeaponObjectEntity(sceneEntity.entityKey.Value);
                if (player.WeaponController().HeldConfigId == sceneEntity.weaponObject.ConfigId)
                {
                    player.stateInterface.State.PickUp();
                }

                IEventArgs args = commonSession.FreeArgs as IEventArgs;
                if (null != args)
                {
                    TriggerArgs ta = new TriggerArgs();
                    ta.AddPara(new IntPara("weaponId", sceneEntity.weaponObject.ConfigId));
                    ta.AddUnit("current", (FreeData)player.freeData.FreeData);
                    args.Trigger(FreeTriggerConstant.WEAPON_PICKUP, ta);
                }
            }
        }
        internal EWeaponSlotType GetMatchedSlotType(EWeaponType_Config weaponType)
        {
            switch (weaponType)
            {
            case EWeaponType_Config.PrimeWeapon:
                var hasPrime = !Getter.IsWeaponSlotEmpty(EWeaponSlotType.PrimeWeapon);
                if (hasPrime && Getter.ModeController.IsSlotValid(EWeaponSlotType.SecondaryWeapon))
                {
                    return(EWeaponSlotType.SecondaryWeapon);
                }
                return(EWeaponSlotType.PrimeWeapon);

            default:
                return(weaponType.ToWeaponSlot());
            }
        }
Esempio n. 6
0
        int TypeToSlot(EWeaponType_Config type)
        {
            var slot = 0;

            switch (type)
            {
            case EWeaponType_Config.PrimeWeapon: slot = 1; break;

            case EWeaponType_Config.SubWeapon: slot = 3; break;

            case EWeaponType_Config.ThrowWeapon: slot = 5; break;

            case EWeaponType_Config.MeleeWeapon: slot = 4; break;
            }
            return(slot);
        }
        public void AutoPickupWeapon(PlayerEntity player, List <int> sceneKeys)
        {
            for (int i = 0; i < sceneKeys.Count; i++)
            {
                SceneObjectEntity sceneEntity = sceneObjectEntityFactory.GetSceneEntity(sceneKeys[i]) as SceneObjectEntity;
                if (sceneEntity == null || !sceneEntity.hasWeaponObject || sceneEntity.isFlagDestroy)
                {
                    continue;
                }

                EWeaponType_Config configType = (EWeaponType_Config)SingletonManager.Get <WeaponResourceConfigManager>().GetConfigById(sceneEntity.weaponObject.ConfigId).Type;
                if (!configType.CanAutoPick())
                {
                    continue;
                }

                if (configType == EWeaponType_Config.TacticWeapon && !sceneEntity.IsCanPickUpByPlayer(player))
                {
                    continue;
                }

                var  newWeaponScan = (WeaponScanStruct)sceneEntity.weaponObject;
                bool pickupResult  = player.WeaponController().AutoPickUpWeapon(newWeaponScan);
                if (!pickupResult)
                {
                    continue;
                }

                sceneObjectEntityFactory.DestroySceneWeaponObjectEntity(sceneEntity.entityKey.Value);

                if (player.WeaponController().HeldConfigId == sceneEntity.weaponObject.ConfigId && SharedConfig.IsServer)
                {
                    PlayerAnimationAction.DoAnimation(null, PlayerAnimationAction.PickUp, player, true);
                }

                IEventArgs args = commonSession.FreeArgs as IEventArgs;
                if (null != args)
                {
                    TriggerArgs ta = new TriggerArgs();
                    ta.AddPara(new IntPara("weaponId", sceneEntity.weaponObject.ConfigId));
                    ta.AddUnit("current", (FreeData)player.freeData.FreeData);
                    args.Trigger(FreeTriggerConstant.WEAPON_PICKUP, ta);
                }
            }
        }
Esempio n. 8
0
        public static EWeaponSlotType ToWeaponSlot(this EWeaponType_Config weaponType)
        {
            switch (weaponType)
            {
            case EWeaponType_Config.PrimeWeapon:
                return(EWeaponSlotType.PrimeWeapon);

            case EWeaponType_Config.SubWeapon:
                return(EWeaponSlotType.PistolWeapon);

            case EWeaponType_Config.MeleeWeapon:
                return(EWeaponSlotType.MeleeWeapon);

            case EWeaponType_Config.ThrowWeapon:
                return(EWeaponSlotType.ThrowingWeapon);

            case EWeaponType_Config.TacticWeapon:
                return(EWeaponSlotType.TacticWeapon);

            default:
                return(EWeaponSlotType.None);
            }
        }
Esempio n. 9
0
 public static bool CanAutoPick(this EWeaponType_Config weaponType)
 {
     return(weaponType != EWeaponType_Config.ThrowWeapon);
 }
Esempio n. 10
0
 public static bool CanAutoPick(this EWeaponType_Config weaponType)
 {
     return(weaponType != EWeaponType_Config.ThrowWeapon && weaponType != EWeaponType_Config.Armor && weaponType != EWeaponType_Config.Helmet);
 }