protected void GenerateScriptTask(XLevelWave wave) { XLevelScriptTask task = new XLevelScriptTask(this); task._ScriptName = wave.levelscript; _tasks.Enqueue(task); }
public void OnEnterScene(uint sceneid) { _time = 0; XLevelScriptMgr.singleton.CommandCount = 0; string configFile = XScene.singleton.SceneRow.SceneFile; if (configFile.Length == 0) { _curSpawner = null; XLevelScriptMgr.singleton.ClearWallInfo(); XLevelScriptMgr.singleton.Reset(); return; } if (_curSpawner == null) { _curSpawner = new XLevelSpawnInfo(); } else { _curSpawner.Clear(); } Stream s = XResources.ReadText("Table/" + configFile); //using (StreamReader sr = new StreamReader(s)) StreamReader sr = new StreamReader(s); { string line = sr.ReadLine(); int totalWave = int.Parse(line); line = sr.ReadLine(); int PreloadWave = int.Parse(line); for (int i = 0; i < PreloadWave; i++) { line = sr.ReadLine(); string[] info = line.Split(','); int enemyID = int.Parse(info[0].Substring(3)); int count = int.Parse(info[1]); _curSpawner.preloadInfo.Add(enemyID, count); } for (int id = 0; id < totalWave; id++) { XLevelWave wave = new XLevelWave(); wave.ReadFromFile(sr); _curSpawner.waves.Add(wave); XLevelDynamicInfo dInfo = new XLevelDynamicInfo(); dInfo.id = wave.ID; dInfo.totalCount = wave.Count; dInfo.Reset(); _curSpawner.wavesDynamicInfo.Add(wave.ID, dInfo); } XResources.ClearStream(s); } }
protected void GenerateEntityTask(XLevelWave wave) { if (wave.Count > 0) { float angle = 360.0f / wave.Count; XPlayer player = XEntityMgr.singleton.Player; Vector3 pos = wave.isAroundPlayer && player != null ? player.Position : wave.Pos; for (int i = 0; i < wave.Count; i++) { XLevelSpawnTask task = new XLevelSpawnTask(this); task._id = wave.ID; task.UID = (uint)wave.uid; task.pos = pos + Quaternion.Euler(0, angle * i, 0) * new Vector3(0, 0, 1) * wave.Radius; task.rot = (int)angle * i + 180; task.spawnType = wave.spawnType; task.isSummonTask = false; _tasks.Enqueue(task); } } }