Пример #1
0
        protected void GenerateScriptTask(XLevelWave wave)
        {
            XLevelScriptTask task = new XLevelScriptTask(this);

            task._ScriptName = wave.levelscript;
            _tasks.Enqueue(task);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
 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);
         }
     }
 }