//Creates an empty round for tension building
    public RoundDefinition GenerateEmptyRound(int numberOfAvailableSlots, int duration)
    {
        RoundDefinition result = new RoundDefinition();

        result.duration     = duration;
        result.isFinalRound = false;

        result.orderedSlotDefinitions = new List <RoundDefinition.SlotDefinition>();

        for (int i = 0; i < numberOfAvailableSlots; i++)
        {
            result.orderedSlotDefinitions.Add(null);
        }

        return(result);
    }
    //Always fill all slots in the final round
    public RoundDefinition GenerateFinalRound(int numberOfAvailableSlots)
    {
        RoundDefinition result = new RoundDefinition();

        result.duration     = roundDuration;
        result.isFinalRound = true;

        result.orderedSlotDefinitions = new List <RoundDefinition.SlotDefinition>();

        for (int i = 0; i < numberOfAvailableSlots; i++)
        {
            RoundDefinition.SlotDefinition slotDefinition = slotDefinitionGenerator.GenerateSlotDefinition(targetTypeCollection, weightSum);
            result.orderedSlotDefinitions.Add(slotDefinition);
        }

        return(result);
    }
    public RoundDefinition GenerateRound(int roundNumber, int numberOfAvailableSlots)
    {
        RoundDefinition result = new RoundDefinition();

        result.duration     = roundDuration;
        result.isFinalRound = false;

        result.orderedSlotDefinitions = new List <RoundDefinition.SlotDefinition>(numberOfAvailableSlots);

        int numberOfSlotsToUse = Random.Range(1, numberOfAvailableSlots + 1);

        int[] indices = new int[numberOfAvailableSlots];
        for (int i = 0; i < numberOfAvailableSlots; i++)
        {
            indices[i] = i;
        }

        SelectIndicesToUse(ref indices, numberOfSlotsToUse, numberOfAvailableSlots);

        for (int k = 0; k < numberOfAvailableSlots; k++)
        {
            bool useSlot = false;

            for (int l = 0; l < numberOfAvailableSlots; l++)
            {
                if (indices[l] == k)
                {
                    useSlot = l < numberOfSlotsToUse;
                    break;
                }
            }

            if (useSlot)
            {
                RoundDefinition.SlotDefinition slotDefinition = slotDefinitionGenerator.GenerateSlotDefinition(targetTypeCollection, weightSum);
                result.orderedSlotDefinitions.Add(slotDefinition);
            }
            else
            {
                result.orderedSlotDefinitions.Add(null);
            }
        }

        return(result);
    }
Esempio n. 4
0
 public void ExecuteRound(RoundDefinition roundDefinition)
 {
     LoadTargets(roundDefinition.orderedSlotDefinitions);
     ShowTargets();
     timer.StartTimer(roundDefinition.duration - TargetMoveBehaviour.maxMoveTime, HideTargets);
 }