fixed dunger build, added current cell coordinates readout
[vrlugburz] / tools / dunger / src / main.c
index 22932ec..ec5a827 100644 (file)
@@ -57,6 +57,8 @@ static utk_widget *cbox_newsz;
 
 static struct level lvl;
 
+static const char *opt_fname;
+
 
 int main(int argc, char **argv)
 {
@@ -141,9 +143,16 @@ static int init(void)
        utk_set_size(uiwin_new, utk_get_width(vbox) + pad * 2.0f, utk_get_height(vbox) + pad * 2.0f);
 
 
-       if(init_level(&lvl, 32, 32) == -1) {
-               fprintf(stderr, "failed to create level\n");
-               return -1;
+       if(opt_fname) {
+               if(load_level(&lvl, opt_fname) == -1) {
+                       fprintf(stderr, "failed to load level: %s\n", opt_fname);
+                       return -1;
+               }
+       } else {
+               if(init_level(&lvl, 32, 32) == -1) {
+                       fprintf(stderr, "failed to create level\n");
+                       return -1;
+               }
        }
        if(init_lview(&lvl) == -1) {
                return -1;
@@ -343,10 +352,22 @@ static void cb_open(utk_event *ev, void *data)
 
 static void cb_open_ok(utk_event *ev, void *data)
 {
+       char *errmsg = 0;
+       const char *path;
+
        utk_widget *dlg = utk_event_widget(ev);
-       printf("selected: %s\n", utk_file_dialog_file(dlg));
+       path = utk_file_dialog_path(dlg);
+       printf("selected: %s\n", path);
+       if(load_level(&lvl, path) == -1) {
+               errmsg = alloca(strlen(path) + 32);
+               sprintf(errmsg, "Failed to load level: %s", path);
+       }
        utk_destroy_window(dlg);
        if(uigrab == dlg) uigrab = 0;
+
+       if(errmsg) {
+               uigrab = utk_message_dialog(errmsg, UTK_MSG_TYPE_ERROR, UTK_MSG_BN_OK, cb_cancel, 0);
+       }
 }
 
 static void cb_save(utk_event *ev, void *data)
@@ -408,8 +429,11 @@ static int parse_args(int argc, char **argv)
                                return -1;
                        }
                } else {
-                       fprintf(stderr, "unexpected argument: %s\n", argv[i]);
-                       return -1;
+                       if(opt_fname) {
+                               fprintf(stderr, "unexpected argument: %s\n", argv[i]);
+                               return -1;
+                       }
+                       opt_fname = argv[i];
                }
        }
        return 0;