示例#1
0
        public void ConvertToWaveObjectsArrayTest()
        {
            string[,] array = new string[3, 3] {
                // 0   1   2
                { "a", "", "" },     // 0
                { "", "x", "" },     // 1
                { "", "x", "b" }     // 2
            };

            WaveObject[,] expectedResult = new WaveObject[3, 3]
            {
                { new WaveObject(value: 0, type: ObjectType.StartPoint),            // -- 0,0
                  new WaveObject(value: null, type: ObjectType.None),               // 1,0
                  new WaveObject(value: null, type: ObjectType.None) },             // 2,0
                { new WaveObject(value: null, type: ObjectType.None),               // -- 0,1
                  new WaveObject(value: null, type: ObjectType.Block),              // 1,1
                  new WaveObject(value: null, type: ObjectType.None) },             // 2,1
                { new WaveObject(value: null, type: ObjectType.None),               // -- 0,2
                  new WaveObject(value: null, type: ObjectType.Block),              // 1,2
                  new WaveObject(value: null, type: ObjectType.EndPoint) }          // 2,2
            };

            var result = WaveAlgLee.ConvertToWaveObjectsArray(array);

            for (int j = 0; j < (result.Rank + 1); j++)
            {
                for (int i = 0; i < result.Length / (result.Rank + 1); i++)
                {
                    Assert.AreEqual(expectedResult[i, j], result[i, j]);
                }
            }
        }
示例#2
0
 private void ClearAllEvents()
 {
     if (spawnManager)
     {
         if (spawnerObjects != null)
         {
             for (int i = 0; i < spawnerObjects.Count; i++)
             {
                 Spawner       spawner       = spawnManager.spawners[i].Prefab.GetComponent <Spawner>();
                 SpawnerObject spawnerObject = spawnerObjects[i];
                 for (int j = 0; j < spawnerObject.waveObjects.Count; j++)
                 {
                     Wave wave = spawner.waves[j];
                     wave.ClearEvents();
                     WaveObject waveObject = spawnerObject.waveObjects[j];
                     for (int k = 0; k < waveObject.levelUnitsList.Count; k++)
                     {
                         WaveObject.LevelObjectData levelUnitStruct = waveObject.levelUnitsList[k];
                         LevelUnit levelUnit = levelUnitStruct.levelUnit.GetComponent <LevelUnit>();
                         if (levelUnit)
                         {
                             levelUnit.ClearNamedStateEventsLists();
                         }
                     }
                 }
             }
         }
     }
     musicIntensityManager.ClearAll();
 }
示例#3
0
 private void CopyLastState()
 {
     if (selectedWave > 0)
     {
         int        previousWave       = selectedWave - 1;
         WaveObject previousWaveObject = spawnerObjects[selectedSpawner].waveObjects[previousWave];
         WaveObject selectedWaveObject = spawnerObjects[selectedSpawner].waveObjects[selectedWave];
         for (int i = 0; i < selectedWaveObject.levelUnitsList.Count; i++)
         {
             WaveObject.LevelObjectData levelObjectData = selectedWaveObject.levelUnitsList[i];
             levelObjectData.state = previousWaveObject.levelUnitsList[i].state;
             selectedWaveObject.levelUnitsList[i] = levelObjectData;
         }
         //selectedWaveObject.audioClip = previousWaveObject.audioClip;
     }
     else if (selectedSpawner > 0)
     {
         int        previousSpawner    = selectedSpawner - 1;
         int        previousWave       = spawnerObjects[previousSpawner].waveObjects.Count - 1;
         WaveObject previousWaveObject = spawnerObjects[previousSpawner].waveObjects[previousWave];
         WaveObject selectedWaveObject = spawnerObjects[selectedSpawner].waveObjects[selectedWave];
         for (int i = 0; i < selectedWaveObject.levelUnitsList.Count; i++)
         {
             WaveObject.LevelObjectData levelObjectData = selectedWaveObject.levelUnitsList[i];
             levelObjectData.state = previousWaveObject.levelUnitsList[i].state;
             selectedWaveObject.levelUnitsList[i] = levelObjectData;
         }
     }
 }
示例#4
0
    private void BakeData()
    {
        ClearAllEvents();
        if (spawnManager)
        {
            if (spawnerObjects != null)
            {
                for (int i = 0; i < spawnerObjects.Count; i++)
                {
                    if (spawnerObjects[i].waveObjects != null)
                    {
                        Spawner spawner = spawnManager.spawners[i].Prefab.GetComponent <Spawner>();
                        for (int j = 0; j < spawnerObjects[i].waveObjects.Count; j++)
                        {
                            // Set level unit triggers
                            WaveObject waveObject     = spawnerObjects[i].waveObjects[j];
                            string     localEventName = eventName.Replace(spawnerNumberString, (i + 1).ToString()).Replace(waveNumberString, (j + 1).ToString());
                            if (waveObject.triggerStart)
                            {
                                spawner.waves[j].AddPreEvent(localEventName);
                            }
                            else
                            {
                                spawner.waves[j].AddPostEvent(localEventName);
                            }
                            for (int k = 0; k < waveObject.levelUnitsList.Count; k++)
                            {
                                WaveObject.LevelObjectData levelUnitStruct = waveObject.levelUnitsList[k];
                                LevelUnit levelUnit = levelUnitStruct.levelUnit.GetComponent <LevelUnit>();
                                if (levelUnit)
                                {
                                    levelUnit.AddNamedStateEvent(levelUnitStruct.state, localEventName);
                                }
                            }

                            // Set music triggers
                            if (waveObject.audioClip != null)
                            {
                                string musicEventName = "Music_" + localEventName;
                                if (waveObject.triggerStart)
                                {
                                    spawner.waves[j].AddPreEvent(musicEventName);
                                }
                                else
                                {
                                    spawner.waves[j].AddPostEvent(musicEventName);
                                }
                                musicIntensityManager.AddMusicTransitionEvent(musicEventName, waveObject.audioClip);
                            }
                            EditorUtility.SetDirty(musicIntensityManager);
                        }
                        EditorUtility.SetDirty(spawner);
                    }
                }
            }
        }
        EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
    }
示例#5
0
        public void RestoreWay()
        {
            var startPoint = new ObjectPoint(0, 0, ObjectType.StartPoint);
            var endPoint   = new ObjectPoint(2, 2, ObjectType.EndPoint);

            //   0      1     2      3      |
            //------------------------------+---
            //  (a)0  (-)1   (-)2   (x)'    | 0
            //  (-)1  (x)'   (-)3   (-)4    | 1
            //  (-)2  (x)'   (b)4   (x)'    | 2
            WaveObject[,] area = new WaveObject[3, 4]
            {
                { new WaveObject(value: 0, type: ObjectType.StartPoint),        // -- 0,0
                  new WaveObject(value: 1, type: ObjectType.None),              //    0,1
                  new WaveObject(value: 2, type: ObjectType.None),              //    0,2
                  new WaveObject(value: null, type: ObjectType.Block) },        //    0,3
                { new WaveObject(value: 1, type: ObjectType.None),              // -- 1,0
                  new WaveObject(value: null, type: ObjectType.Block),          //    1,1
                  new WaveObject(value: 3, type: ObjectType.None),              //    1,2
                  new WaveObject(value: 4, type: ObjectType.None) },            //    1,3
                { new WaveObject(value: 2, type: ObjectType.None),              // -- 2,0
                  new WaveObject(value: null, type: ObjectType.Block),          //    2,1
                  new WaveObject(value: 4, type: ObjectType.EndPoint),          //    2,2
                  new WaveObject(value: null, type: ObjectType.Block) }         //    2,3
            };
            // x,y
            // 0,0 -> 0,1 -> 0,2 -> 1,2 -> 2,2
            List <ObjectPoint> expectedResult = new List <ObjectPoint>()
            {
                new ObjectPoint {
                    X = 0, Y = 1, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 0, Y = 2, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 1, Y = 2, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 2, Y = 2, Obj = ObjectType.EndPoint
                }
            };

            List <ObjectPoint> path = WaveAlgLee.RestoreWay(area, startPoint, endPoint);

            if (path.Count == 0)
            {
                Assert.Fail("Result path list count 0 elements");
            }
            for (int i = 0; i < path.Count; i++)
            {
                Assert.AreEqual(expectedResult[i], path[i]);
            }
        }
示例#6
0
    private void GetLevelObjects()
    {
        int layer = LayerMask.NameToLayer(Strings.Layers.GROUND);

        levelObjects = new List <GameObject>();
        GameObject[] gameObjects = FindObjectsOfType <GameObject>();
        foreach (GameObject gameObject in gameObjects)
        {
            if (gameObject.layer == layer && gameObject.GetComponent <LevelUnit>())
            {
                levelObjects.Add(gameObject);
            }
        }

        for (int i = 0; i < spawnerObjects.Count; i++)
        {
            SpawnerObject spawnerObject = spawnerObjects[i];
            for (int j = 0; j < spawnerObject.waveObjects.Count; j++)
            {
                WaveObject waveObject = spawnerObject.waveObjects[j];
                waveObject.levelUnitsList = new List <WaveObject.LevelObjectData>(levelObjects.Count);
                string localEventName = eventName.Replace(spawnerNumberString, (i + 1).ToString()).Replace(waveNumberString, (j + 1).ToString());
                foreach (GameObject levelObject in levelObjects)
                {
                    LevelUnit levelUnit = levelObject.GetComponent <LevelUnit>();
                    WaveObject.LevelObjectData levelUnitStruct = new WaveObject.LevelObjectData();
                    levelUnitStruct.levelUnit = levelUnit;
                    bool eventExists = false;
                    if (levelUnit.CheckForEvent(localEventName, LevelUnitStates.Floor))
                    {
                        levelUnitStruct.state = LevelUnitStates.Floor;
                        eventExists           = true;
                    }
                    else if (levelUnit.CheckForEvent(localEventName, LevelUnitStates.Cover))
                    {
                        levelUnitStruct.state = LevelUnitStates.Cover;
                        eventExists           = true;
                    }
                    else if (levelUnit.CheckForEvent(localEventName, LevelUnitStates.Pit))
                    {
                        levelUnitStruct.state = LevelUnitStates.Pit;
                        eventExists           = true;
                    }

                    if (!eventExists)
                    {
                        levelUnitStruct.state = levelUnit.defaultState;
                    }
                    waveObject.levelUnitsList.Add(levelUnitStruct);
                }
            }
        }
    }
示例#7
0
    private void ShowWaveTriggerOptions()
    {
        GUIStyle fontSizeStyle = new GUIStyle();

        fontSizeStyle.fontSize = 20;
        GUI.Label(new Rect(position.width * 0.4f, 80, 100, 20), "Transition Point", fontSizeStyle);
        WaveObject selectedWaveObject = spawnerObjects[selectedSpawner].waveObjects[selectedWave];

        GUILayout.BeginHorizontal();
        selectedWaveObject.triggerStart = GUI.Toggle(new Rect(position.width * 0.42f, 110, 50, 30), selectedWaveObject.triggerStart, "Start");
        bool triggerEnd = GUI.Toggle(new Rect(position.width * 0.48f, 110, 50, 30), !selectedWaveObject.triggerStart, "End");

        GUILayout.EndHorizontal();
        selectedWaveObject.triggerStart = !triggerEnd;
    }
示例#8
0
    private int counter;                  //Räknar fiender som spawnat

    public void GetEvent(WaveObject wave) //Får värderna
    {
        spawnPosArr   = wave.spawnPosArr;
        prefab        = wave.prefab;
        isTimerBased  = wave.isTimerBased;
        spawnRate     = wave.spawnRate;
        waveDuration  = wave.waveDuration;
        enemiesAmount = wave.enemiesAmmount;

        rateStamp = 0;
        waveStamp = 0;

        isRandomSpawn = wave.isRandomSpawn;
        isActive      = true;
    }
示例#9
0
 private bool ReadWaveData()
 {
     spawnManager          = FindObjectOfType <SpawnManager>();
     musicIntensityManager = FindObjectOfType <MusicIntensityManager>();
     if (spawnManager && musicIntensityManager)
     {
         spawnerButtonNames = new List <string>(spawnManager.spawners.Count);
         spawnerObjects     = new List <SpawnerObject>(spawnManager.spawners.Count);
         for (int i = 0; i < spawnManager.spawners.Count; i++)
         {
             Spawner spawner = spawnManager.spawners[i].Prefab.GetComponent <Spawner>();
             if (spawner)
             {
                 spawnerButtonNames.Add("Spawner " + (i + 1));
                 SpawnerObject spawnerObject = new SpawnerObject();
                 spawnerObject.waveButtonNames = new List <string>(spawner.waves.Count);
                 spawnerObject.waveObjects     = new List <WaveObject>(spawner.waves.Count);
                 for (int j = 0; j < spawner.waves.Count; j++)
                 {
                     Wave wave = spawner.waves[j];
                     spawnerObject.waveButtonNames.Add("Wave " + (j + 1));
                     WaveObject waveObject     = new WaveObject();
                     string     musicEventName = "Music_" + eventName.Replace(spawnerNumberString, (i + 1).ToString()).Replace(waveNumberString, (j + 1).ToString());
                     waveObject.audioClip = musicIntensityManager.GetAudioClipByEventName(musicEventName);
                     spawnerObject.waveObjects.Add(waveObject);
                 }
                 spawnerObjects.Add(spawnerObject);
             }
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#10
0
 public Wave(WaveObject w)
 {
     enemyCount  = w.data[0].enemyCount;
     waveStagger = w.data[0].waveStagger;
 }
示例#11
0
        public void RestoreWay_WxH_10x5()
        {
            //  0   1   2   3   4   5   6   7   8   9   |
            //------------------------------------------+---
            //  a   '   '   x   '   '   '   '   '   '   | 0
            //  '   x   '   '   x   x   '   '   x   '   | 1
            //  '   x   x   x   '   '   '   x   x   '   | 2
            //  '   '   '   '   '   '   '   x   '   '   | 3
            //  '   x   '   x   '   '   x   '   b   x   | 4
            //------------------------------------------+---
            //  0   1   2   3   4   5   6   7   8   9   |
            //------------------------------------------+---
            //  a0  1   2   x   14  13  12  13  14  15  | 0
            //  1   x   3   4   x   x   11  12  x   16  | 1
            //  2   x   x   x   8   9   10  x   x   17  | 2
            //  3   4   5   6   7   8   9   x   19  18  | 3
            //  4   x   6   x   8   9   x   '   b20 x   | 4
            //------------------------------------------+---
            //  0   1   2   3   4   5   6   7   8   9   |
            WaveObject[,] area = new WaveObject[10, 5]
            {
                { new WaveObject(value: 0, type: ObjectType.StartPoint),            // -- 0,0
                  new WaveObject(value: 1, type: ObjectType.None),                  //    0,1
                  new WaveObject(value: 2, type: ObjectType.None),                  //    0,2
                  new WaveObject(value: 3, type: ObjectType.None),                  //    0,3
                  new WaveObject(value: 4, type: ObjectType.None) },                //    0,4
                { new WaveObject(value: 1, type: ObjectType.StartPoint),            // -- 1,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,1
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,2
                  new WaveObject(value: 4, type: ObjectType.None),                  //    1,3
                  new WaveObject(value: null, type: ObjectType.Block) },            //    2,4
                { new WaveObject(value: 2, type: ObjectType.None),                  // -- 2,0
                  new WaveObject(value: 3, type: ObjectType.None),                  //    2,1
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,2
                  new WaveObject(value: 5, type: ObjectType.None),                  //    2,3
                  new WaveObject(value: 6, type: ObjectType.None) },                //    2,4
                { new WaveObject(value: null, type: ObjectType.Block),              // -- 3,0
                  new WaveObject(value: 4, type: ObjectType.None),                  //    3,1
                  new WaveObject(value: null, type: ObjectType.Block),              //    3,2
                  new WaveObject(value: 6, type: ObjectType.None),                  //    3,3
                  new WaveObject(value: null, type: ObjectType.Block) },            //    3,4
                { new WaveObject(value: 14, type: ObjectType.None),                 // -- 4,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    4,1
                  new WaveObject(value: 8, type: ObjectType.None),                  //    4,2
                  new WaveObject(value: 7, type: ObjectType.None),                  //    4,3
                  new WaveObject(value: 8, type: ObjectType.None) },                //    4,4
                { new WaveObject(value: 13, type: ObjectType.None),                 // -- 5,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    5,1
                  new WaveObject(value: 9, type: ObjectType.None),                  //    5,2
                  new WaveObject(value: 8, type: ObjectType.None),                  //    5,3
                  new WaveObject(value: 9, type: ObjectType.None) },                //    5,4
                { new WaveObject(value: 12, type: ObjectType.None),                 // -- 6,0
                  new WaveObject(value: 11, type: ObjectType.None),                 //    6,1
                  new WaveObject(value: 10, type: ObjectType.None),                 //    6,2
                  new WaveObject(value: 9, type: ObjectType.None),                  //    6,3
                  new WaveObject(value: null, type: ObjectType.Block) },            //    6,4
                { new WaveObject(value: 13, type: ObjectType.None),                 // -- 7,0
                  new WaveObject(value: 12, type: ObjectType.None),                 //    7,1
                  new WaveObject(value: null, type: ObjectType.Block),              //    7,2
                  new WaveObject(value: null, type: ObjectType.Block),              //    7,3
                  new WaveObject(value: null, type: ObjectType.None) },             //    7,4
                { new WaveObject(value: 14, type: ObjectType.None),                 // -- 8,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    8,1
                  new WaveObject(value: null, type: ObjectType.Block),              //    8,2
                  new WaveObject(value: 19, type: ObjectType.None),                 //    8,3
                  new WaveObject(value: 20, type: ObjectType.EndPoint) },           //    8,4
                { new WaveObject(value: 15, type: ObjectType.None),                 // -- 9,0
                  new WaveObject(value: 16, type: ObjectType.None),                 //    9,1
                  new WaveObject(value: 17, type: ObjectType.None),                 //    9,2
                  new WaveObject(value: 18, type: ObjectType.None),                 //    9,3
                  new WaveObject(value: null, type: ObjectType.Block) }             //    9,4
            };
            //  0   1   2   3   4   5   6   7   8   9   |
            //------------------------------------------+---
            //  a0  1   2   x   14  13  12  13  14  15  | 0
            //  1   x   3   4   x   x   11  12  x   16  | 1
            //  2   x   x   x   8   9   10  x   x   17  | 2
            //  3   4   5   6   7   8   9   x   19  18  | 3
            //  4   x   6   x   8   9   x   '   b20 x   | 4
            //------------------------------------------+---
            //  0   1   2   3   4   5   6   7   8   9   |

            var startPoint = new ObjectPoint(0, 0, ObjectType.StartPoint);
            var endPoint   = new ObjectPoint(8, 4, ObjectType.EndPoint);

            // x,y
            // 1,0 -> 2,0 -> 3,0 -> 3,1 -> 3,2 -> 3,3 -> 3,4 -> 3,5
            List <ObjectPoint> expectedResult = new List <ObjectPoint>()
            {
                new ObjectPoint {
                    X = 0, Y = 1, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 0, Y = 2, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 0, Y = 3, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 1, Y = 3, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 2, Y = 3, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 3, Y = 3, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 4, Y = 3, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 5, Y = 3, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 6, Y = 3, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 6, Y = 2, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 6, Y = 1, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 7, Y = 1, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 7, Y = 0, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 8, Y = 0, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 9, Y = 0, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 9, Y = 1, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 9, Y = 2, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 9, Y = 3, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 8, Y = 3, Obj = ObjectType.None
                },
                new ObjectPoint {
                    X = 8, Y = 4, Obj = ObjectType.EndPoint
                }
            };

            List <ObjectPoint> path = WaveAlgLee.RestoreWay(area, startPoint, endPoint);

            if (path.Count == 0)
            {
                Assert.Fail("Result path list count 0 elements");
            }
            for (int i = 0; i < path.Count; i++)
            {
                Assert.AreEqual(expectedResult[i], path[i]);
            }
        }
示例#12
0
        public void WavePropagation()
        {
            var startPoint = new ObjectPoint(0, 0, ObjectType.StartPoint);
            var endPoint   = new ObjectPoint(2, 2, ObjectType.EndPoint);

            //  0   1   2   3   |
            //------------------+---
            //  a   '   '   x   | 0
            //  '   x   '   '   | 1
            //  '   x   b   x   | 2
            WaveObject[,] area = new WaveObject[3, 4]
            {
                { new WaveObject(value: 0, type: ObjectType.StartPoint),            // -- 0,0
                  new WaveObject(value: null, type: ObjectType.None),               //    0,1
                  new WaveObject(value: null, type: ObjectType.None),               //    0,2
                  new WaveObject(value: null, type: ObjectType.Block) },            //    0,3
                { new WaveObject(value: null, type: ObjectType.None),               // -- 1,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,1
                  new WaveObject(value: null, type: ObjectType.None),               //    1,2
                  new WaveObject(value: null, type: ObjectType.None) },             //    1,3
                { new WaveObject(value: null, type: ObjectType.None),               // -- 2,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,1
                  new WaveObject(value: null, type: ObjectType.EndPoint),           //    2,2
                  new WaveObject(value: null, type: ObjectType.Block) }             //    2,3
            };

            WaveAlgLee.WavePropagation(ref area, startPoint, endPoint, true);

            //   0      1     2      3      |
            //------------------------------+---
            //  (a)0  (-)1   (-)2   (x)'    | 0
            //  (-)1  (x)'   (-)3   (-)4    | 1
            //  (-)2  (x)'   (b)4   (x)'    | 2
            WaveObject[,] expectedArea = new WaveObject[3, 4]
            {
                { new WaveObject(value: 0, type: ObjectType.StartPoint),        // -- 0,0
                  new WaveObject(value: 1, type: ObjectType.None),              //    0,1
                  new WaveObject(value: 2, type: ObjectType.None),              //    0,2
                  new WaveObject(value: null, type: ObjectType.Block) },        //    0,3
                { new WaveObject(value: 1, type: ObjectType.None),              // -- 1,0
                  new WaveObject(value: null, type: ObjectType.Block),          //    1,1
                  new WaveObject(value: 3, type: ObjectType.None),              //    1,2
                  new WaveObject(value: 4, type: ObjectType.None) },            //    1,3
                { new WaveObject(value: 2, type: ObjectType.None),              // -- 2,0
                  new WaveObject(value: null, type: ObjectType.Block),          //    2,1
                  new WaveObject(value: 4, type: ObjectType.EndPoint),          //    2,2
                  new WaveObject(value: null, type: ObjectType.Block) }         //    2,3
            };

            int arrayHeight = area.GetUpperBound(1) + 1;

            if (arrayHeight > 0 && area.Length > 0)
            {
                int arrayWidth = area.Length / arrayHeight;
                for (int x = 0; x < arrayWidth; x++)
                {
                    for (int y = 0; y < arrayHeight; y++)
                    {
                        Assert.AreEqual(expectedArea[x, y], area[x, y]);
                    }
                }
            }
            else
            {
                Assert.Fail("Array length or height was 0");
            }
        }
示例#13
0
        public void WavePropagation_WxH_5x10()
        {
            //  0   1   2   3   4   5   6   7   8   9   |
            //------------------------------------------+---
            //  a   '   '   x   '   '   '   '   '   '   | 0
            //  '   x   '   '   x   x   '   '   x   '   | 1
            //  '   x   x   x   '   '   '   x   x   '   | 2
            //  '   '   '   '   '   '   '   x   '   '   | 3
            //  '   x   '   x   '   '   x   '   b   x   | 4
            //------------------------------------------+---
            //  0   1   2   3   4   5   6   7   8   9   |
            WaveObject[,] area = new WaveObject[5, 10]
            {
                { new WaveObject(value: 0, type: ObjectType.StartPoint),            // -- 0,0
                  new WaveObject(value: null, type: ObjectType.None),               //    0,1
                  new WaveObject(value: null, type: ObjectType.None),               //    0,2
                  new WaveObject(value: null, type: ObjectType.Block),              //    0,3
                  new WaveObject(value: null, type: ObjectType.None),               //    0,4
                  new WaveObject(value: null, type: ObjectType.None),               //    0,5
                  new WaveObject(value: null, type: ObjectType.None),               //    0,6
                  new WaveObject(value: null, type: ObjectType.None),               //    0,7
                  new WaveObject(value: null, type: ObjectType.None),               //    0,8
                  new WaveObject(value: null, type: ObjectType.None) },             //    0,9
                { new WaveObject(value: null, type: ObjectType.None),               // -- 1,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,1
                  new WaveObject(value: null, type: ObjectType.None),               //    1,2
                  new WaveObject(value: null, type: ObjectType.None),               //    1,3
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,4
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,5
                  new WaveObject(value: null, type: ObjectType.None),               //    1,6
                  new WaveObject(value: null, type: ObjectType.None),               //    1,7
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,8
                  new WaveObject(value: null, type: ObjectType.None) },             //    1,9
                { new WaveObject(value: null, type: ObjectType.None),               // -- 2,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,1
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,2
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,3
                  new WaveObject(value: null, type: ObjectType.None),               //    2,4
                  new WaveObject(value: null, type: ObjectType.None),               //    2,5
                  new WaveObject(value: null, type: ObjectType.None),               //    2,6
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,7
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,8
                  new WaveObject(value: null, type: ObjectType.None) },             //    2,9
                { new WaveObject(value: null, type: ObjectType.None),               // -- 3,0
                  new WaveObject(value: null, type: ObjectType.None),               //    3,1
                  new WaveObject(value: null, type: ObjectType.None),               //    3,2
                  new WaveObject(value: null, type: ObjectType.None),               //    3,3
                  new WaveObject(value: null, type: ObjectType.None),               //    3,4
                  new WaveObject(value: null, type: ObjectType.None),               //    3,5
                  new WaveObject(value: null, type: ObjectType.None),               //    3,6
                  new WaveObject(value: null, type: ObjectType.Block),              //    3,7
                  new WaveObject(value: null, type: ObjectType.None),               //    3,8
                  new WaveObject(value: null, type: ObjectType.None) },             //    3,9
                { new WaveObject(value: null, type: ObjectType.None),               // -- 4,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    4,1
                  new WaveObject(value: null, type: ObjectType.None),               //    4,2
                  new WaveObject(value: null, type: ObjectType.Block),              //    4,3
                  new WaveObject(value: null, type: ObjectType.None),               //    4,4
                  new WaveObject(value: null, type: ObjectType.None),               //    4,5
                  new WaveObject(value: null, type: ObjectType.Block),              //    4,6
                  new WaveObject(value: null, type: ObjectType.None),               //    4,7
                  new WaveObject(value: null, type: ObjectType.EndPoint),           //    4,8
                  new WaveObject(value: null, type: ObjectType.Block) }             //    4,9
            };
            //  0   1   2   3   4   5   6   7   8   9   |
            //------------------------------------------+---
            //  a   '   '   x   '   '   '   '   '   '   | 0
            //  '   x   '   '   x   x   '   '   x   '   | 1
            //  '   x   x   x   '   '   '   x   x   '   | 2
            //  '   '   '   '   '   '   '   x   '   '   | 3
            //  '   x   '   x   '   '   x   '   b   x   | 4
            //------------------------------------------+---
            //  0   1   2   3   4   5   6   7   8   9   |

            var startPoint = new ObjectPoint(0, 0, ObjectType.StartPoint);
            var endPoint   = new ObjectPoint(4, 8, ObjectType.EndPoint);

            WaveAlgLee.WavePropagation(ref area, startPoint, endPoint, true);

            //  0   1   2   3   4   5   6   7   8   9   |
            //------------------------------------------+---
            //  a0  1   2   x   14  13  12  13  14  15  | 0
            //  1   x   3   4   x   x   11  12  x   16  | 1
            //  2   x   x   x   8   9   10  x   x   17  | 2
            //  3   4   5   6   7   8   9   x   19  18  | 3
            //  4   x   6   x   8   9   x   '   b20 x   | 4
            //------------------------------------------+---
            //  0   1   2   3   4   5   6   7   8   9   |
            WaveObject[,] expectedArea = new WaveObject[5, 10]
            {
                { new WaveObject(value: 0, type: ObjectType.StartPoint),            // -- 0,0
                  new WaveObject(value: 1, type: ObjectType.None),                  //    0,1
                  new WaveObject(value: 2, type: ObjectType.None),                  //    0,2
                  new WaveObject(value: null, type: ObjectType.Block),              //    0,3
                  new WaveObject(value: 14, type: ObjectType.None),                 //    0,4
                  new WaveObject(value: 13, type: ObjectType.None),                 //    0,5
                  new WaveObject(value: 12, type: ObjectType.None),                 //    0,6
                  new WaveObject(value: 13, type: ObjectType.None),                 //    0,7
                  new WaveObject(value: 14, type: ObjectType.None),                 //    0,8
                  new WaveObject(value: 15, type: ObjectType.None) },               //    0,9
                { new WaveObject(value: 1, type: ObjectType.None),                  // -- 1,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,1
                  new WaveObject(value: 3, type: ObjectType.None),                  //    1,2
                  new WaveObject(value: 4, type: ObjectType.None),                  //    1,3
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,4
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,5
                  new WaveObject(value: 11, type: ObjectType.None),                 //    1,6
                  new WaveObject(value: 12, type: ObjectType.None),                 //    1,7
                  new WaveObject(value: null, type: ObjectType.Block),              //    1,8
                  new WaveObject(value: 16, type: ObjectType.None) },               //    1,9
                { new WaveObject(value: 2, type: ObjectType.None),                  // -- 2,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,1
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,2
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,3
                  new WaveObject(value: 8, type: ObjectType.None),                  //    2,4
                  new WaveObject(value: 9, type: ObjectType.None),                  //    2,5
                  new WaveObject(value: 10, type: ObjectType.None),                 //    2,6
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,7
                  new WaveObject(value: null, type: ObjectType.Block),              //    2,8
                  new WaveObject(value: 17, type: ObjectType.None) },               //    2,9
                { new WaveObject(value: 3, type: ObjectType.None),                  // -- 3,0
                  new WaveObject(value: 4, type: ObjectType.None),                  //    3,1
                  new WaveObject(value: 5, type: ObjectType.None),                  //    3,2
                  new WaveObject(value: 6, type: ObjectType.None),                  //    3,3
                  new WaveObject(value: 7, type: ObjectType.None),                  //    3,4
                  new WaveObject(value: 8, type: ObjectType.None),                  //    3,5
                  new WaveObject(value: 9, type: ObjectType.None),                  //    3,6
                  new WaveObject(value: null, type: ObjectType.Block),              //    3,7
                  new WaveObject(value: 19, type: ObjectType.None),                 //    3,8
                  new WaveObject(value: 18, type: ObjectType.None) },               //    3,9
                { new WaveObject(value: 4, type: ObjectType.None),                  // -- 4,0
                  new WaveObject(value: null, type: ObjectType.Block),              //    4,1
                  new WaveObject(value: 6, type: ObjectType.None),                  //    4,2
                  new WaveObject(value: null, type: ObjectType.Block),              //    4,3
                  new WaveObject(value: 8, type: ObjectType.None),                  //    4,4
                  new WaveObject(value: 9, type: ObjectType.None),                  //    4,5
                  new WaveObject(value: null, type: ObjectType.Block),              //    4,6
                  new WaveObject(value: null, type: ObjectType.None),               //    4,7
                  new WaveObject(value: 20, type: ObjectType.EndPoint),             //    4,8
                  new WaveObject(value: null, type: ObjectType.Block) }             //    4,9
            };
            //  0   1   2   3   4   5   6   7   8   9   | Y/X
            //------------------------------------------+---
            //  a0  1   2   x   14  13  12  13  14  15  | 0 (X)
            //  1   x   3   4   x   x   11  12  x   16  | 1
            //  2   x   x   x   8   9   10  x   x   17  | 2
            //  3   4   5   6   7   8   9   x   19  18  | 3
            //  4   x   6   x   8   9   x   '   b20 x   | 4
            //------------------------------------------+---
            //  0   1   2   3   4   5   6   7   8   9   | Y/X

            int arrayHeight = area.GetUpperBound(1) + 1;

            if (arrayHeight > 0 && area.Length > 0)
            {
                int arrayWidth = area.Length / arrayHeight;
                for (int x = 0; x < arrayWidth; x++)
                {
                    for (int y = 0; y < arrayHeight; y++)
                    {
                        Assert.AreEqual(expectedArea[x, y], area[x, y]);
                    }
                }
            }
            else
            {
                Assert.Fail("Array length or height was 0");
            }
        }
示例#14
0
 public void PrepNextNight(WaveObject nextNight)
 {
     wave = nextNight;
 }