public void GenerateSelectableLevelFields() { if (fieldGenerator == null) { fieldGenerator = GetComponent <FieldGenerator>(); } for (int i = 0; i < levelNodeFields.Length; i++) { List <FieldGenerator.Node> nodes = fieldGenerator.GenerateField(levelNodeFields[i].FieldSize, levelNodeFields[i].LevelStartDirection, levelNodeFields[i].SpiralCounting, levelNodeFields[i].StartCountingValue, levelNodeFields[i].IsHorizontal); foreach (FieldGenerator.Node node in nodes) { Vector2 gridPosition = node.Position + levelNodeFields[i].FieldPosition; Vector2 nodePositionOffset = new Vector2(node.Position.x * levelNodeFields[i].ObjectToBuild.transform.localScale.x, node.Position.y * levelNodeFields[i].ObjectToBuild.transform.localScale.y); Vector2 fieldPositionOffset = new Vector2(levelNodeFields[i].FieldPosition.x * levelNodeFields[i].ObjectToBuild.transform.localScale.x, levelNodeFields[i].FieldPosition.y * levelNodeFields[i].ObjectToBuild.transform.localScale.y); Vector2 positionOffset = nodePositionOffset + fieldPositionOffset; Vector2 gridSpacingOffset = new Vector2(positionOffset.x * gridSpacing.x, positionOffset.y * gridSpacing.y); Vector2 nodePosition = positionOffset + gridSpacingOffset; LevelProgressState status = gameStateModel.Get().CompletedLevels.Contains(node.Counter) ? LevelProgressState.Finished : LevelProgressState.Locked; ISelectableLevel levelNode = InstantiateSelectableLevel(levelNodeFields[i].ObjectToBuild, gameObject, nodePosition, node.Counter, status); selectableLevels.Add(gridPosition, levelNode); } } }
public void ApplyLevelProgressState() { if (!LevelHelper.CheckIfLevelExistsWithNumber(levelNumber)) { levelProgressState = LevelProgressState.Unset; } spriteRenderer.color = LevelStatusAppearances.LevelStatusColors[(int)levelProgressState]; }
public void IncreaseLevelProgressStateTo(LevelProgressState levelProgressState) { bool nextLevelProgressStateIsHigher = this.levelProgressState < levelProgressState; if (nextLevelProgressStateIsHigher) { this.levelProgressState = levelProgressState; } }
public void Instantiate(LevelProgressState levelProgressState, int levelNumber) { this.levelNumber = levelNumber; this.levelProgressState = levelProgressState; }
private ISelectableLevel InstantiateSelectableLevel(GameObject objectToBuild, GameObject parent, Vector2 worldPosition, int counter, LevelProgressState status) { GameObject node = Instantiate(objectToBuild, worldPosition, new Quaternion(0, 0, 0, 0)); node.transform.parent = parent.transform; ISelectableLevel selectableLevel = node.GetComponent <ISelectableLevel>(); selectableLevel.Instantiate(status, counter); return(selectableLevel); }