private AegisTrader MatchTrader() { var an = new AegisTrader(); Match(TokenType.trader); an.Map = MatchString(); an.Name = MatchString(); an.Sprite = MatchNumberOrIdent(); an.X = MatchNumber(); an.Y = MatchNumber(); an.Dir = MatchNumber(); an.W = MatchNumber(); an.H = MatchNumber(); PushNode(an); MatchNewline(); while (tk.Type == TokenType.Label) { curNode.Items.Add(MatchLabel()); MatchNewline(); } an = (AegisTrader)PopNode(); return(an); }
private void GenTrader(AegisTrader at) { AegisLabel oninit = null; foreach (AegisLabel al in at.Items) { if (al.Name == "OnInit") { oninit = al; break; } } if (oninit == null) { return; } var items = new List <string>(); foreach (AegisFunc af in oninit.Items) { if (af != null && af.Name == "sellitem") { curArgs = af.Items; items.Add(FindArg(0)); } } WriteNew("{0},{1},{2},{3}\tshop\t{4},{5},", at.Map, at.X, at.Y, at.Dir, at.Name, at.Sprite); for (int i = 0; i < items.Count; i++) { if (i == items.Count - 1) { Write("{0}:-1", GetItemId(items[i])); } else { Write("{0}:-1,", GetItemId(items[i])); } } WriteLine("\n"); }