Example #1
0
        public override ILineObject Generate(GenerationEnvironment env)
        {
            var funcName = env.GenerateActionAsActorInit(ActionName);
            var dir      = ThisExpr.Instance.MakeIndex("direction");

            if (Direction == CreateBulletDirection.Opposite)
            {
                dir = new UnOpExpr(dir, UnOpExpr.Op.Sub);
            }
            return(new SimpleBlock(new ILineObject[] {
                //create t
                new SimpleLineObject("local t = this.DefaultShotTable();"),

                //set parent actor
                new SimpleLineObject("t.flag1 = { wr = this.weakref() };"),

                //TODO setup t

                //create actor
                ThisExpr.Instance.MakeIndex("world2d").MakeIndex("CreateActor").Call(
                    Position.GenerateX(ThisExpr.Instance, env),
                    Position.GenerateY(ThisExpr.Instance, env),
                    dir,
                    ThisExpr.Instance.MakeIndex("u").MakeIndex("uu").MakeIndex("uuu").MakeIndex(funcName),
                    new IdentifierExpr("t")
                    ).Statement(),

                //clear actor reference (safety)
                new SimpleLineObject("t.flag1 = null;"),
            }).Statement());
        }
Example #2
0
        public override ILineObject Generate(GenerationEnvironment env)
        {
            var funcName = env.GenerateActionAsActorInit(Action);

            return(ThisExpr.Instance.MakeIndex("hitEffect").Assign(
                       ThisExpr.Instance.MakeIndex("u").MakeIndex("uu").MakeIndex("uuu").MakeIndex(funcName)).Statement());
        }