Пример #1
0
        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);
        }
Пример #2
0
        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");
        }