示例#1
0
 /// <summary>
 /// Gets the random number generator.
 /// </summary>
 /// <param name="worldSeed">The world seed.</param>
 /// <param name="stepCount">The current step.</param>
 /// <param name="thingId">The ID of the thing.</param>
 /// <param name="stage">The stage of this generation.</param>
 /// <returns>A random number generator initialized with the inputted info.</returns>
 public static Random GetRandom(int worldSeed, int stepCount, Guid thingId, RandomStage stage)
 {
     unchecked
     {
         return(new Random((worldSeed * stepCount * thingId.ToString().GetStableHashCode()) + (int)stage));
     }
 }
            private void DrawStages()
            {
                stageType = (StageType)EditorGUILayout.EnumPopup("Stage Type", stageType);
                if (GUILayout.Button("Add stage"))
                {
                    Stage stage;
                    switch (stageType)
                    {
                    case StageType.Random:
                        stage = new RandomStage();
                        break;

                    default:
                        stage = new Stage();
                        break;
                    }

                    stages.Add(stage);
                }

                Stage removedStage    = null;
                Stage duplicatedStage = null;

                for (int kIndex = 0; kIndex < stages.Count; kIndex++)
                {
                    Stage stage = stages[kIndex];

                    stage.SetOrder(kIndex + 1);
                    stage.OnGUI();

                    if (stage.IsRemoved)
                    {
                        removedStage = stage;
                        break;
                    }

                    if (stage.IsDuplicated)
                    {
                        duplicatedStage = stage;
                    }
                }

                if (removedStage != null)
                {
                    stages.Remove(removedStage);
                    ResetCacheRectData();
                }

                if (duplicatedStage != null)
                {
                    stages.Add(duplicatedStage.Clone());
                }
            }
    //! 마이너 보스 / 필드보스 보상 정사각형 상자
    public void MinorBossSquareBox()
    {
        m_fItemRandom1 = Random.Range(0.0f, 100f);
        RandomStage pStage = new RandomStage();

        Debug.Log("StageLevel : " + pStage.GetStageLevel());

        switch (m_nMBSquareSelect)
        {
        case 0:
            if (m_fItemRandom1 <= (pStage.GetStageLevel() * 0.2f))
            {
                Debug.Log("3티어 악마의 심장 : " + m_fItemRandom1);
                GetDemonSouls(3);
            }
            else
            {
                m_nMBSquareSelect++;
                MinorBossSquareBox();
            }
            break;

        case 1:
            if (m_fItemRandom1 >= (pStage.GetStageLevel() * 0.2f) && m_fItemRandom1 < (pStage.GetStageLevel() * 0.5f))
            {
                Debug.Log("2티어 악마의 심장 : " + m_fItemRandom1);
                GetDemonSouls(2);
            }
            else
            {
                m_nMBSquareSelect++;
                MinorBossSquareBox();
            }
            break;

        case 2:
            if (m_fItemRandom1 >= (pStage.GetStageLevel() * 0.5f) && m_fItemRandom1 < (pStage.GetStageLevel() * 1f))
            {
                Debug.Log("1티어 악마의 심장  : " + m_fItemRandom1);
                GetDemonSouls(1);
            }
            else
            {
                Debug.Log("탄약 50발 획득 : " + m_fItemRandom1);
                GetAmmo(50);
                m_nMBSquareSelect = 0;
            }
            break;
        }
    }
    //! 마이너 보스 / 필드보스 보상 넓적한 상자
    public void MinorBossBigWeaponBox()
    {
        m_fItemRandom1 = Random.Range(0.0f, 100f);
        RandomStage pStage = new RandomStage();

        Debug.Log("StageLevel : " + pStage.GetStageLevel());
        switch (m_nMBBigSelect)
        {
        case 0:
            if (m_fItemRandom1 <= (pStage.GetStageLevel() * 0.2f))
            {
                Debug.Log("4티어 무기 : " + m_fItemRandom1);
                GetWeaponRand(4);
            }
            else
            {
                m_nMBBigSelect++;
                MinorBossBigWeaponBox();
            }
            break;

        case 1:
            if (m_fItemRandom1 >= (pStage.GetStageLevel() * 0.2f) && m_fItemRandom1 < (pStage.GetStageLevel() * 0.5f))
            {
                Debug.Log("3티어 무기 : " + m_fItemRandom1);
                GetWeaponRand(3);
            }
            else
            {
                m_nMBBigSelect++;
                MinorBossBigWeaponBox();
            }
            break;

        case 2:
            if (m_fItemRandom1 >= (pStage.GetStageLevel() * 0.5f) && m_fItemRandom1 < (pStage.GetStageLevel() * 1f))
            {
                Debug.Log("2티어 무기 : " + m_fItemRandom1);
                GetWeaponRand(2);
            }
            else
            {
                Debug.Log("1티어 무기 획득 : " + m_fItemRandom1);
                GetWeaponRand(1);
                m_nMBBigSelect = 0;
            }
            break;
        }
    }
    //! 섬멸전 보상 넓적한 상자
    public void DestroyBigWeaponBox()
    {
        m_fItemRandom1 = Random.Range(0.0f, 100f);
        RandomStage pStage = new RandomStage();

        Debug.Log("StageLevel : " + pStage.GetStageLevel());

        switch (m_nMBBigSelect)
        {
        case 0:
            if (m_fItemRandom1 <= (pStage.GetStageLevel() * 0.3f))
            {
                Debug.Log("3티어 무기 : " + m_fItemRandom1);
                GetWeaponRand(3);
            }
            else
            {
                m_nMBBigSelect++;
                DestroyBigWeaponBox();
            }
            break;

        case 1:
            if (m_fItemRandom1 >= (pStage.GetStageLevel() * 0.3f) && m_fItemRandom1 < (pStage.GetStageLevel() * 0.7f))
            {
                Debug.Log("2티어 악마의 심장 : " + m_fItemRandom1);
                GetDemonSouls(2);
            }
            else
            {
                Debug.Log("1티어 무기획득 : " + m_fItemRandom1);
                GetWeaponRand(1);
                m_nMBBigSelect = 0;
            }
            break;
        }
    }
示例#6
0
    [SerializeField] GameObject m_bossFloor;     // ボスのFloor

    private void Awake()
    {
        Instance = this;
    }