示例#1
0
        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);
            }
        }
示例#2
0
        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);
            }
        }