Exemple #1
0
        static public int[] ComputeStarsForLevel(LevelData data, BubbleFactory factory)
        {
            var config = GlobalState.Instance.Config.scoring;

            ComputeRandomWeights(data);

            var popScore          = ComputePopScore(data, factory);
            var dropScore         = popScore * GlobalState.Instance.Config.scoring.dropMultiplier;
            var obstacleScore     = ComputeObstacleScore(data, factory);
            var goalScore         = ComputeGoalScore(data);
            var clusterMultiplier = ComputeMeanClusterMultiplier(data, factory);

            var baseScore = (int)Mathf.Round(popScore * config.popToDropFactor +
                                             dropScore * (1.0f - config.popToDropFactor) +
                                             obstacleScore +
                                             goalScore);

            var clusterBonus = (int)Mathf.Round((popScore * config.popToDropFactor) * (clusterMultiplier - 1.0f));

            return(new[]
            {
                popScore + obstacleScore + goalScore,
                (int)Mathf.Round(baseScore + (clusterBonus / config.secondStarDivisor)),
                (int)Mathf.Round(baseScore + clusterBonus),
            });
        }
Exemple #2
0
        public void Initialize(BubbleFactory factory, RandomBubbleDefinition definition)
        {
            this.definition = definition;

            CreateWeightElements(factory, definition.weights);
            exclusionPanel.Initialize(definition.exclusions);
        }
Exemple #3
0
 void Start()
 {
     _tr      = transform;
     _spawner = FindObjectOfType <BubbleFactory>();
     _gm      = FindObjectOfType <GameManager>();
     ReadLevel("lvl1");
 }
 private void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
     }
 }
Exemple #5
0
        static private int ComputeObstacleScore(LevelData data, BubbleFactory factory)
        {
            var obstacles = GetTypeGroup(factory, BubbleCategory.Obstacle);

            return(data.Bubbles
                   .Where(b => obstacles.Contains(b.Type))
                   .Sum(b => factory.GetDefinitionByType(b.Type).Score));
        }
Exemple #6
0
 static private List <BubbleType> GetTypeGroup(BubbleFactory factory, BubbleCategory category)
 {
     return(factory.Bubbles
            .Where(b => b.category == category)
            .Select(d => d.Type)
            .Where(t => (int)t >= 0)
            .ToList());
 }
Exemple #7
0
        static private int ComputePopScore(LevelData data, BubbleFactory factory)
        {
            var basicTypes = GetTypeGroup(factory, BubbleCategory.Basic);
            var shotScore  = (data.ShotCount * factory.GetDefinitionByType(BubbleType.Blue).Score);

            return(shotScore +
                   data.Bubbles
                   .Where(b => basicTypes.Contains(b.Type))
                   .Sum(b => factory.GetDefinitionByType(b.Type).Score));
        }
        public void Initialize(BubbleFactory factory, BubbleQueuePanel panel, BubbleQueueDefinition.Bucket bucket)
        {
            this.bucket = bucket;

            CreateWeightElements(factory, bucket.counts);

            inputField.text      = bucket.length.ToString();
            mandatoryToggle.isOn = bucket.mandatory;

            insertButton.onClick.AddListener(() => panel.InsertBucket(this));
            deleteButton.onClick.AddListener(() => panel.RemoveBucket(this));
        }
Exemple #9
0
    void Start()
    {
        _tr          = transform;
        _lineCreater = FindObjectOfType <LineCreater>();
        _spawner     = FindObjectOfType <BubbleFactory>();
        _gameManager = FindObjectOfType <GameManager>();

        _lineCreater.shootInfo = shootInfo;
        CreateNextBubble      += (arg) => _gameManager.SubtractMoves();
        CreateBubble();
        CreateShootingBubble();
    }
Exemple #10
0
        internal BubbleMatrixViewModel()
        {
            _bubblesInternal = new ObservableCollection <BubbleViewModel>();
            this.Bubbles     = new ReadOnlyObservableCollection <BubbleViewModel>(_bubblesInternal);

            this.TaskManager = new BubblesTaskManager(this);

            _bubbleFactory = new BubbleFactory(this);

            _bubbleGroup = new BubbleGroup(this.Bubbles);

            _bubbleGroupSizeStack = new Stack <int>();

            _isIdle = true;
        }
Exemple #11
0
        static private float ComputeMeanClusterMultiplier(LevelData data, BubbleFactory factory)
        {
            var   basicTypes = GetTypeGroup(factory, BubbleCategory.Basic);
            var   bubbleMap  = new Dictionary <int, float>();
            float total      = 0.0f;
            int   count      = 0;

            foreach (var type in basicTypes)
            {
                PopulateBubbleMap(bubbleMap, data, type);

                while (bubbleMap.Count > 0)
                {
                    total += ComputeClusterMultiplier(1 + (int)ExtractCluster(bubbleMap));
                    count++;
                }
            }

            return(total / Mathf.Max(1, count));
        }
Exemple #12
0
        protected void CreateWeightElements(BubbleFactory factory, int[] values)
        {
            int index = 0;

            foreach (var def in factory.Bubbles.Where(b => b.category == BubbleCategory.Basic))
            {
                var sprite = def.Prefab.GetComponentInChildren <SpriteRenderer>();

                if (sprite != null)
                {
                    var instance = Instantiate(elementPrefab);
                    var element  = instance.GetComponent <BubbleWeightElement>();

                    instance.transform.SetParent(elementContainer, false);
                    element.Initialize(values, index, def.BaseColor);

                    elements.Add(element);
                    index++;
                }
            }
        }
Exemple #13
0
 protected void Start()
 {
     factory       = BubbleFactory.Instance;
     whichPosition = gameObject.GetComponent <PositionDecider>();
     whichNumber   = gameObject.GetComponent <INumberDecider>();
 }