implemented asset resolving
[swftools.git] / lib / as3 / main.c
index 0078e07..1ce83a6 100644 (file)
@@ -52,6 +52,7 @@ void test_lexer(char*filename)
     }
 }
 
+extern int a3_debug;
 int main(int argn, char*argv[])
 {
     char*filename = 0;
@@ -62,17 +63,25 @@ int main(int argn, char*argv[])
         exit(1);
     }
     filename=argv[argn-1];
+
+#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++;
         }
@@ -117,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");
     }