implemented asset resolving
[swftools.git] / lib / as3 / main.c
index df7aed3..1ce83a6 100644 (file)
@@ -64,18 +64,24 @@ int main(int argn, char*argv[])
     }
     filename=argv[argn-1];
 
-    //a3_debug = 1; //if bison was called with -t
+#ifdef BISONDEBUG
+    a3_debug = 1; //if bison was called with -t
+#endif
    
     as3_add_include_dir(getcwd(buf, 512));
 
     registry_init();
 
     int t=0;
+    char*mainclass = 0;
     for(t=1;t<argn-1;t++) {
         if(!strcmp(argv[t], "-lex")) {
             test_lexer(filename);
             return 0;
         }
+        if(!strcmp(argv[t], "-M")) {
+            mainclass = argv[++t];
+        }
         if(!strcmp(argv[t], "-v")) {
             as3_verbosity++;
         }
@@ -120,14 +126,23 @@ int main(int argn, char*argv[])
     swf.movieSize.xmin = swf.movieSize.ymin = 0;
     swf.movieSize.xmax = 20*20;
     swf.movieSize.ymax = 10*20;
-    TAG*tag = swf.firstTag = swf_InsertTag(0, ST_DOABC);
+    TAG*tag = (TAG*)as3_getassets(0);
+    if(!swf.firstTag && tag) swf.firstTag = tag;
+
+    while(tag && tag->next) tag = tag->next;
+
+    tag = swf_InsertTag(tag, ST_DOABC);
+    if(!swf.firstTag && tag) swf.firstTag = tag;
     swf_WriteABC(tag, code);
 
-    if(as3_getglobalclass()) {
+    if(!mainclass)
+        mainclass = as3_getglobalclass();
+
+    if(mainclass) {
         tag = swf_InsertTag(tag, ST_SYMBOLCLASS);
         swf_SetU16(tag, 1);
         swf_SetU16(tag, 0);
-        swf_SetString(tag, as3_getglobalclass());
+        swf_SetString(tag, mainclass);
     } else {
         printf("Warning: no global public MovieClip subclass\n");
     }