示例#1
0
    public void Spawn()
    {
        _currentId = _currentId.HasValue ? _nextId :  GetRandomTetraminoID();
        _nextId    = GetRandomTetraminoID();

        _tetraminoBuilder.BuildTetramino((TetraminoID)_currentId).transform.position = TetraminoController.SpawnPosition;
        EventManager.TriggerEvent(new OnTetraminoSpawnEvent {
            TetraminoId = _nextId
        });
    }
示例#2
0
    public Tetramino BuildTetramino(TetraminoID id)
    {
        var tetraminoId   = id;
        var rotationPoint = _tetraminoData.GetRotationPoint(tetraminoId);

        var tetramino = _poolManager.GetOrCreate <Tetramino>(_parentChest);

        tetramino.transform.SetParent(_parentChest);
        tetramino.Initialize(rotationPoint);

        for (int i = 0; i < CUBES_PER_TETRAMINO; i++)
        {
            var cube = _poolManager.GetOrCreate <Cube>(_cubePrefab, tetramino.transform);
            cube.transform.SetParent(tetramino.transform);
            var color    = _tetraminoData.GetColor(tetraminoId);
            var position = _tetraminoData.GetMatrix(tetraminoId)[i];
            cube.Initialize(position, color);
        }

        return(tetramino);
    }
示例#3
0
 public Sprite GetIcon(TetraminoID id)
 {
     return(TetraminoModels.Find(model => model.Id == id).icon);
 }
示例#4
0
 public Vector3 GetRotationPoint(TetraminoID id)
 {
     return(TetraminoModels.Find(model => model.Id == id).rotationPoint);
 }
示例#5
0
 public Vector3[] GetMatrix(TetraminoID id)
 {
     return(TetraminoModels.Find(model => model.Id == id).positionMatrix);
 }
示例#6
0
 public Color GetColor(TetraminoID id)
 {
     return(TetraminoModels.Find(model => model.Id == id).color);
 }