public static RTSRace Deserialize(BinaryReader s, GameState state) { RTSRace race = new RTSRace(); race.FriendlyName = s.ReadString(); int c = s.ReadInt32(); for (int i = 0; i < c; i++) { int ui = s.ReadInt32(); race.Units[ui] = RTSUnitData.Deserialize(s, state, ui); } race.UpdateActiveUnits(); c = s.ReadInt32(); for (int i = 0; i < c; i++) { int bi = s.ReadInt32(); race.Buildings[bi] = RTSBuildingData.Deserialize(s, state, bi); } race.UpdateActiveBuildings(); race.SCAction = state.Scripts[s.ReadString()]; race.SCMovement = state.Scripts[s.ReadString()]; race.SCTargeting = state.Scripts[s.ReadString()]; return(race); }
public static RTSRace Deserialize(BinaryReader s, GameState state) { RTSRace race = new RTSRace(); race.FriendlyName = s.ReadString(); int c = s.ReadInt32(); for(int i = 0; i < c; i++) { int ui = s.ReadInt32(); race.Units[ui] = RTSUnitData.Deserialize(s, state, ui); } race.UpdateActiveUnits(); c = s.ReadInt32(); for(int i = 0; i < c; i++) { int bi = s.ReadInt32(); race.Buildings[bi] = RTSBuildingData.Deserialize(s, state, bi); } race.UpdateActiveBuildings(); race.SCAction = state.Scripts[s.ReadString()]; race.SCMovement = state.Scripts[s.ReadString()]; race.SCTargeting = state.Scripts[s.ReadString()]; return race; }
public static RTSRace Parse(FileInfo infoFile, Dictionary<string, ReflectedScript> scripts) { // Check File Existence if(infoFile == null || !infoFile.Exists) return null; // Read The Entire File string mStr; using(FileStream fs = File.OpenRead(infoFile.FullName)) { StreamReader s = new StreamReader(fs); mStr = s.ReadToEnd(); } // Set Environment Variables ZXParser.SetEnvironment("FILEROOTDIR", infoFile.Directory.FullName); ZXParser.SetEnvironment("DICTSCRIPTS", scripts); // Read Data RTSRace data = new RTSRace(); ZXParser.ParseInto(mStr, data); data.InfoFile = new FileInfo(PathHelper.GetRelativePath(infoFile.FullName)); data.UpdateActiveUnits(); data.UpdateActiveBuildings(); return data; }