示例#1
0
        Vector2 WaveConfigurator(float startX, float startY)
        {
            for (int i = 0; i < instance.waveList.Count; i++)
            {
                Wave wave = instance.waveList[i];

                float foldOffset = 25;
                if (deleteID == i)
                {
                    if (GUI.Button(new Rect(startX, startY - 3, 60, 20), "Cancel"))
                    {
                        deleteID = -1;
                    }
                    GUI.color = Color.red;
                    if (GUI.Button(new Rect(startX + 65, startY - 3, 20, 20), "X"))
                    {
                        instance.waveList.RemoveAt(i);  i -= 1;
                        deleteID = -1;
                    }
                    GUI.color = Color.white;

                    foldOffset += 65;
                }
                else
                {
                    cont = new GUIContent("X", "Delete wave");
                    if (GUI.Button(new Rect(startX, startY - 3, 20, 20), cont))
                    {
                        deleteID = i;
                    }
                }

                waveFoldList[i] = EditorGUI.Foldout(new Rect(startX + foldOffset, startY, 60, 15), waveFoldList[i], "wave " + (i + 1).ToString());
                if (!waveFoldList[i])
                {
                    PreviewSubWave(wave, startX + foldOffset, startY, spaceX, width, spaceY, height);

                    startY += 35;
                    continue;
                }

                startX += 20;



                cont = new GUIContent("SubWave Size: " + wave.subWaveList.Count, "Number of subwave in this wave, each subwave can be made of different creep with different spawn configuration");
                EditorGUI.LabelField(new Rect(startX, startY += spaceY, width, 15), cont);
                if (GUI.Button(new Rect(startX + spaceX + 10, startY - 1, 40, 15), "-1"))
                {
                    if (wave.subWaveList.Count > 1)
                    {
                        wave.subWaveList.RemoveAt(wave.subWaveList.Count - 1);
                    }
                }
                if (GUI.Button(new Rect(startX + spaceX + 60, startY - 1, 40, 15), "+1"))
                {
                    wave.subWaveList.Add(wave.subWaveList[wave.subWaveList.Count - 1].Clone());
                }


                if (instance.spawnMode == SpawnManager._SpawnMode.Continous)
                {
                    cont = new GUIContent("Duration: ", "Time until next wave");
                    EditorGUI.LabelField(new Rect(startX, startY += spaceY, width, height), cont);
                    wave.duration = EditorGUI.FloatField(new Rect(startX + spaceX - 20, startY, 40, 15), wave.duration);

                    float reqDuration = wave.CalculateSpawnDuration();
                    EditorGUI.LabelField(new Rect(startX + spaceX + 30, startY, 800, height), "(Time required for all units in this wave to be spawned: " + reqDuration.ToString("f1") + "s)");
                }


                float cachedX = startX;
                startY += 3;

                Vector2 v2 = SubWaveConfigurator(wave, startX, startY, spaceX, width, spaceY, height);

                startY = v2.y + 5;
                startX = cachedX;


                cont = new GUIContent("Life Gain: ", "The amount of life player will gain when surviving the wave");
                EditorGUI.LabelField(new Rect(startX, startY += spaceY, width, height), cont);
                wave.lifeGain = EditorGUI.IntField(new Rect(startX + spaceX - 20, startY, 40, 15), wave.lifeGain);

                //~ startX+=spaceX+75;
                cont = new GUIContent("Energy Gain: ", "The amount of energy (for abilities) player will gain when surviving the wave");
                EditorGUI.LabelField(new Rect(startX, startY += spaceY - 2, width, height), cont);
                wave.energyGain = EditorGUI.IntField(new Rect(startX + spaceX - 20, startY, 40, 15), wave.energyGain);

                //~ startX=cachedX;	startY+=3;



                cont = new GUIContent("Resource Gain:", "The amount of resource player will gain when surviving the wave");
                EditorGUI.LabelField(new Rect(startX, startY += spaceY, 300, 15), cont);

                if (wave.rscGainList.Count < rscList.Count)
                {
                    wave.rscGainList.Add(0);
                }
                if (wave.rscGainList.Count > rscList.Count)
                {
                    wave.rscGainList.RemoveAt(wave.rscGainList.Count - 1);
                }

                cachedX = startX;
                startX += spaceX;
                for (int n = 0; n < rscList.Count; n++)
                {
                    EditorUtilities.DrawSprite(new Rect(startX, startY - 2, 20, 20), rscList[n].icon);
                    wave.rscGainList[n] = EditorGUI.IntField(new Rect(startX + 21, startY, 40, height - 2), wave.rscGainList[n]);
                    startX += 75;
                }
                startX = cachedX;


                startY += 50;
                startX -= 20;
            }

            return(new Vector2(startX, startY));
        }