public attack_data(uint cmn_subs, uint spc_subs, string attackDir) { common_subactions = cmn_subs; special_subactions = spc_subs; CustomStringReader sReader = new CustomStringReader(File.ReadAllText(attackDir), "attack_data.txt"); try { List <attack> atks = new List <attack>(); while (true) { attack atk = new attack(); string subactionStr = sReader.ReadWord(); if (subactionStr == null) { break; } atk.subaction = ushort.Parse(subactionStr); sReader.ReadUntilAnyOfChars("[", true); atk.start = ushort.Parse(sReader.ReadWord()); sReader.ReadUntilAnyOfChars(",", true); atk.end = ushort.Parse(sReader.ReadWord()); sReader.ReadUntilAnyOfChars("[", true); atk.x1 = float.Parse(sReader.ReadWord()); sReader.ReadUntilAnyOfChars(",", true); atk.x2 = float.Parse(sReader.ReadWord()); sReader.ReadUntilAnyOfChars(",", true); atk.y1 = float.Parse(sReader.ReadWord()); sReader.ReadUntilAnyOfChars(",", true); atk.y2 = float.Parse(sReader.ReadWord()); sReader.SkipToEndLine(); atks.Add(atk); } attacks = atks.ToArray(); count = (uint)attacks.Length; } catch (Exception e) { throw new Exception(sReader.ExceptionMsg(e.Message), e); } }
public param(string val_dir, string flg_dir, string cmd_dir, string sit1_dir, string sit2_dir, string sit3_dir) { unk_size = 0xf;//this is the same for all files so I'm not adding it to disassembly until I know what it is string[] values = File.ReadAllLines(val_dir); for (int i = 0; i < val_count; i++) { vals[i] = sbyte.Parse(values[i]); } string[] flags = File.ReadAllLines(flg_dir); for (int i = 0; i < flg_count; i++) { this.flags[i] = byte.Parse(flags[i]); } //parse cmd file CustomStringReader sReader = new CustomStringReader(File.ReadAllText(cmd_dir), "section_3.txt"); try { for (int i = 0; i < cmd_count; i++) { string word = sReader.ReadWord(); sReader.SkipToEndLine(); cmds[i] = new Cmd(sReader); } //parse situation files List <Situation> ls = new List <Situation>(); byte sit_index = 0; foreach (string sit_dir in new string[] { sit1_dir, sit2_dir, sit3_dir }) { if (sit_dir == sit1_dir) { sit_return_start = sit_index; } else if (sit_dir == sit2_dir) { sit_attack_start = sit_index; } else if (sit_dir == sit3_dir) { sit_defend_start = sit_index; } sReader.Source = File.ReadAllText(sit_dir); sReader.name = sit_dir; while (true) { string word = sReader.ReadWord(); if (word != "if") { if (word == null) { break; //end of file } else { throw new Exception("ERROR: expected 'if', received '" + word + "'"); } } ls.Add(new Situation(sReader)); sit_index++; } if (sit_dir == sit1_dir) { sit_return_end = (byte)(sit_index - 1); } else if (sit_dir == sit2_dir) { sit_attack_end = (byte)(sit_index - 1); } else if (sit_dir == sit3_dir) { sit_defend_end = (byte)(sit_index - 1); } } sits = ls.ToArray(); } catch (Exception e) { throw new Exception(sReader.ExceptionMsg(e.Message), e); } }