Ejemplo n.º 1
0
    private IEnumerator SpawnNewToken()
    {
        yield return(new WaitForSeconds(5f));

        Token        selected        = null;
        List <Token> availableTokens = new List <Token>(this.tokens.Count);
        float        totalWeights    = 0;

        while (selected == null)
        {
            totalWeights = 0;
            availableTokens.Clear();

            foreach (var token in this.tokens)
            {
                if (!token.canBeActivated)
                {
                    continue;
                }

                availableTokens.Add(token);
                totalWeights += token.weight;
            }

            if (availableTokens.Count == 0)
            {
                yield return(new WaitForSeconds(0.5f));

                continue;
            }

            float r = Random.value * totalWeights;
            float i = 0;
            foreach (var token in availableTokens)
            {
                if (r > i && r <= i + token.weight)
                {
                    selected = token;
                    break;
                }
                else
                {
                    i += token.weight;
                }
            }
        }

        selected.Activate();
    }
Ejemplo n.º 2
0
        public Token Build()
        {
            var token = new Token(_tokenId, _userToken, _deviceOs);

            if (_active)
            {
                token.Activate();
            }
            else
            {
                token.Deactivate();
            }

            return(token);
        }