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]); } } }
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(); }
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; } } }
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()); }
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]); } }
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); } } } }
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; }
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; }
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); } }
public Wave(WaveObject w) { enemyCount = w.data[0].enemyCount; waveStagger = w.data[0].waveStagger; }
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]); } }
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"); } }
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"); } }
public void PrepNextNight(WaveObject nextNight) { wave = nextNight; }