private void ProcessNewSectionStart(string line) { try { if (line == "2dfx") { currentSection = IdeSection._2DFX; } else { currentSection = (IdeSection)Enum.Parse(typeof(IdeSection), line, true); } } catch (Exception e) { Log.Warning("Unknow IDE section in \"{0}\", line \"{1}\": {2}", FilePath, line, e); currentSection = IdeSection.Unknow; } }
protected override void ParseLine(string line) { if (line == "end") { currentSection = IdeSection.END; return; } var tokens = line.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); try { switch (currentSection) { case IdeSection.END: ProcessNewSectionStart(tokens[0]); break; case IdeSection.OBJS: AddObject(new MapObject(tokens)); break; case IdeSection.TOBJ: AddObject(new TimeObject(tokens)); break; case IdeSection.ANIM: AddObject(new AnimatedObject(tokens)); break; case IdeSection.CARS: AddObject(new CarDefinition(tokens)); break; case IdeSection._2DFX: switch (int.Parse(tokens[8])) { case 0: AddEffectToTargetObject(new FxLight(tokens)); break; case 1: AddEffectToTargetObject(new FxParticleDefinition(tokens)); break; case 2: //Ped investigate, unused case 3: //Ped Behaviours case 4: //Sunflares (Vice City only) break; default: Log.Error("Invalid 2DFX entry: {0}", line); break; } break; case IdeSection.TXDP: TextureParents.Add(new TextureParent(tokens)); break; } } catch (Exception e) { Log.Error("Failed to parse IDE line at \"{0}\", line \"{1}\", section {2}: {3}", FilePath, line, currentSection, e); } }