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)); }
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)); }
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)); }
internal bool TestCondition(short[] record, CaptureExpression.GetValueDelegate GetValue) { return(condition.Test(record, GetValue)); }