public TargetSpawnData CalculateTargetSpawnDataByTargetType() { int[] spawnValueByTargetType = GetSpawnValueByTargetType(); int[] numToCreateByTargetType = GetNumberToCreateByTargetType(spawnValueByTargetType); int typeIndex = 0; List <TargetSpawnData.Entry> entriesList = new List <TargetSpawnData.Entry>(); foreach (TargetSpawnDataInput input in thisDataInput) { TargetType targetType = input.targetType; int numToCreate = numToCreateByTargetType[typeIndex]; IShootingTargetReserve reserve = input.reserve; IShootingTargetSpawnPoint[] spawnPoints = CreateSpawnPoints(input.spawnPointGroupAdaptor); TargetSpawnData.Entry entry = new TargetSpawnData.Entry( targetType, numToCreate, reserve, spawnPoints ); entriesList.Add(entry); typeIndex++; } TargetSpawnData.Entry[] entries = entriesList.ToArray(); return(new TargetSpawnData(entries)); }
IShootingTargetReserve[] CollectRareTargetReserves() { List <IShootingTargetReserve> resultList = new List <IShootingTargetReserve>(); foreach (AbsShootingTargetReserveAdaptor rareTargetReserveAdaptor in rareTargetReserveAdaptors) { IShootingTargetReserve rareTargetReserve = rareTargetReserveAdaptor.GetReserve(); resultList.Add(rareTargetReserve); } return(resultList.ToArray()); }
public Entry( TargetType targetType, int numToCreate, IShootingTargetReserve reserve, IShootingTargetSpawnPoint[] spawnPoints ) { this.targetType = targetType; this.numToCreate = numToCreate; this.reserve = reserve; this.spawnPoints = spawnPoints; }
public ConstArg( IShootingTargetReserve reserve, IShootingTargetSpawnPoint point, float eventPoint, ILevelSectionShootingTargetSpawner spawner ) : base( eventPoint ) { thisReserve = reserve; thisPoint = point; thisSapwner = spawner; }
protected IShootingTargetSpawnWaypointEvent[] CreateSpawnEventsForEntry( IShootingTargetSpawnPoint[] spawnPoints, IShootingTargetReserve reserve, int[] indicesToSpawn ) { List <IShootingTargetSpawnWaypointEvent> resultList = new List <IShootingTargetSpawnWaypointEvent>(); float sumOfTargetRareProbability = GetSumOfTargetTypeRareChance( indicesToSpawn.Length, reserve.GetTargetTypeRareProbability() ); float sumOfRelativeRareChance = GetSumOfRelativeRareChance( spawnPoints, indicesToSpawn ); foreach (int spawnPointIndex in indicesToSpawn) { IShootingTargetSpawnPoint spawnPoint = spawnPoints[spawnPointIndex]; IShootingTargetReserve resultReserve = reserve; float rareProbability = GetRareProbability( spawnPoint.GetRelativeRareChance(), sumOfRelativeRareChance, sumOfTargetRareProbability ); bool isRare = false; if (this.ShouldSpawnRare(rareProbability)) { isRare = true; IShootingTargetReserve rareTargetReserve = GetRareTargetReserve(reserve.GetTargetType()); int currentTier = reserve.GetTier(); rareTargetReserve.SetTier(currentTier); resultReserve = rareTargetReserve; } else { resultReserve = reserve; } float eventPoint = spawnPoint.GetEventPoint(); ShootingTargetSpawnWaypointEvent.IConstArg eventConstArg = new ShootingTargetSpawnWaypointEvent.ConstArg( resultReserve, spawnPoint, eventPoint, this ); IShootingTargetSpawnWaypointEvent spawnWaypointEvent = new ShootingTargetSpawnWaypointEvent( eventConstArg ); if (isRare) { spawnWaypointEvent.MarkRare(); } resultList.Add(spawnWaypointEvent); } return(resultList.ToArray()); }