示例#1
0
        public string GetVariables(short[] record, CaptureExpression.GetValueDelegate GetValue)
        {
            List <string> results = new List <string>();

            foreach (var item in Variables)
            {
                if (item.TestCondition(record, GetValue))
                {
                    results.Add(item.PrintVariable(record, GetValue));
                }
                //Console.WriteLine($"{item.item.Description} {item.item.Condition} {record[4]:X4} {record[5]:X4} {record[6]:X4} {record[7]:X4}");
            }
            return(string.Join(", ", results));
        }
示例#2
0
        public static ActorSpawn NewMaskActor(short[] record)
        {
            var actor = (short)(record[0] & 0xFFF);

            if (!MaskActorParsers.TryGetValue(actor, out XActorParser xActorParser))
            {
                return(new MActorSpawn(record));
            }
            CaptureExpression.GetValueDelegate capExpr = CaptureExpression.GetMMActorValue;
            string desc = xActorParser.GetDescription(record, capExpr);
            string vars = xActorParser.GetVariables(record, capExpr);

            return(new XMActorSpawn(record, desc, vars));
        }
示例#3
0
        public static TransitionActorSpawn NewOcaTransitionActor(byte[] record)
        {
            short[] rec   = Endian.BytesToBigShorts(record);
            var     actor = rec[2];

            if (!OcarinaActorParsers.TryGetValue(actor, out XActorParser xActorParser))
            {
                return(new TransitionActorSpawn(record));
            }
            CaptureExpression.GetValueDelegate capExpr = CaptureExpression.GetOcaActorValue;
            string desc = xActorParser.GetDescription(rec, capExpr);
            string vars = xActorParser.GetVariables(rec, capExpr);

            return(new XTransitionActorSpawn(rec, desc, vars));
        }
示例#4
0
 internal bool TestCondition(short[] record, CaptureExpression.GetValueDelegate GetValue)
 {
     return(condition.Test(record, GetValue));
 }