예제 #1
0
        public int Load(ArkanoidManager levelManager, System.Action callBack = null)
        {
            var totalBricks    = 0;
            var spawnAnimation = (SpawnAnimation)Random.Range(0, 3);
            var sequence       = DOTween.Sequence();

            foreach (var brickPosition in levelBricks)
            {
                var brick = ((GameObject)Instantiate(Resources.Load("Bricks/" + brickPosition.prefabName))).GetComponent <Brick>();
                brick.transform.parent   = levelManager.Bricks;
                brick.transform.position = brickPosition.position;
                Tween brickTween = null;

                switch (spawnAnimation)
                {
                case SpawnAnimation.TopDown:
                    brickTween = SpawnTopDown(brick.transform, brickPosition.position);
                    break;

                case SpawnAnimation.LeftRight:
                    brickTween = SpawnLeftRight(brick.transform, brickPosition.position);
                    break;

                case SpawnAnimation.Scale:
                    brickTween = SpawnScale(brick.transform);
                    break;
                }

                sequence.Insert(0, brickTween);
                brick.OnBrickDestroyed += levelManager.OnBrickDestroyed;
                totalBricks             = brick.brickType == Brick.BrickType.Destructible ? totalBricks + 1 : totalBricks;
            }
            sequence.OnComplete(() => callBack?.Invoke());
            return(totalBricks);
        }
예제 #2
0
 public static void Clean(ArkanoidManager levelManager)
 {
     foreach (Transform t in levelManager.Bricks)
     {
         var brick = t.GetComponent <Brick>();
         brick.OnBrickDestroyed -= levelManager.OnBrickDestroyed;
         Destroy(brick.gameObject);
     }
 }
예제 #3
0
    public LevelEditorTool(ArkanoidManager arkanoidManager)
    {
        _arkanoidManager = arkanoidManager;

        _grid                            = new LevelGrid(_arkanoidManager);
        _bricksPrefabs                   = Utils.GetPrefabsAtPath(Utils.BricksPath);
        _backGroundMaterials             = Utils.GetBackGroundMaterialsAtPath(Utils.BackgroundMaterialsPath);
        _selectedPrefabIndex             = EditorPrefs.GetInt("_selectedPrefabIndex", -1);
        _selectedBackgroundMaterialIndex = EditorPrefs.GetInt("_selectedBackgroundMaterialIndex", -1);

        LoadEditor();
    }
        private void OnEnable()
        {
            _target = (ArkanoidManager)target;
            InitEditorProperties();
            _target.Bricks.ClearChildrens();
            _paintTool = new LevelEditorTool(_target);

            _edit = EditorPrefs.GetBool("_edit", false);
            if (_edit)
            {
                SceneView.onSceneGUIDelegate += HandleMouseEvents;
            }
        }
예제 #5
0
 public LevelGrid(ArkanoidManager levelManager)
 {
     _levelArkanoidManager = levelManager;
 }
예제 #6
0
 private void Awake()
 {
     ArkanoidManager = FindObjectOfType <ArkanoidManager>();
 }
예제 #7
0
 private void Awake()
 {
     Instance = this;
 }