public int GetReservedBullet(Entity entity, EBulletCaliber caliber) { var playerEntity = entity as PlayerEntity; switch (caliber) { case EBulletCaliber.E12No: return(playerEntity.weaponState.ReservedBullet12); case EBulletCaliber.E300Mag: return(playerEntity.weaponState.ReservedBullet300); case EBulletCaliber.E45apc: return(playerEntity.weaponState.ReservedBullet45); case EBulletCaliber.E50AE: return(playerEntity.weaponState.ReservedBullet50); case EBulletCaliber.E556mm: return(playerEntity.weaponState.ReservedBullet556); case EBulletCaliber.E762mm: return(playerEntity.weaponState.ReservedBullet762); case EBulletCaliber.E9mm: return(playerEntity.weaponState.ReservedBullet9); case EBulletCaliber.E57mm: return(playerEntity.weaponState.ReservedBullet57); default: Logger.ErrorFormat("Illegal caliber {0}", caliber); return(0); } }
public int SetReservedBullet(Entity playerEntity, EBulletCaliber caliber, int count) { var player = playerEntity as PlayerEntity; switch (caliber) { case EBulletCaliber.E12No: return(DoSetReserveBullet(ref player.weaponState.ReservedBullet12, count)); case EBulletCaliber.E300Mag: return(DoSetReserveBullet(ref player.weaponState.ReservedBullet300, count)); case EBulletCaliber.E45apc: return(DoSetReserveBullet(ref player.weaponState.ReservedBullet45, count)); case EBulletCaliber.E50AE: return(DoSetReserveBullet(ref player.weaponState.ReservedBullet50, count)); case EBulletCaliber.E556mm: return(DoSetReserveBullet(ref player.weaponState.ReservedBullet556, count)); case EBulletCaliber.E762mm: return(DoSetReserveBullet(ref player.weaponState.ReservedBullet762, count)); case EBulletCaliber.E9mm: return(DoSetReserveBullet(ref player.weaponState.ReservedBullet9, count)); case EBulletCaliber.E57mm: return(DoSetReserveBullet(ref player.weaponState.ReservedBullet57, count)); default: Logger.ErrorFormat("Illegal caliber {0}", caliber); return(0); } }
public int SetReservedBullet(IPlayerWeaponProcessor controller, EBulletCaliber caliber, int count) { var relatedAmmunition = (controller as PlayerWeaponController).RelatedAmmunition; switch (caliber) { case EBulletCaliber.E12No: return(DoSetReserveBullet(ref relatedAmmunition.ReservedBullet12, count)); case EBulletCaliber.E300Mag: return(DoSetReserveBullet(ref relatedAmmunition.ReservedBullet300, count)); case EBulletCaliber.E45apc: return(DoSetReserveBullet(ref relatedAmmunition.ReservedBullet45, count)); case EBulletCaliber.E50AE: return(DoSetReserveBullet(ref relatedAmmunition.ReservedBullet50, count)); case EBulletCaliber.E556mm: return(DoSetReserveBullet(ref relatedAmmunition.ReservedBullet556, count)); case EBulletCaliber.E762mm: return(DoSetReserveBullet(ref relatedAmmunition.ReservedBullet762, count)); case EBulletCaliber.E9mm: return(DoSetReserveBullet(ref relatedAmmunition.ReservedBullet9, count)); case EBulletCaliber.E57mm: return(DoSetReserveBullet(ref relatedAmmunition.ReservedBullet57, count)); default: //Logger.ErrorFormat("Illegal caliber {0}", caliber); return(0); } }
public int GetReservedBullet(IPlayerWeaponProcessor controller, EBulletCaliber caliber) { var relatedAmmunition = (controller as PlayerWeaponController).RelatedAmmunition; switch (caliber) { case EBulletCaliber.E12No: return(relatedAmmunition.ReservedBullet12); case EBulletCaliber.E300Mag: return(relatedAmmunition.ReservedBullet300); case EBulletCaliber.E45apc: return(relatedAmmunition.ReservedBullet45); case EBulletCaliber.E50AE: return(relatedAmmunition.ReservedBullet50); case EBulletCaliber.E556mm: return(relatedAmmunition.ReservedBullet556); case EBulletCaliber.E762mm: return(relatedAmmunition.ReservedBullet762); case EBulletCaliber.E9mm: return(relatedAmmunition.ReservedBullet9); case EBulletCaliber.E57mm: return(relatedAmmunition.ReservedBullet57); default: Logger.ErrorFormat("Illegal caliber {0}", caliber); return(0); } }
public BulletDropConfigItem GetConfigByCaliber(EBulletCaliber caliber) { if (_itemDic.ContainsKey((caliber))) { return(_itemDic[caliber]); } return(null); }
public AssetInfo GetDropEffectAsset(EBulletCaliber caliber) { var item = GetConfigByCaliber(caliber); if (null != item) { return(item.DropAsset); } Logger.ErrorFormat("Config of caliber {0} does not exist ", caliber); return(null); }
public AssetInfo GetDropModelAsset(EBulletCaliber caliber) { var item = GetConfigByCaliber(caliber); if (null != item) { return(item.ModelAsset); } return(null); }
public Entity CreateBulletEntity( int cmdSeq, int weaponId, EntityKey entityKey, int serverTime, Vector3 dir, IBulletFireInfoProviderDispatcher bulletFireInfoProviderDispatcher, BulletConfig bulletConfig, EBulletCaliber caliber) { int bulletEntityId = _entityIdGenerator.GetNextEntityId(); //var emitPost = PlayerEntityUtility.GetCameraBulletEmitPosition(playerEntity); Vector3 velocity = dir * bulletConfig.EmitVelocity; var bulletEntity = _bulletContext.CreateEntity(); float maxDistance = bulletConfig.MaxDistance; bulletEntity.AddEntityKey(new EntityKey(bulletEntityId, (int)EEntityType.Bullet)); bulletEntity.AddBulletData( velocity, 0, bulletConfig.Gravity, 0, serverTime, maxDistance, bulletConfig.PenetrableLayerCount, bulletConfig.BaseDamage, bulletConfig.PenetrableThickness, bulletConfig, bulletConfig.VelocityDecay, caliber, weaponId); var viewPosition = bulletFireInfoProviderDispatcher.GetFireViewPosition(); var emitPosition = bulletFireInfoProviderDispatcher.GetFireEmitPosition(); bulletEntity.AddPosition(viewPosition); bulletEntity.AddOwnerId(entityKey); bulletEntity.bulletData.CmdSeq = cmdSeq; bulletEntity.bulletData.StartPoint = viewPosition; bulletEntity.bulletData.EmitPoint = emitPosition; bulletEntity.bulletData.StartDir = dir; bulletEntity.isNew = true; bulletEntity.AddEmitPosition(emitPosition); bulletEntity.isFlagSyncNonSelf = true; bulletEntity.AddLifeTime(DateTime.Now, SharedConfig.BulletLifeTime); // in case user logout return(bulletEntity); }
public int SetReservedBullet(Entity playerEntity, EBulletCaliber caliber, int count) { return(count); }
public int GetReservedBullet(EBulletCaliber caliber) { return(_playerEntity.modeLogic.ModeLogic.GetReservedBullet(_playerEntity, caliber)); }
public int SetReservedBullet(EBulletCaliber caliber, int count) { return(_playerEntity.modeLogic.ModeLogic.SetReservedBullet(_playerEntity, caliber, count)); }
public int GetReservedBullet(IPlayerWeaponProcessor controller, EBulletCaliber caliber) { return(ReservedBulletHandler.GetReservedBullet(controller, caliber)); }
public int SetReservedBullet(IPlayerWeaponProcessor controller, EBulletCaliber caliber, int count) { return(ReservedBulletHandler.SetReservedBullet(controller, caliber, count)); }
private void OnHitEnvironment(PlayerEntity srcPlayer, IBulletEntity bulletEntity, RaycastHit hit) { if (srcPlayer.gamePlay.IsDead()) { _logger.InfoFormat("[hit] environment dead"); return; } ThicknessInfo thicknessInfo; EnvironmentInfo info = BulletEnvironmentUtility.GetEnvironmentInfoByHitBoxName(hit, bulletEntity.Velocity, out thicknessInfo); float damageDecayFactor = _environmentTypeConfigManager.GetDamageDecayFactorByEnvironmentType(info.Type); float energyDecayFactor = _environmentTypeConfigManager.GetEnergyDecayFactorByEnvironmentType(info.Type); float oldThickNess = bulletEntity.PenetrableThickness; float oldDamage = bulletEntity.BaseDamage; bulletEntity.BaseDamage *= damageDecayFactor; bulletEntity.PenetrableThickness = bulletEntity.PenetrableThickness * energyDecayFactor - info.Thickness; bulletEntity.PenetrableLayerCount -= info.LayerCount; if (bulletEntity.PenetrableLayerCount <= 0 || bulletEntity.PenetrableThickness <= 0) { bulletEntity.IsValid = false; } else { bulletEntity.AddPenetrateInfo(info.Type); } EBulletCaliber caliber = bulletEntity.Caliber; //根据口径 var collider = hit.collider; var fracturedHittable = collider.GetComponent <FracturedHittable>(); if (fracturedHittable != null) { EntityKey?hittedObjectKey = null; var script = fracturedHittable.gameObject.GetComponent <FracturedHittable>(); if (script == null) { return; } var objtype = MapObjectUtility.GetGameObjType(script.Owner); if (objtype < 0) { return; } var rawObjKey = MapObjectUtility.GetGameObjId(script.Owner); if (rawObjKey != Int32.MinValue && !SharedConfig.IsServer && MapObjectUtility.GetMapObjectByGameObject(script.Owner) == null) { MapObjectUtility.SendCreateMapObjMsg(objtype, rawObjKey); _logger.InfoFormat("CreateMapObjEvent: type:{0}, obj:{1}, num:{2}", (ETriggerObjectType)objtype, fracturedHittable.gameObject, srcPlayer.uploadEvents.Events.Events[EEventType.CreateMapObj].Count); } FracturedAbstractChunk fracturedChunk = null; fracturedChunk = fracturedHittable.Hit(hit.point, hit.normal); if (fracturedHittable.HasBulletHole && fracturedChunk != null) { ClientEffectFactory.CreateHitFracturedChunkEffect(_contexts.clientEffect, _entityIdGenerator, hit.point, srcPlayer.entityKey.Value, hittedObjectKey.Value, fracturedChunk.ChunkId, hit.point - fracturedChunk.transform.position, hit.normal); } srcPlayer.statisticsData.Statistics.ShootingSuccCount++; if (fracturedHittable.HasBulletHole && fracturedChunk != null && bulletEntity.IsValid && thicknessInfo.Thickness > 0) { ClientEffectFactory.CreateHitFracturedChunkEffect(_contexts.clientEffect, _entityIdGenerator, thicknessInfo.OutPoint, srcPlayer.entityKey.Value, hittedObjectKey.Value, fracturedChunk.ChunkId, thicknessInfo.OutPoint - fracturedChunk.transform.position, thicknessInfo.Normal); } } else { ClientEffectFactory.AdHitEnvironmentEffectEvent(srcPlayer, hit.point, hit.normal, info.Type); if (bulletEntity.IsValid && thicknessInfo.Thickness > 0) { ClientEffectFactory.AdHitEnvironmentEffectEvent(srcPlayer, thicknessInfo.OutPoint, thicknessInfo.Normal, info.Type); } } _logger.InfoFormat("[hit]bullet from {0} hit environment {1}, collier {2}, base damage {3}->{4}, penetrable thick {5}->{6}, env ({7}), remain layer {8}", bulletEntity.OwnerEntityKey, hit.point, hit.collider.name, oldDamage, bulletEntity.BaseDamage, oldThickNess, bulletEntity.PenetrableThickness, info, bulletEntity.PenetrableLayerCount); }
public int GetReservedBullet(EBulletCaliber caliber) { return(ModeController.GetReservedBullet(this, caliber)); }
public int Model_SetReservedBullet(EBulletCaliber caliber, int count) { return(entity.modeLogic.ModeLogic.SetReservedBullet(entity, caliber, count)); }
public int Model_GetReserveBullet(EBulletCaliber caliber) { return(entity.modeLogic.ModeLogic.GetReservedBullet(entity, caliber)); }
public int SetReservedBullet(Entity playerEntity, EBulletCaliber caliber, int count) { return(_reservedBulletLogic.SetReservedBullet(playerEntity, caliber, count)); }
public int GetReservedBullet(Entity playerEntity, EBulletCaliber caliber) { return(0); }
public int GetReservedBullet(EBulletCaliber caliber) { return(controller.GetReservedBullet(caliber)); }
public int GetReservedBullet(Entity playerEntity, EBulletCaliber caliber) { return(_reservedBulletLogic.GetReservedBullet(playerEntity, caliber)); }
public int SetReservedBullet(EBulletCaliber caliber, int count) { return(ModeController.SetReservedBullet(this, caliber, count)); }
private void OnHitEnvironment(PlayerEntity srcPlayer, IBulletEntity bulletEntity, RaycastHit hit) { ThicknessInfo thicknessInfo; EnvironmentInfo info = BulletEnvironmentUtility.GetEnvironmentInfoByHitBoxName(hit, bulletEntity.Velocity, out thicknessInfo); float damageDecayFactor = _environmentTypeConfigManager.GetDamageDecayFactorByEnvironmentType(info.Type); float energyDecayFactor = _environmentTypeConfigManager.GetEnergyDecayFactorByEnvironmentType(info.Type); float oldThickNess = bulletEntity.PenetrableThickness; float oldDamage = bulletEntity.BaseDamage; bulletEntity.BaseDamage *= damageDecayFactor; bulletEntity.PenetrableThickness = bulletEntity.PenetrableThickness * energyDecayFactor - info.Thickness; bulletEntity.PenetrableLayerCount -= info.LayerCount; if (bulletEntity.PenetrableLayerCount <= 0 || bulletEntity.PenetrableThickness <= 0) { bulletEntity.IsValid = false; } else { bulletEntity.AddPenetrateInfo(info.Type); } EBulletCaliber caliber = bulletEntity.Caliber; //根据口径 var collider = hit.collider; var fracturedHittable = collider.GetComponent <FracturedHittable>(); if (fracturedHittable != null) { EntityKey?hittedObjectKey = null; var sceneObjectEntity = MapObjectUtility.GetMapObjectOfFracturedHittable(fracturedHittable); if (sceneObjectEntity != null) { hittedObjectKey = sceneObjectEntity.entityKey.Value; } else { var mapObjectEntity = MapObjectUtility.GetMapObjectOfFracturedHittable(fracturedHittable); if (mapObjectEntity != null) { hittedObjectKey = mapObjectEntity.entityKey.Value; } } FracturedAbstractChunk fracturedChunk = null; if (null != hittedObjectKey) { fracturedChunk = fracturedHittable.Hit(hit.point, hit.normal); if (fracturedHittable.HasBulletHole && fracturedChunk != null) { ClientEffectFactory.CreateHitFracturedChunkEffect( _contexts.clientEffect, _entityIdGenerator, hit.point, srcPlayer.entityKey.Value, hittedObjectKey.Value, fracturedChunk.ChunkId, hit.point - fracturedChunk.transform.position, hit.normal); } srcPlayer.statisticsData.Statistics.ShootingSuccCount++; } else { _logger.ErrorFormat("no entity reference attached to {0}", fracturedHittable.name); } if (fracturedHittable.HasBulletHole && fracturedChunk != null && bulletEntity.IsValid && thicknessInfo.Thickness > 0) { ClientEffectFactory.CreateHitFracturedChunkEffect(_contexts.clientEffect, _entityIdGenerator, thicknessInfo.OutPoint, srcPlayer.entityKey.Value, hittedObjectKey.Value, fracturedChunk.ChunkId, thicknessInfo.OutPoint - fracturedChunk.transform.position, thicknessInfo.Normal); } } else { ClientEffectFactory.AdHitEnvironmentEffectEvent(srcPlayer, hit.point, hit.normal, info.Type); if (bulletEntity.IsValid && thicknessInfo.Thickness > 0) { ClientEffectFactory.AdHitEnvironmentEffectEvent(srcPlayer, thicknessInfo.OutPoint, thicknessInfo.Normal, info.Type); } } _logger.DebugFormat( "bullet from {0} hit environment {1}, collier {2}, base damage {3}->{4}, penetrable thick {5}->{6}, env ({7}), remain layer {8}", bulletEntity.OwnerEntityKey, hit.point, hit.collider.name, oldDamage, bulletEntity.BaseDamage, oldThickNess, bulletEntity.PenetrableThickness, info, bulletEntity.PenetrableLayerCount); DamageInfoDebuger.OnEnvironmentHit(_contexts.player, _damager, _damageInfoCollector); }