private void DetermineDeploymentPointType() { if (this._isBreachSideDeploymentPoint) { this._deploymentPointType = DeploymentPoint.DeploymentPointType.Breach; } else if (this._weapons.Any <SynchedMissionObject>((Func <SynchedMissionObject, bool>)(w => w is BatteringRam))) { this._deploymentPointType = DeploymentPoint.DeploymentPointType.BatteringRam; this.DeploymentTargetPosition = (this._weapons.First <SynchedMissionObject>((Func <SynchedMissionObject, bool>)(w => w is BatteringRam)) as IPrimarySiegeWeapon).TargetCastlePosition.GameEntity.GlobalPosition; } else if (this._weapons.Any <SynchedMissionObject>((Func <SynchedMissionObject, bool>)(w => w is SiegeTower))) { SiegeTower tower = this._weapons.FirstOrDefault <SynchedMissionObject>((Func <SynchedMissionObject, bool>)(w => w is SiegeTower)) as SiegeTower; this._deploymentPointType = DeploymentPoint.DeploymentPointType.TowerLadder; this.DeploymentTargetPosition = tower.TargetCastlePosition.GameEntity.GlobalPosition; this._associatedSiegeLadders = Mission.Current.ActiveMissionObjects.FindAllWithType <SiegeLadder>().Where <SiegeLadder>((Func <SiegeLadder, bool>)(sl => sl.WeaponSide == tower.WeaponSide)).ToList <SiegeLadder>(); } else { this._deploymentPointType = DeploymentPoint.DeploymentPointType.Ranged; this.DeploymentTargetPosition = Vec3.Invalid; } Action <DeploymentPoint> pointTypeDetermined = this.OnDeploymentPointTypeDetermined; if (pointTypeDetermined == null) { return; } pointTypeDetermined(this); }
private void SetBreachSideDeploymentPoint() { this._isBreachSideDeploymentPoint = true; this._deploymentPointType = DeploymentPoint.DeploymentPointType.Breach; FormationAI.BehaviorSide deploymentPointSide = (this._weapons.FirstOrDefault <SynchedMissionObject>((Func <SynchedMissionObject, bool>)(w => w is SiegeTower)) as IPrimarySiegeWeapon).WeaponSide; this.AssociatedWallSegment = Mission.Current.ActiveMissionObjects.FindAllWithType <WallSegment>().FirstOrDefault <WallSegment>((Func <WallSegment, bool>)(ws => ws.DefenseSide == deploymentPointSide)); this.DeploymentTargetPosition = this.AssociatedWallSegment.GameEntity.GlobalPosition; }