예제 #1
0
    protected override void Spawn()
    {
        STEP = ValidRect.width / SPAWN_COUNT;

        SpawnDataModel[] dataSet = PawnSpawnPatternControl.Instance.ParseTexture("Pattern_1", CurrentRow);
        int len = dataSet.Length;

        for (int i = 0; i < len; i++)
        {
            SpawnDataModel data = dataSet [i];
            Vector3        pos;
            string         EnemyName = "";
            pos = new Vector3(ValidRect.x + (STEP * (data.Position + 0.5F)), ValidRect.yMax - 0.01F, 0);

            if (null == data)
            {
                continue;
            }

            switch (data.SpawnPattern)
            {
            case PawnSpawnPatternControl.SpawnPattern.NONE:
                break;

            case PawnSpawnPatternControl.SpawnPattern.CURRENT_LEVEL:
                EnemyName = DifficultyControl.Instance.GetCurrentEnemyName(0);
                break;

            case PawnSpawnPatternControl.SpawnPattern.CURRENT_LEVEL_PLUS_1:
                EnemyName = DifficultyControl.Instance.GetCurrentEnemyName(1);
                break;

            case PawnSpawnPatternControl.SpawnPattern.CURRENT_LEVEL_PLUS_2:
                EnemyName = DifficultyControl.Instance.GetCurrentEnemyName(2);
                break;

            case PawnSpawnPatternControl.SpawnPattern.OBSTACLE_BREAKABLE:
                EnemyName = DifficultyControl.Instance.GetCurrentObstacleName(false);
                break;

            case PawnSpawnPatternControl.SpawnPattern.OBSTACLE_UNBREAKABLE:
                EnemyName = DifficultyControl.Instance.GetCurrentObstacleName(true);
                break;
            }

            if (EnemyName != "")
            {
                SpawnOneEnemy(pos, EnemyName);
            }
        }

        CurrentRow++;
    }
    public SpawnDataModel[] ParseTexture(string LevelName, int Row)
    {
        Texture2D DataTexture;

        if (m_TextureCaching.ContainsKey(LevelName))
        {
            DataTexture = m_TextureCaching [LevelName];
        }
        else
        {
            DataTexture = Resources.Load <Texture2D>(SPAWN_DATA_PATH + LevelName);
        }

        Color[] Pixels = DataTexture.GetPixels();
        int     len_x  = DataTexture.width;

        SpawnDataModel[] SpawnDataSet = new SpawnDataModel[len_x];

        // Skip if row is bigger than texture height
        if (DataTexture.height - 1 < Row)
        {
            return(SpawnDataSet);
        }

        for (int x = 0; x < len_x; x++)
        {
            SpawnDataSet [x]          = new SpawnDataModel();
            SpawnDataSet [x].Position = x;
            Color c = Pixels [x + Row * len_x];
            if (c.Equals(NONE))
            {
                SpawnDataSet [x].SpawnPattern = SpawnPattern.NONE;
            }
            else if (c.Equals(CURRENT_LEVEL))
            {
                SpawnDataSet [x].SpawnPattern = SpawnPattern.CURRENT_LEVEL;
            }
            else if (c.Equals(CURRENT_LEVEL_PLUS_1))
            {
                SpawnDataSet [x].SpawnPattern = SpawnPattern.CURRENT_LEVEL_PLUS_1;
            }
            else if (c.Equals(CURRENT_LEVEL_PLUS_2))
            {
                SpawnDataSet [x].SpawnPattern = SpawnPattern.CURRENT_LEVEL_PLUS_2;
            }
            else if (c.Equals(OBSTACLE_BREAKABLE))
            {
                SpawnDataSet [x].SpawnPattern = SpawnPattern.OBSTACLE_BREAKABLE;
            }
            else if (c.Equals(OBSTACLE_UNBREAKABLE))
            {
                SpawnDataSet [x].SpawnPattern = SpawnPattern.OBSTACLE_UNBREAKABLE;
            }
            else
            {
                Debug.Log(CURRENT_LEVEL_PLUS_1);
                Debug.Log(CURRENT_LEVEL_PLUS_2);
                Debug.Log(OBSTACLE_BREAKABLE);
                Debug.Log(OBSTACLE_UNBREAKABLE);
                Debug.LogError("[-] No match color found." + c);
                Debug.Log(x + ", " + Row);
                Debug.Break();
            }
        }

        return(SpawnDataSet);
    }