Exemple #1
0
        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));
        }
Exemple #2
0
        IShootingTargetReserve[] CollectRareTargetReserves()
        {
            List <IShootingTargetReserve> resultList = new List <IShootingTargetReserve>();

            foreach (AbsShootingTargetReserveAdaptor rareTargetReserveAdaptor in rareTargetReserveAdaptors)
            {
                IShootingTargetReserve rareTargetReserve = rareTargetReserveAdaptor.GetReserve();
                resultList.Add(rareTargetReserve);
            }
            return(resultList.ToArray());
        }
Exemple #3
0
 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;
            }
Exemple #5
0
        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());
        }