private SpawnPattern getLanePattern()
    {
        SpawnPattern pattern = new SpawnPattern();

        float x = Random.Range(0, spawnXRange) - spawnXRange/2;

        int length = Random.Range(0, 15) + 5;

        for (int i=0; i<length; i++) {
            Spawn s = new Spawn();
            s.location = new Vector2(x, spawnY);
            s.cooldown = spawnRate;

            pattern.spawns.Add(s);
        }

        return pattern;
    }
    private SpawnPattern getDumbPattern()
    {
        SpawnPattern pattern = new SpawnPattern();

        float x =  Random.Range(0, spawnXRange) - spawnXRange/2;
        int length = Random.Range(0, 15) + 15;

        for (int i=0; i<length; i++) {
            Spawn s = new Spawn();

            x = x + Random.Range(0, maxRandomDistX * 2) - maxRandomDistX;
            s.location = new Vector2(x, spawnY);
            s.cooldown = spawnRate - dumbSpawnRateMinus;

            pattern.spawns.Add(s);
        }

        return pattern;
    }
    private SpawnPattern getDiagonalPattern()
    {
        SpawnPattern pattern = new SpawnPattern();

        float x = Random.Range(0, spawnXRange) - spawnXRange/2;
        float xGap = Random.Range(0, .3f) + .2f;
        xGap *= x < 0 ? 1 : -1;

        int length = Random.Range(0, 7) + 5;

        for (int i=0; i<length; i++) {
            Spawn s = new Spawn();
            x = x + xGap;
            s.location = new Vector2(x, spawnY);
            s.cooldown = spawnRate;

            pattern.spawns.Add(s);
        }

        return pattern;
    }
    void Update()
    {
        if (spawnCooldown > 0) {
            spawnCooldown -= Time.deltaTime;
        }

        if (CanSpawn && currentSpawnPattern != null) {
            Spawn next = currentSpawnPattern.getNext();
            if (next != null) {
                Transform newSprinkle = (Transform) Instantiate(spawneePrefab, new Vector3(next.location.x, next.location.y, 0f), transform.rotation);
                newSprinkle.parent = transform;

                spawnCooldown = next.cooldown;
                spawnedCount++;
            } else {
                currentSpawnPattern = getRandomPattern();
                spawnCooldown = Random.Range(0, timeInBetweenPatternsRange.y - timeInBetweenPatternsRange.x) + timeInBetweenPatternsRange.x;
            }
        }
    }
 void Start()
 {
     spawnCooldown = spawnRate;
     currentSpawnPattern = getLanePattern();
 }
    private SpawnPattern getThickyLinePattern()
    {
        SpawnPattern pattern = new SpawnPattern();

        float startX = Random.Range(0, spawnXRange) - spawnXRange/2;

        int length = Random.Range(0, 40) + 20;

        for (int i=0; i < length; i++) {
            Spawn s = new Spawn();
            float x = Random.Range(0.0f, thickyLineSpawnRadius);
            s.location = new Vector2(x, spawnY);
            s.cooldown = spawnRate - 1.0f;

            pattern.spawns.Add(s);
        }
        return pattern;
    }
 void Start()
 {
     spawnCooldown       = spawnRate;
     currentSpawnPattern = getLanePattern();
 }
Пример #8
0
    // Use this for initialization
    void Start()
    {
        m_bGameStart = false;

        // Initialise link
        CreateLink();
        m_Link      = m_LinkObject.GetComponent <Link>();
        m_LinkedGem = new List <Gem>();

        // Get spawning information
        m_HalfDimension = Camera.main.ScreenToWorldPoint(new Vector3((Screen.width), (Screen.height)));
        m_fLaneWidth    = m_HalfDimension.x * 2.0f / LANE_NUM;
        //m_fBaseGemDropSpeed = m_HalfDimension.y * 2.0f / BASE_GEM_DROP_TIME;

        // Gem details
        m_GemDetails = GameObject.FindGameObjectWithTag("Gem Details").GetComponent <GemDetails>();
        if (m_GemDetails != null)
        {
            Debug.Log("Reset explosion!");
            m_GemExplosionPrefab = m_GemDetails.m_GemSet.m_Explosion;
        }

        //m_nGemTypeNum = m_aGemList.Length;
        m_nGemTypeNum = GemContainerSet.GEM_SET_NUM;

        // Initialise spawning history variables
        m_PreviousLanes = Enumerable.Repeat(INVALID_LANE, LOOKBACK_NUM).ToList();
        //m_PreviousGems = new List<int>();
        m_SpawnPattern           = GetComponent <SpawnPattern>();
        m_lSequence              = new List <int>();
        m_mSequenceGemTypeMap    = new List <int>();
        m_nSequenceIndex         = 0;
        m_nSequenceIndexFromList = -1;

        m_nLastInsertedLaneIndex = -1;

        // Initialising spawning timer
        m_fSpawnTimer = 0.0f;
        //m_fSpawnRate = BASE_SPAWN_RATE;

        // Initialising spawning live information
        m_aGemCount      = Enumerable.Repeat(0, m_nGemTypeNum).ToArray();
        m_nTotalGemCount = 0;
        m_Gems           = new List <List <GameObject> >();
        for (int i = 0; i < LANE_NUM; ++i)
        {
            m_Gems.Add(new List <GameObject>());
        }
        m_StonedGems        = new List <GameObject>();
        m_GemsToBeRemoved   = new List <GameObject>();
        m_GemsToBeDestroyed = new List <GameObject>();
        if (NetworkManager.IsConnected() && NetworkManager.IsPlayerOne())
        {
            m_NetworkGemsToBeDestroyed = new List <GameObject>();
        }
        if (NetworkManager.IsConnected() && !NetworkManager.IsPlayerOne())
        {
            m_DestroyedNetworkInfo = new Dictionary <int, DestroyedNetworkInfo>();
        }

        // Initialise life line
        if (m_LineLine != null)
        {
            m_LineLine.transform.position = new Vector3(0.0f, (UNLINKABLE_ZONE * m_HalfDimension.y * 2.0f) + -m_HalfDimension.y, 0.0f) + FRONT_OFFSET;
        }

        // Initialising animation timer

        /*
         * m_nFrameNum = m_aGemList[0].GetComponent<GemSpriteContainer>().m_Sprites.Length;
         * for ( int i = 1; i < m_aGemList.Length; ++i )
         * {
         *      int num = m_aGemList[i].GetComponent<GemSpriteContainer>().m_Sprites.Length;
         *      m_nFrameNum = m_nFrameNum > num ? num : m_nFrameNum;
         * }
         */
        m_nFrameNum = m_GemDetails.GetComponent <GemDetails>().m_GemSet.GetGemContainer(0).Length;
        for (int i = 1; i < GemContainerSet.GEM_SET_NUM; ++i)
        {
            int num = m_GemDetails.GetComponent <GemDetails>().m_GemSet.GetGemContainer(i).Length;
            m_nFrameNum = m_nFrameNum > num ? num : m_nFrameNum;
        }

        m_fAnimationIntervalTimer = 0.0f;
        m_fAnimationTimer         = 0.0f;
        m_bAnimating      = false;
        m_nAnimatingFrame = -1;

        // Initialise player's stats
        m_nLevel            = 0;
        m_nPoints           = 0;
        m_nShowingPoints    = 0;
        m_nPrevPoints       = 0;
        m_fPointTimer       = 0.0f;
        m_nHealth           = MAX_HEALTH;
        m_nCurrentCombo     = 0;
        m_nMaxCombo         = 0;
        m_nShowingCombo     = 0;
        m_nPrevCombo        = 0;
        m_fComboTimer       = 0.0f;
        m_fPraiseTimer      = 0.0f;
        m_PraisePos         = m_PraiseText.transform.position;
        m_fSpawnRate        = BASE_SPAWN_RATE - m_nLevel * SPAWN_RATE_GROWTH;
        m_fBaseGemDropSpeed = m_HalfDimension.y * 2.0f / (BASE_GEM_DROP_TIME - (m_nLevel / 2) * GEM_DROP_TIME_GROWTH);

        m_PlayerStats = GameObject.FindGameObjectWithTag("Player Statistics").GetComponent <PlayerStatistics>();

        m_PlayerStats.m_aGems         = m_aGemList;
        m_PlayerStats.m_aDestroyCount = new int [m_aGemList.Length];
        for (int i = 0; i < m_aGemList.Length; ++i)
        {
            m_PlayerStats.m_aDestroyCount[i] = 0;
        }

        // Texts and display
        m_HealthText.GetComponent <Text>().text = m_nHealth.ToString();
        m_ComboText.GetComponent <Text>().text  = "Combo\n" + m_nCurrentCombo.ToString();
        {
            Color c = m_ComboText.GetComponent <Text>().color;
            c.a = 0.0f;
            m_ComboText.GetComponent <Text>().color = c;
        }
        {
            m_PraiseText.GetComponent <Text>().text = "";

            Color c = m_PraiseText.GetComponent <Text>().color;
            c.a = 0.0f;
            m_PraiseText.GetComponent <Text>().color = c;
        }
        m_LineLine.GetComponent <SpriteRenderer>().color = GetLifeLineColour();

        // Gameover
        m_bGameover      = false;
        m_fGameoverTimer = 0.0f;

        // Transition Overlay
        GameObject transition = GameObject.FindGameObjectWithTag("Transition");

        transition.transform.position += 5.0f * FRONT_OFFSET;

        if (NetworkManager.IsConnected())
        {
            m_Network = GameObject.Find("Network Manager").GetComponent <NetworkGameLogic>();
        }
    }
Пример #9
-1
    // パターンデータテキストアセットから、パターンデータを読み出す.
    void LoadSpawnPattern(TextAsset pattern_text, List<SpawnPattern> pList)
    {
        string pText = pattern_text.text;
        string[] lines = pText.Split('\n');

        List<string> pattern_data_str = new List<string>();	// BEGIN=>END間のパターンデータのテキスト
        foreach(var line in lines) {

            string str = line.Trim();	// 前後の空白を消す.

            if(str.StartsWith("#")) 	continue;	// コメント行なら読み飛ばし.

            switch(str.ToUpper()) {
                case "":
                    continue;	// 空行なら読み飛ばし.
                case "BEGIN":
                    // BEGINがきたらパターンデータテキストを一から作り直す.
                    pattern_data_str = new List<string>();
                    break;;	// TODO 1テキストで複数パターン読み込み出来るようにする.
                case "END":
                    // ENDがきたらパターンデータテキストを基にパターンデータを作成し、パターンリストに追加.
                    SpawnPattern pattern = new SpawnPattern();
                    pattern.LoadPattern(pattern_data_str.ToArray());
                    pList.Add(pattern);	// パターンリストに追加.
                    break;
                default:
                    // BEGIN=>END間なのでパターンデータテキストに追加.
                    pattern_data_str.Add(str);
                    break;
            }

        }
    }