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), }); }
public void Initialize(BubbleFactory factory, RandomBubbleDefinition definition) { this.definition = definition; CreateWeightElements(factory, definition.weights); exclusionPanel.Initialize(definition.exclusions); }
void Start() { _tr = transform; _spawner = FindObjectOfType <BubbleFactory>(); _gm = FindObjectOfType <GameManager>(); ReadLevel("lvl1"); }
private void Awake() { if (Instance == null) { Instance = this; } }
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)); }
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()); }
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)); }
void Start() { _tr = transform; _lineCreater = FindObjectOfType <LineCreater>(); _spawner = FindObjectOfType <BubbleFactory>(); _gameManager = FindObjectOfType <GameManager>(); _lineCreater.shootInfo = shootInfo; CreateNextBubble += (arg) => _gameManager.SubtractMoves(); CreateBubble(); CreateShootingBubble(); }
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; }
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)); }
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++; } } }
protected void Start() { factory = BubbleFactory.Instance; whichPosition = gameObject.GetComponent <PositionDecider>(); whichNumber = gameObject.GetComponent <INumberDecider>(); }