public override void Init(GameState s, int ti, object args) { base.Init(s, ti, args); grid = GameState.IGrid; eData = EnvironmentData.Default; // Open File FileInfo fi = new FileInfo(s.LevelGrid.Directory.FullName + @"\env.dat"); if(fi.Exists) { BinaryReader r = new BinaryReader(fi.OpenRead()); while(true) { int type = r.ReadInt32(); if(type == -1) break; int x = r.ReadInt32(); int z = r.ReadInt32(); AddEvent(new SpawnBuildingEvent(TeamIndex, type == 0 ? FloraType : OreType, new Point(x, z), true)); } r.BaseStream.Dispose(); } var eia = args as EnvInitArgs; if(eia != null) { if(!eia.DoWork) return; } random = new Random(); thread = new Thread(WorkThread); thread.IsBackground = true; running = true; paused = true; minNumSpawn = new int[3][] { eData.L1MinNumSpawn, eData.L1MaxNumSpawn, eData.L2MinNumSpawn }; maxNumSpawn = new int[3][] { eData.L2MaxNumSpawn, eData.L3MinNumSpawn, eData.L3MaxNumSpawn }; treeLocations = new List<Point>(); treeLocations.Add(new Point(1, 1)); FireStarts = new List<Point>(); for(int i = 0; i < Team.Buildings.Count; i++) { Team.Buildings[i].OnDamage += OnBuildingDamage; grid.AddImpactGenerator(Team.Buildings[i]); if(Team.Buildings[i].Data.FriendlyName.Equals(FloraData.FriendlyName)) { Point treeC = HashHelper.Hash(Team.Buildings[i].GridPosition, GameState.CGrid.numCells, GameState.CGrid.size); treeLocations.Add(treeC); } } Team.OnBuildingSpawn += (b) => { b.OnDamage += OnBuildingDamage; grid.AddImpactGenerator(b); }; // Find Player's Index for (int i = 0; i < GameState.activeTeams.Length; i++) { var at = GameState.activeTeams[i]; if (at.Team.Type == RTSInputType.Player) { playerIndex = at.Team.Index; } } Team.OnUnitSpawn += OnUnitSpawn; }
public override void Init(GameState s, int ti, object args) { base.Init(s, ti, args); grid = GameState.IGrid; eData = EnvironmentData.Default; // Open File FileInfo fi = new FileInfo(s.LevelGrid.Directory.FullName + @"\env.dat"); if (fi.Exists) { BinaryReader r = new BinaryReader(fi.OpenRead()); while (true) { int type = r.ReadInt32(); if (type == -1) { break; } int x = r.ReadInt32(); int z = r.ReadInt32(); AddEvent(new SpawnBuildingEvent(TeamIndex, type == 0 ? FloraType : OreType, new Point(x, z), true)); } r.BaseStream.Dispose(); } var eia = args as EnvInitArgs; if (eia != null) { if (!eia.DoWork) { return; } } random = new Random(); thread = new Thread(WorkThread); thread.IsBackground = true; running = true; paused = true; minNumSpawn = new int[3][] { eData.L1MinNumSpawn, eData.L1MaxNumSpawn, eData.L2MinNumSpawn }; maxNumSpawn = new int[3][] { eData.L2MaxNumSpawn, eData.L3MinNumSpawn, eData.L3MaxNumSpawn }; treeLocations = new List <Point>(); treeLocations.Add(new Point(1, 1)); FireStarts = new List <Point>(); for (int i = 0; i < Team.Buildings.Count; i++) { Team.Buildings[i].OnDamage += OnBuildingDamage; grid.AddImpactGenerator(Team.Buildings[i]); if (Team.Buildings[i].Data.FriendlyName.Equals(FloraData.FriendlyName)) { Point treeC = HashHelper.Hash(Team.Buildings[i].GridPosition, GameState.CGrid.numCells, GameState.CGrid.size); treeLocations.Add(treeC); } } Team.OnBuildingSpawn += (b) => { b.OnDamage += OnBuildingDamage; grid.AddImpactGenerator(b); }; // Find Player's Index for (int i = 0; i < GameState.activeTeams.Length; i++) { var at = GameState.activeTeams[i]; if (at.Team.Type == RTSInputType.Player) { playerIndex = at.Team.Index; } } Team.OnUnitSpawn += OnUnitSpawn; }